首先,对于那些不了解这项法律的人,不要害怕它实际上非常简单。 在此链接http://en.wikipedia.org/wiki/Black%E2%80%93Scholes_model上,您将从数学角度看到此法律。 继续部分符号并查看以N(x)= 1 / sqrt(2 * PI)开头的函数... 我正在C中实现Black-Scholes模型,你可能已经猜到了,我不知道如何实现这个功能,我已经在网上找到了一个实现,但我不确定我是否应该对此感到高兴,似乎一点点。 这是我正在使用的代码。
double N(double z){
const double b1=0.31938153;
const double b2=-0.356563782;
const double b3=1.781477937;
const double b4=-1.821255978;
const double b5=1.330274429;
const double p=0.2316419;
double a=fabs(z);
double t=1.0/(1.0+a*p);
double w=1.0-1.0/sqrt(2*M_PI)*exp(-a*a/2)*(b1*t+b2*t*t+b3*pow(t,3)+b4*pow(t,4)+b5*pow(t,5));
if(z<0.0)
w=1.0-w;
return w;
}
我希望您告诉我法律的实施是否正确及其原因。 非常感谢你提前。
答案 0 :(得分:4)
标准正态累积分布函数正好是(1/2)*(1 + erf(z/sqrt(2)))
,其中erf
是高斯误差函数,可在许多C编程库中找到。检查您正在使用的开发环境 - erf
已经存在于其中一个库中的可能性很高。