在美国,现货价格为20美元,行使价X为21美元。 如果您愿意,可以使用符号K作为执行价格,它与x相同。无风险利率为每年12%,股票价格的波动性σ为每年20%。根据上边的信息生成出BSM期权定价的C++代码生成出
时间: 2024-02-12 11:09:42 浏览: 66
好的,下面是根据您提供的信息生成的BSM期权定价的C++代码:
```c++
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
double N(double x) {
// N(x)是标准正态分布函数
// 在此处使用伯格-麦克拉克林算法
double gamma = 0.2316419;
double k = 1.0 / (1.0 + gamma * x);
double k_sum = k * (0.319381530 + k * (-0.356563782 + k * (1.781477937 + k * (-1.821255978 + 1.330274429 * k))));
if (x >= 0.0) {
return 1.0 - (1.0 / (pow(2 * M_PI, 0.5))) * exp(-0.5 * x * x) * k_sum;
} else {
return 1.0 - N(-x);
}
}
double option_price(double S, double K, double r, double sigma, double T, bool call) {
double d1 = (log(S / K) + (r + 0.5 * sigma * sigma) * T) / (sigma * pow(T, 0.5));
double d2 = d1 - sigma * pow(T, 0.5);
double price;
if (call) {
price = S * N(d1) - K * exp(-r * T) * N(d2);
} else {
price = K * exp(-r * T) * N(-d2) - S * N(-d1);
}
return price;
}
int main() {
double S = 20; // 现货价格
double K = 21; // 行使价
double r = 0.12; // 无风险利率
double sigma = 0.20; // 波动性
double T = 1.0; // 到期时间
bool call = true; // 是否为看涨期权
double price = option_price(S, K, r, sigma, T, call);
cout << "期权价格为:" << price << endl;
return 0;
}
```
这段代码使用了Black-Scholes-Merton(BSM)模型计算期权价格。其中,`N(x)`是标准正态分布函数,`option_price()`函数计算期权价格。在`main()`函数中,将各个参数传递给`option_price()`函数,计算出期权价格并输出。
阅读全文