MATLAB实现欧氏期权定价(B-S模型)

本文介绍了Black-Scholes期权定价模型在MATLAB中的应用,包括公式解释、实例计算以及与蒙特卡洛方法的比较。通过MATLAB代码展示了如何为欧式看涨和看跌期权计算理论价格,并提供了实际运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欧式看涨期权(Call Option)和欧式看跌期权(Put Option)的Black-Scholes定价模型:

对于欧式看涨期权的价格 ( C ),公式为:

 C = S \cdot N(d_1) - X e^{-rT} \cdot N(d_2)

对于欧式看跌期权的价格 ( P ),公式为:

P = X e^{-rT} \cdot N(-d_2) - S \cdot N(-d_1)

其中:

S  是标的资产的当前价格,

X 是期权的执行价格,

 r 是无风险利率,

T 是期权的到期时间(以年为单位),

\sigma 是标的资产的波动率,

 N(d) 是标准正态分布的累积分布函数,

d_1d_2是由以下公式定义的:

d_1 = \frac{\ln\left(\frac{S}{X}\right) + \left(r + \frac{\sigma^2}{2}\right)T}{\sigma\sqrt{T}}

d_2 = d_1 - \sigma\sqrt{T}

这些公式是在假设市场无摩擦(即没有交易成本和税收)、资产可以无限分割、没有套利机会、可以无风险地以无风险利率借贷资金等条件下得出的。

完整MATLAB代码见: https://download.csdn.net/download/corn1949/88959698

MATLAB主程序如下:

clc;clear all;close all;warning off;%关闭警报

%% 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  %每个时间步的价格
        S(j,i)=S(j,i-1)*exp((mu-sigma^2/2)*dt+sigma*Sqrtdt*randn);
    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.83707164710122

B-S欧氏看跌期权价格

Put =

           1.0305683685396

B-S欧氏看涨期权价格

Call =

          6.83707164710122

B-S欧氏看跌期权价格

Put =

           1.0305683685396


Call01 =

        0.0308403559199742


Put01 =

          1.68651458592541


Call =

        0.0299623203339537


Put =

          1.67530872291605

>> 

完整MATLAB代码见:https://download.csdn.net/download/corn1949/88959698https://download.csdn.net/download/corn1949/88959698

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB代码顾问

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值