bs模型matlab代码
时间: 2023-05-12 08:01:57 浏览: 310
BS模型是用于计算欧式期权价格的经典模型,由Fisher Black、Myron Scholes和Robert Merton三位学者于1973年提出。BS模型基于以下假设:期权价格的波动率、无风险利率和标的资产价格的波动率是恒定的、随机游走的,且不存在交易费用、税收等因素影响期权价格。此模型被广泛应用于金融工程和衍生品定价等领域。
在MATLAB中,我们可以使用Black-Scholes公式来计算欧式期权价格。以下是BS模型的MATLAB代码:
```
% 计算欧式看涨期权或看跌期权价格
% S:标的资产价格,K:行权价格,r:无风险利率,sigma:波动率,T:期限
function price = BS(S, K, r, sigma, T, type)
d1 = (log(S/K) + (r + sigma^2 / 2) * T) / (sigma * sqrt(T));
d2 = d1 - sigma * sqrt(T);
nd1 = normcdf(d1);
nd2 = normcdf(d2);
nnd1 = normcdf(-d1);
nnd2 = normcdf(-d2);
if type == 'call'
price = S * nd1 - K * exp(-r * T) * nd2;
elseif type == 'put'
price = K * exp(-r * T) * nnd2 - S * nnd1;
else
disp('输入错误,type只能是call或put')
price = NaN;
end
end
```
以上代码中,首先定义了一个函数BS,其中包含计算欧式看涨期权或看跌期权价格的公式。函数中的四个参数分别表示标的资产价格S、行权价格K、无风险利率r、波动率sigma和期限T。type参数用于区分是计算看涨期权还是看跌期权,type只能是'call'或'put'。
公式中的d1、d2分别表示标准正态分布的累积分布函数,对应MATLAB中的normcdf函数。nd1、nd2分别表示标准正态分布的累积概率密度函数。nnd1、nnd2分别表示d1、d2的相反数的标准正态分布的累积概率密度函数。
最后,根据看涨期权或看跌期权的计算公式,给出期权的价格。如果type输入值不正确,那么程序将输出一个错误提示并返回NaN。
阅读全文