如何用MATLAB写欧氏看涨看跌期权(B-S模型)的代码
欧式期权 (European Options) 即是指买入期权的一方必须在期权到期日当天才能行使的期权。
具体的数学模型为:
无收益欧式看涨期权的定价公式
无收益资产欧式看跌期权的定价公式
其中 ,
(1)S:标的资产的价格;(2) X:行权价格;(3) T-t:到期期限;
(4)σ:标的资产价格波动率;(5) r:连续复利的无风险利率;
有讨论的可以加我q :1579325979
加我微*信:corn1949
模型介绍完毕, 上代码 😃
%% 1.我写的函数
% B-S公式定价
S0=42;%资产当前价格
K=40;%期权敲定价格
r=0.1;%年化无风险利率 注意不是资产预期收益率
T=1;%到期时间,年为单位
Volatility=0.2;%波动率
[Call,Put]=mybsfun(S0,K,r,T,Volatility);%欧氏期权定价
disp(‘B-S欧氏看涨期权价格’);
Call
disp(‘B-S欧氏看跌期权价格’);
Put
%% 2.MATLAB自带的函数
Price=42;%某股票价格
Strike=40;%期权敲定价格
Rate=0.1;%年化无风险利率
Time=1;%到期时间
Volatility=0.2;%波动率
[Call, Put] = blsprice(Price, Strike, Rate, Time, Volatility);%欧氏期权定价
disp(‘B-S欧氏看涨期权价格’);
Call
disp(‘B-S欧氏看跌期权价格’);
Put
%% 3.蒙特卡洛法
% 3.1 先股价仿真(几何布朗运动)
M=10000; %number of trajectories of Geometric Brownian motion 几何布朗运动的仿真轨迹数
N=52;%Number of steps in one trajectory 一年52周
S0=10; %initial point 初始股价
T=1;%Final Time in years in trajectory
mu=0.03;% 周平均收益率,记得和N关联好
r=mu;% 无风险利率
sigma=0.1;%volatility 周平均波动率
dt=T/N; %时间步长
Sqrtdt=sqrt(dt);
S(1:M,1)=S0;
for j=1:M %轨迹数
for i = 2:N+1 %每个时间步的价格
%%
end
end
t=0:dt:T;
figure;
plot(t,S);
title(‘price of the stock’);
% 3.2价格=××的均值
% 看涨期权 call
K=12;%敲定价格
E=max(S(:,end)-K,0);% M个轨迹时间完成时的股价减去敲定价格, 有赚的部分取出来平均就是盈利
Call01=mean(E)
exp(-r
T) % 盈利折算到现在
% 看跌期权 put ok!
K=12;%敲定价格
E=max(K-S(:,end),0);% M个轨迹时间完成时的股价减去敲定价格, 有赚的部分取出来平均就是盈利
Put01=mean(E)
exp(-r
T) % 盈利折算到现在
[Call, Put] = blsprice(S0, K, r, T, sigma)
程序结果:
B-S欧氏看涨期权价格
Call =
6.8371
B-S欧氏看跌期权价格
Put =
1.0306
B-S欧氏看涨期权价格
Call =
6.8371
B-S欧氏看跌期权价格
Put =
1.0306
Call01 =
0.0296
Put01 =
1.6743
Call =
0.0300
Put =
1.6753
有讨论的可以加我q :1579325979
加我微*信:corn1949