用.NET语言写出期权定价公式,double类型全部四舍五入保留5位小数。
时间: 2023-05-18 16:04:22 浏览: 224
以下是用.NET语言写出的期权定价公式,double类型全部四舍五入保留5位小数:
```csharp
public static double OptionPrice(double S, double K, double r, double sigma, double T, bool isCall)
{
double d1 = (Math.Log(S / K) + (r + sigma * sigma / 2) * T) / (sigma * Math.Sqrt(T));
double d2 = d1 - sigma * Math.Sqrt(T);
double Nd1 = NormalDistribution(d1);
double Nd2 = NormalDistribution(d2);
double price = 0;
if (isCall)
{
price = S * Nd1 - K * Math.Exp(-r * T) * Nd2;
}
else
{
price = K * Math.Exp(-r * T) * (1 - Nd2) - S * (1 - Nd1);
}
return Math.Round(price, 5);
}
public static double NormalDistribution(double x)
{
double A1 = 0.31938153;
double A2 = -0.356563782;
double A3 = 1.781477937;
double A4 = -1.821255978;
double A5 = 1.330274429;
double L = Math.Abs(x);
double K = 1 / (1 + 0.2316419 * L);
double w = 1 - 1 / Math.Sqrt(2 * Math.PI) * Math.Exp(-L * L / 2) * (A1 * K + A2 * K * K + A3 * Math.Pow(K, 3) + A4 * Math.Pow(K, 4) + A5 * Math.Pow(K, 5));
if (x < 0)
{
w = 1 - w;
}
return w;
}
```
其中,S表示标的资产价格,K表示行权价格,r表示无风险利率,sigma表示标的资产的波动率,T表示期权到期时间,isCall表示期权类型,true表示看涨期权,false表示看跌期权。
阅读全文