Skip to content

Instantly share code, notes, and snippets.

@syoyo
Created September 4, 2008 14:52
Show Gist options
  • Save syoyo/8788 to your computer and use it in GitHub Desktop.
Save syoyo/8788 to your computer and use it in GitHub Desktop.
function cnd(d)
{
var A1 = 0.31938153;
var A2 = -0.356563782;
var A3 = 1.781477937;
var A4 = -1.821255978;
var A5 = 1.330274429;
var RSQRT2PI = 0.3989422804;
var K = 1.0 / (1.0 + 0.2316419 * Math.abs(d));
var c = RSQRT2PI * Math.exp(-0.5 * d * d) * (K * (A1 + K * (A2 + K * (A3 + K * (A4 + K * A5)))));
var ret;
if (d > 0.0) {
ret = 1.0 - c;
} else {
ret = c;
}
return ret;
}
function BlackScholes(S, X, T, R, V)
{
var sqrtT = Math.sqrt(T);
var d1 = (Math.log(S / X) + (R + 0.5 * V * V) * T) / (V * sqrtT);
var d2 = d1 - V * sqrtT;
var cnd_d1 = cnd(d1);
var cnd_d2 = cnd(d2);
var expRT = Math.exp(-1.0 * R * T);
var retCall = S * cnd_d1 - X * expRT * cnd_d2;
return retCall;
}
var i;
var S = 40.0;
var X = 50.0;
var T = 0.333;
var R = 0.08;
var V = 0.30;
var v;
var N = 10000000;
for (i = 0; i < N; i++) {
v = BlackScholes(S, X, T, R, V);
}
print(v)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment