BlackScholes.java
Below is the syntax highlighted version of BlackScholes.java
from §2.6 Functions.
/*************************************************************************
* Compilation: javac BlackScholes.java MyMath.java
* Execution: java BlackScholes S X r sigma T
*
* Reads in five command line inputs and calculates the option price
* according to the Black-Scholes formula.
*
* % java BlackScholes 23.75 15.00 0.01 0.35 0.5
* 8.879159279691955 (actual = 9.10)
*
* % java BlackScholes 30.14 15.0 0.01 0.332 0.25
* 15.177462481562186 (actual = 14.50)
*
*
* Information calculated based on closing data on Monday, June 9th 2003.
*
* Microsoft: share price: 23.75
* strike price: 15.00
* risk-free interest rate: 1%
* volatility: 35% (historical estimate)
* time until expiration: 0.5 years
*
* GE: share price: 30.14
* strike price: 15.00
* risk-free interest rate 1%
* volatility: 33.2% (historical estimate)
* time until expiration 0.25 years
*
*
* Reference: http://www.hoadley.net/options/develtoolsvolcalc.htm
*
*************************************************************************/
public class BlackScholes {
public static double callPrice(double S, double X, double r, double sigma, double T) {
double d1 = (Math.log(S/X) + (r + sigma * sigma/2) * T) / (sigma * Math.sqrt(T));
double d2 = d1 - sigma * Math.sqrt(T);
return S * MyMath.Phi(d1) - X * Math.exp(-r * T) * MyMath.Phi(d2);
}
public static void main(String args[]) {
double S = Double.parseDouble(args[0]);
double X = Double.parseDouble(args[1]);
double r = Double.parseDouble(args[2]);
double sigma = Double.parseDouble(args[3]);
double T = Double.parseDouble(args[4]);
System.out.println(callPrice(S, X, r, sigma, T));
}
}
Last updated: Thu Sep 23 16:38:21 EDT 2004
.
Copyright © 2004, Robert Sedgewick and Kevin Wayne.