如何用MATLAB写欧氏看涨看跌期权(B-S模型)的代码

  • Post author:
  • Post category:其他



如何用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



版权声明:本文为corn1949原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。