5蒙特卡洛方法模拟期权定价

更新时间:2023-10-23 15:32:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

材料五:蒙特卡洛方法模拟期权定价

1.蒙特卡洛方法模拟欧式期权定价

利用风险中性的方法计算期权定价:

?(f) f?e?rtET?是风险中性测度 其中,f是期权价格,fT是到期日T的现金流,E如果标的资产服从几何布朗运动:

dS??Sdt??sdW

则在风险中性测度下,标的资产运动方程为:

ST?S0exp[(r??22)T??T?]

对于欧式看涨期权,到期日欧式看涨期权现金流如下:

max{0,S(0)e(r??2/2)T??T??K}

其中,K是执行价,r是无风险利率,?是标准差, ?是正态分布的随机变量。

对到期日的现金流用无风险利率贴现,就可知道期权价格。

例1 假设股票价格服从几何布朗运动,股票现在价格为50,欧式期权执行价格为52,无风险利率为0.1,股票波动标准差为0.4,期权的到期日为5个月,试用蒙特卡洛模拟方法计算该期权价格。

下面用MATLAB编写一个子程序进行计算:

function eucall=blsmc(s0,K,r,T,sigma,Nu) %蒙特卡洛方法计算欧式看涨期权的价格 %输入参数 %s0 股票价格 %K 执行价 %r 无风险利率 %T 期权的到期日 %sigma 股票波动标准差 %Nu 模拟的次数 %输出参数

%eucall 欧式看涨期权价格 %varprice 模拟期权价格的方差 %ci 95%概率保证的期权价格区间

randn('seed',0); %定义随机数发生器种子是0, %这样保证每次模拟的结果相同 nuT=(r-0.5*sigma^2)*T sit=sigma*sqrt(T)

discpayoff=exp(-r*T)*max(0,s0*exp(nuT+sit*randn(Nu,1))-K) %期权到期时的现金流

[eucall,varprice,ci]=normfit(discpayoff) %在命令窗口输入:blsmc(50,52,0.1,12/5,0.4,1000)

2. 蒙特卡洛方法模拟障碍期权定价

障碍期权,就是确定一个障碍值Sb,在期权的存续期内有可能超过该价格,也可能低于该价格,对于敲出期权而言,如果在期权的存续期内标的资产价格触及障碍值时,期权合同可以提前终止执行;相反,对于敲入价格,如果标的资产价格触及障碍值时,期权合同开始生效。

当障碍值Sb高于现在资产价格S0,称上涨期权,反之称下跌期权。

对于下跌敲出看跌期权,该期权首先是看跌期权,股票价格是S0,执行价格是K,买入看跌期权就首先保证以执行价K卖掉股票,下跌敲出障碍期权相当于在看跌期权的基础上附加提前终止执行的条款,内容是当股票价格触及障碍值Sb时看跌期权就提前终止执行。因为该期权对于卖方有利,所以其价格应低于看跌期权的价格。

对于下跌敲出看跌期权,该期权首先是看跌期权,股票价格是S0,执行价格是K,买入看跌期权就首先保证以执行价K卖掉股票,下跌敲出障碍期权相当于在看跌期权的基础上附加提前终止执行的条款,内容是当股票价格触及障碍值Sb时看跌期权就提前终止执行。因为该期权对于卖方有利,所以其价格应低于看跌期权的价格。

对于下跌敲入看跌期权,该期权首先是看跌期权,下跌敲出障碍期权相当于在看跌期权的基础上附加提前何时生效的条款,内容是当股票价格触及障碍值Sb时看跌期权开始生效。

当障碍值Sb确定时,障碍期权存在解:

P?Ke?rT{N(d4)?N(d2)?a[N(d7)?N(d5)]} ?S0{N(d3)?N(d1)?b[N(d8)?N(d6)]}

a?(Sb?1?2r/?2), S0b?(Sb1?2r/?2), S0其中

ln(S0/K)?(r??2/2)T, d1??Tln(S0/K)?(r??2/2)T d2??Tln(S0/Sb)?(r??2/2)T d3??Tln(S0/Sb)?(r??2/2)T d4??Tln(S0/Sb)?(r??2/2)T d5??Tln(S0/Sb)?(r??2/2)T d6??Tln(S0K/Sb2)?(r??2/2)T d7??Tln(S0K/Sb2)?(r??2/2)T d8??T利用上述公式编写下跌敲出障碍期权价格程序:

function P=DownOutPut(S0,K,r,T,sigma,Sb) a=(Sb/S0)^(-1+2*r/sigma^2) b=(Sb/S0)^(1+2*r/sigma^2)

d1=(log(Sb/K)+(r+sigma^2/2*T))/(sigma*sqrt(T)) d2=(log(Sb/K)+(r-sigma^2/2*T))/(sigma*sqrt(T)) d3=(log(S0/Sb)+(r-sigma^2/2*T))/(sigma*sqrt(T)) d4=(log(S0/Sb)+(r+sigma^2/2*T))/(sigma*sqrt(T)) d5=(log(S0/Sb)-(r-sigma^2/2*T))/(sigma*sqrt(T)) d6=(log(S0/Sb)-(r+sigma^2/2*T))/(sigma*sqrt(T)) d7=(log(S0*K/Sb^2)-(r-sigma^2/2*T))/(sigma*sqrt(T)) d8=(log(S0*K/Sb^2)-(r+sigma^2/2*T))/(sigma*sqrt(T))

P=K*exp(-r*T)*(normcdf(d4)-normcdf(d2)-a*(normcdf(d7)-normcdf(d5))) -S0*(normcdf(d3)-normcdf(d1)-b*(normcdf(d8)-normcdf(d6)))

例2 同例1,运行:

P=DownOutPut(50,50,0.1,5/12,0.4,40) P=4.0936

利用蒙特卡洛方法模拟下跌敲出障碍期权价格程序:

在模拟中我们给出模拟次数Nrepl,每次模拟时间分为Nsteps,障碍值为Sb,其现金流如下:当St小于Sb时,CashFlow=0

我们可以先模拟路径,然后让大于Sb路径的现金流为0,程序如下:

function [P,aux,ci]=DOPutMC(S0,K,r,T,sigma,Sb,NSteps,NRepl)

NSteps每次离散时间数目

NRepl模拟次数 %模拟股价路径 dt=T/NSteps

nudt=(r-0.5*sigma^2)*dt sidt=sigma*sqrt(dt) randn('seed',0)

rand=randn(NRepl,NSteps) rand1=nudt+sidt*rand rand2=cumsum(rand1,2) path=S0*exp(rand2) 利用路径进行定价

payoff=zeros(NRepl,1) for i=1:NRepl ax=path(i,:) if min(ax)

payoff(i)=max(0,K-ax(NSteps)) end end

[P,aux,ci]=normfit(exp(-r*T)*payoff)

运行:

[P,aux,ci]=DOPutMC(50,50,0.1,5/12,0.4,40,100,1000)

P = 0.8094 aux = 1.9714 ci =

0.6871 0.9318

3 蒙特卡洛方法模拟亚式期权定价 亚式期权是一种路径依赖型期权,它的收益函数依赖于期权存续期内的标的资产的平均价格。(算术平均与几何平均)

亚式看涨期权到期现金流为

1max{N?S(t)?K,0} tii?1Ni?i?t,?t?T/N

例3 同例1,用蒙特卡洛方法计算该亚式期权价格。

function [P,CI]=AsianMC(s0,k,r,T,sigma,NSteps,NRepl) dt=T/NSteps;

nudt=(r-0.5*sigma^2)*dt; sidt=sigma*sqrt(dt); randn('seed',0);

rand=randn(NRepl,NSteps); rand1=nudt+sidt*rand; rand2=cumsum(rand1,2); path=s0*exp(rand2); payoff=zeros(NRepl,1); for i=1:NRepl

payoff(i)=max(0,mean(path(i,:))-k); end

[P,aux,CI]=normfit(exp(-r*T)*payoff)

>> AsianMC(50,50,0.1,5/12,0.4,5,50000) P =

3.9622 aux =

5.9669 CI =

3.9099 4.0145 ans =

3.9622

4. 等价鞅测度 (内容参见247页)

function eucall=blsmc(s0,kK,r,T,sigma,Nu)

s0=50;K=52;r=0.1;T=5/12;sigma=0.4;Nu=1000; randn('seed',0);

nuT=(r-0.5*sigma^2)*T; sit=sigma*sqrt(T);

discpayoff=exp(-r*T)*max(0,s0*exp(nuT+sit*randn(Nu,1)-K)); disp('蒙特卡洛模拟结果')

[eucall,varprice,ci]=normfit(discpayoff) SM=s0*exp(nuT+sit*randn(Nu,1)); SM=s0*exp(r*T)*SM/mean(SM); S1=max(0,SM-K);

disp('风险中性下欧式看涨期权结果') [Emscall,varprice,ci]=normfit(S1) disp('欧式看涨期权解析解') blsprice(50,52,0.1,5/12,0.4) blsmc

蒙特卡洛模拟结果

eucall =

1.3035e-021 varprice = 3.5526e-022 ci =

1.0e-020 * 0.1281 0.1326

风险中性下欧式看涨期权结果 Emscall = 5.4320 varprice = 9.8321 ci =

4.8219 6.0422

欧式看涨期权解析解 ans =

5.1911 ans =

1.3035e-021

本文来源:https://www.bwwdw.com/article/touf.html

Top