蒙特卡洛模拟金融衍生产品定价_第1页
蒙特卡洛模拟金融衍生产品定价_第2页
蒙特卡洛模拟金融衍生产品定价_第3页
蒙特卡洛模拟金融衍生产品定价_第4页
蒙特卡洛模拟金融衍生产品定价_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 8 章 蒙特卡洛模拟金融衍生产品定价本章介绍蒙特卡洛模拟期权定价的内容, 要求读者掌握随机数生成方式, 了 解蒙特卡洛定价就是模拟风险中性测度下标的资产的运动过程, 学会蒙特卡洛方 法模拟欧式期权定价,掌握提高模拟精度的常用方法。§ 随机模拟基本原理1977 年,菲力埔伯耶勒(Phelim Boyle)提出了模拟方法求解金融资产定 价问题,其想法是假设资产价格分布是随机波动, 如果知道了这个波动过程, 就 可以通过随机模拟不同的路径,每做完一次模拟,就产生了一个最终资产价值, 再进行若干次这样的过程, 那么所得到的结果就是一个最终的资产价值分布, 从 这个分布中我们可以得到期望的

2、资产价格。随机数生成函数1 均匀分布随机数生成函数MATLAB的unidrnd函数可以生成1到N的均匀分布随机数。调用方式R=unidrnd(N);R=unidrnd(N,m);R=unirnd(N,m,n);其中,N所要生成的随机数个数,m确定输出随机矩阵R的行数,n确定输出随机 矩阵R的列数2生成服从连续均匀分布的随机数 如果需要生成服从连续分布的随机数,则需调用 unifrnd 函数,其调用格式为 调用方式 1R= unifrnd(A , B)生成位于A、B之间的一个随机数。调用方式 2R= unifrnd(A,B,m)生成位于A、B之间的随机数。m=m1,m2表示行数列数。 调用方式

3、3R= un ifrnd(A,B,m, n),m,n分别表示行数、列数unifrnd(1,2,5,6),unifrnd(1,2,5,6) 81 2 生成正态分布随机数调用方式R=normrnd(mu,sigma)R=normrnd(mu,sigma,m)R=normrnd(mu,sigma,m,n)81 3 特定分布随机数发生器MATLAB中有统一格式的随机数发生器,函数名称为random,可生成许多服从 不同分布的随机数。y=random('name',A1,A2,A3,m,n)表 生成特定分布的随机数函数参数表beta 分布: beta, 二项分布: bino, 卡方 :c

4、hi2, 指数分布: exp,F- 分布: f, Gamma:gam Lognormal:logn, uniform:unif;Poisson:poiss,T:t;Normal->norm;Noncentral F ->ncf, Noncentral->nct8. 1. 4蒙特卡洛模拟方差削减技术蒙持卡洛模拟精度与模拟次数密切相关,模拟次数越高其精度越高,但是次数增加又会增加计算量。实践证明明减少模拟方差可以提高稳定性,减少模拟次 数。有很多种方法可以减小方差,如对偶变量技术、控制变量技术、分层抽样、 矩匹配、条件蒙特卡洛模拟等,但最简单并且应用最为广泛的是对偶变量技术与 控

5、制变量技术。对偶变量技术就是先随机抽样得到一组数据,然后以此为基础构造出另一组对偶变量。下面以正态分布为例介绍对偶变量技术。 首先从正态分布变量中随机抽取N个样本值,分别为Zj(i 1,2,N),由此可以得到N个模拟值G(i 1,2,.,N),那么衍生证券蒙特卡洛估计值为以Zi(i1,2,.,N)为基础,构造对偶随机数 乙 Z,乙是与乙相互对偶的随机数,由正态分布的性质知,ziZi(i1,2,., N)也是服从正态分布,由对偶随机数生成的估计值为Ci对C和(?取平均得到新的估计1 C 2(CCi Cii2如果随机抽样的样本Zi(i 1,2,3,., N)模拟得到的估计值比较小,那么与之对偶的随

6、机抽样样本 乙Zi(i 1,2,.,N)得到的估计值可能会偏大,二者的平均值就可能会接近真实值。如果cov(Ci,Cj 0,那么varCi Ci2- var(Cj22cov(Ci,Ci)-var(Cj2从上面的不等式可以看出,利用对偶技术可以增加估计稳定性,提高了估计精确 度。随机模拟控制变量技术摔制变量技术就是将与所估计的未知变量密切相关的另一个已知量的真实 值和估计值之间的差异作为控制量,以提高估计精度。在定价实践中,将这两种 衍生证券用相同的随机抽样样本和时间间隔, 实施同样的蒙特卡洛模拟过程,能够得到两个模拟估计值,以第二种衍生证券真实值与估计值之间的差异作为控制 变量,最后得到第一种

7、衍生证券的蒙特卡洛估计值。假定Vi是需要估汁的第一种衍生证券的价值,V2是价值容易估计的第二种衍 生证券的价值,第一种证券与第二种证券相似,而 ?1和?2分别是第一种衍生证 券和第二种衍生证券在同样的随机抽样样本的蒙特卡洛估计值, 那么利用控制变 量技术得到第一种衍生证券的价格估计值为VC V (v2 V2)这里V2 V2就是控制变量,它实际上是第一种衍生证券的蒙特卡洛模拟的估计误差,且上述方程的方差之间的关系为var( ViC1) var(V1) var(V*2)2cov(Vi,?2)如果 var(?2)2cov(?i,?2),一定有var(?1C1) var(?1)因此,当两种衍生证券的协

8、方差很大时,或者当两种衍生证券的价格高度相 关时,上述关系是成立的,两种衍生证券的正相关性越强,估计效率越理想。然 的从实际应用的角度看,这种控制变量技术的应用十分有限,因此,下面是更一般的控制变量技术,其控制变量的形式为方差为var(?1 ) var(?1)2 var(?2) 2 cov( ?-i, ?2)这是关于控制变量系数的二次三项式,下面的目标是能够找到特殊的使方差var(?i )最小.这时只要取COv(V|,V2)var(V2)就可以保证方差var(Vi )最小,这种控制变量技术的缺点是*需要提前知道协方差cov(Vi,?2)的信息,而这一般需 要靠经验实现§蒙持卡洛方法模

9、拟期权定价(编程)考8. 2. 1蒙特卡洛方法模拟欧式期权定价在期权计算中,我们可以利用风险中性的方法计算期权的价格。风险中性定 价形式如下:f erTE(fT)其中,f是期权的价格,fT是到期日T的现金流,E是风险中性测度。如果知道了风险中性测度就可以模拟全路径,也可模拟终端价格,例如计算 障碍期权等路径依赖型期权时可以模拟全路径,而欧式期权可模拟终端价格。如果标的资产服从几何布朗运动dS Sdt SdW那么风险中性定价的关键在于寻找风险中性测度。对于几何布朗运动,可以 证明风险中性测度下,标的资产运动过程如下:2St S0 exp r 一 T Jt2对于欧式看涨期权,到期日欧式看涨期权现金

10、流如下:max0, S(O)e)p(r - 2/2)T v'T ) K其中,K是执行价,r是无风险利率,是标准差,是正态分布的随机变量。对到期日的现金流用无风险利率贴现,就可以知道期权的价格。 *(考)【例8-1】假设股票价格服从几何布朗运动,股票现在价格S(0) 50,欧式期权执行价K 52,无风险利率r 0.1,股票波动的标准差sigma 0.4,期权的到期日T 5/12,试用蒙特卡洛模拟方法计算该期权价格。下面用MATLABS写一个子程序blsmc进行计算function eucall,varprice,ci=blsmc(sO,K,r,T,sigma,Nu)% %噱特卡洛方法计算

11、欧式看涨期权的价格%输入参教% sO:股票价格% K:执行价% r无风险利率% sigma股票波动的标准差% Nu 模拟的次数%输出参数% eucall:欧式看涨期权的价格% varprice模拟期权价格的方差% ci 95%概率保证的期权价格区间randn ('seed',O);%定义随机数发生器种子是0,这样可以保证每次模拟的结果相同n uT=*sigma2)*T; sit=sigma*sqrt(T); discpayoff=exp(-r*T)*max0,sO*exp( nuT+sit*ra ndn( Nu,l)-K);%期权到期时的现金流eucall,varprice,c

12、i=no rmfit(discpayoff)调用子程序可得到欧式看涨期权价格。c,var,ci=blsmc(50,52,5/12,1000)c =var =ci =从上面的结果可以看到, 蒙特卡洛模拟得到的期权价格为, 样本正态拟合的 方差为, 95的置信区间为,模拟波动的区间还是很大的。我们用了 normfit 函数对模拟的结果用正态分布函数进行拟合, 这不是必需 的,主要是为了考察模拟结果的稳定性, 如果不需要考察结果是否稳定, 也可直 接对模拟的结果求均值。此时可将最后一句改为price=mean(discpayoff) 。欧式期权的公式解如下:call,put= blsprice(50

13、,52,5/12,call =put =公式解和模拟值二者之间还是存在较大的差距,增加模拟的次数为 10000 次时结果如下:c,var,ci=blsmc(50,52,5/12,10000)c =var =ci =模拟结果入,可以看到期权模拟精度有了显著提高, 95%的的置信区间为 , , 置信区间较 1000 时大大缩小,模拟可靠性增加。下面用对偶方法计算欧式看涨期权的价格。function eucall,varprice,ci=dul_blsmc(s0,K,r,T,sigma,Nu) % %蒙特卡洛方法计算欧式看涨期权的价格 (对偶法) % 输入参教% sO: 股票价格% K: 执行价%

14、r 无风险利率% sigma 股票波动的标准差% Nu 模拟的次数% 输出参数% eucall:欧式看涨期权的价格% varprice 模拟期权价格的方差% ci 95 概率保证的期权价格区间 randn('seed',O);%定义随机数发生器种子是 0,这样可以保证每次模拟的结果相同n uT=*sigma2)*T;sit=sigma*sqrt(T);rand=randn(Nu,1);discpayoff=exp(-r*T)*max(0,s0*exp(nuT+sit*rand)-K);discpayoff1= exp(-r*T)*max(0,s0*exp(nuT+sit*(-1

15、)*rand)-K);%期权到期时的现金流duleucall,dulvarprice,dulci=normfit(discpayoff;discpayoff1) 调用子程序可得到欧式看涨期权价格。c,var,ci=dul_blsmc(50,52,5/12,10000);结果如下c =var =ci =模拟的结果为,离精确值非常接近,说明对偶技术还是非常有效的822 蒙特卡洛方法模拟障碍期权定价 障碍期权是特殊形式的期权,例如确定一个障碍值 Sb ,在期权的存续期内 有可能超过该价格, 也有可能低于该价格, 对于敲出期权而言, 如果在期权的存 续期内标的资产价格触及障碍值 Sb 时,期权合同可以

16、提前终止执行;相反地对 于敲入期权丽言,如果标的资产价格触及障碍值 Sb 时,期权合同开始生效。注 意障碍值Sb可以低于标的资产现在的价格S。,也可以高于S。如果Sb So称为 上涨期权,反之称为下跌期权。对于下跌敲出看跌期权,该期权首先是看跌期权,股票价格是 So,执行价 是K ,买入看跌期权就首先保证以执行价 K卖掉股票,下跌敲出障碍期权相当 于在看跌期权的基础上附加提前终止执行的条款, 内容是当股票价格触及障碍值 Sb时看跌期权就提前终止执行。因为该期权对于卖方有利,所以其价格应低于看跃期权的价格。下面考虑下跌敲入看跌期权, 同样地该期权首先是看跌期权, 下跌敲入期权 相当于在看跌期权的

17、基础上, 附加何时生效的条款, 内容是当股票的价格触及障 碍值Sb时,看跌期权开始生效,综合地看,标准的看跌期权合同可以拆分为两 份产品,分别是下跌敲出看跌期权与下跌敲入看跃期权,用公式表示如下P Pdi Pdo其中,P是标准看跌期权价格,Pdi与Pdo分别表示下跌敲入看跌期权与下跌敲出 看跌期权的价格。如果下跌敲出看跌期权提前终止时卖方补偿一些费用给买方,上述公式表示的平价义系就就不再有效。 当障碍值确定时,障碍期权存在公式解,其形式如下:rTP Ke rTN(d4) N(d2) aN(d7) N(d5)S0N(d3) N(d1) b N (d8) N(d6)其中,So是股票价格,Sb是障碍

18、值,K是看跌期权执行价,T是存续期,r是无风险利率, 是波动率的标准差,其他参数如下:a=(Sb/S0)A(-1+2*r/sigmaA2); b=(Sb/S0)A(1+2*r/sigmaA2);d1=(log(S0/K)+(r+sigmaA2/2)*T)/(sigma*sqrt(T);d2=(log(S0/K)+(r-sigmaA2/2)*T)/(sigma*sqrt(T);d3=(log(S0/Sb)+(r+sigmaA2/2)*T)/(sigma*sqrt(T);d4=(log(S0/Sb)+(r-sigmaA2/2)*T)/(sigma*sqrt(T);d5=(log(S0/Sb)-(r

19、-sigmaA2/2)*T)/(sigma*sqrt(T);d6=(log(S0/Sb)-(r+sigmaA2/2)*T)/(sigma*sqrt(T); d7=(log(S0*K/SbA2)-(r-sigmaA2/2)*T)/(sigma*sqrt(T); d8=(log(S0*K/SbA2)-(r+sigmaA2/2)*T)/(sigma*sqrt(T);利用上面的公式编写下跌敲出障碍期权价格的程序如下 function P=DownOutPut(S0,K,r,T,sigma,Sb)a=(Sb/S0)A(-1+2*r/sigmaA2); b=(Sb/S0)A(1+2*r/sigmaA2);

20、d1=(log(S0/K)+(r+sigmaA2/2)*T)/(sigma*sqrt(T);d2=(log(S0/K)+(r-sigmaA2/2)*T)/(sigma*sqrt(T); d3=(log(S0/Sb)+(r+sigmaA2/2)*T)/(sigma*sqrt(T); d4=(log(S0/Sb)+(r-sigmaA2/2)*T)/(sigma*sqrt(T);d5=(log(S0/Sb)-(r-sigmaA2/2)*T)/(sigma*sqrt(T); d6=(log(S0/Sb)-(r+sigmaA2/2)*T)/(sigma*sqrt(T); d7=(log(S0*K/SbA

21、2)-(r-sigmaA2/2)*T)/(sigma*sqrt(T);d8=(log(S0*K/SbA2)-(r+sigmaA2/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);【例 8-2】我们考虑一个欧式看跌股票期权。 股票的价格为 50,看跌期权执行价 为 50,无风险利率为,时间为 5 个月,股票年波动率的标准差为。首先公式的解如下:S0=50;K

22、=50;r=;T=5/12;sigma=; call,put=blsprice(S0,K,r,T,sigma) call =put =看跌期权价格为对于上述看跌期权,进一步地,我们考虑障碍值Sb等于40时下跌敲出期权的价格: P=DownOutPut(S0,K,r,T,sigma,40)P =由于该下跌敲出看跌期权提供的条件过于优厚,买方承受大量风险,作为回 报价格较看跌期权便宜许多。下面用蒙特卡洛方法模拟下跌敲出看跌期权价格, 在模拟中我们给出了模拟 次数为NRepI每次模拟时间分为NSteps步离散,障碍值为变量Sb,其现金流如 下:当 St Sb 时,CashFlow=Q我们可以先模拟路

23、径,然后让小于Sb的路径的现金流为0,程序如下:% DOPutMC(s0,k,r,T,sigma,sb,NSteps,NRep1)function P,aux,CI= DOPutMC(s0,k,r,T,sigma,sb,NSteps,NRep1)% % 利用蒙特卡洛方法对欧式下跌敲出期权定价% 输入参数% sO: 股票价格% k: 执行价% r 无风险利率% T:期权存续期% sigma 股票波动的标准差% Sb 障碍值% NSteps 时间离散数目% NRepl: 欧式看涨期权的价格% varprice 模拟期权价格的方差% ci 95 概率保证的期权价格区间% 输出参数% P下跌敲出看跌期

24、权价格% CI 蒙特卡洛摩尼的方差 % NCrossed 价格的 95%-置信区间% %用蒙特卡洛方法模拟风险中性下股价路径dt=T/NSteps; nudt=*sigma2)*dt;sidt=sigma*sqrt(dt);randn('seed',0);rand=randn(NRep1,NSteps);rand1=nudt+sidt*rand; rand2=cumsum(rand1,2);% 沿列方向逐列累加 path=s0*exp(rand2);% 利用路径进行定价payoff=zeros(NRep1 , 1);for i=1:NRep1 ax=path(i,:);if m

25、in(ax)<sbpayoff(i)=0; % 如果路径中的任意一点价格低于障碍值,现金流为 0elsepayoff(i)=max(0,k-ax(NSteps);endendP,aux,CI=normfit(exp(-r*T)*payoff);%P为期权价格运行程序:s0=50;k=50;r=;T=5/12;sigma=;sb=40;NSteps=600;NRep 仁 10000;P,aux,CI=DOPutMC(sO,k,r,T,sigma,sb,NSteps,NRep1)P =aux =CI =该期权模拟的价格为,和前面的公式解尚存在差距,增加模拟次数,代码如 下:s0=50;k=5

26、0;r=;T=5/12;sigma=;sb=40;NSteps=600;NRep 仁20000;P,aux,CI=DOPutMC(s0,k,r,T,sigma,sb,NSteps,NRep1)P =aux =CI =结果和公式解比较接近,如果将存续期改为2/12年,再考察其价格变化,代码如下:P,aux,CI=DOPutMC(s0,k,r,2/12,sigma,sb,60,50000)P =aux =CI =蒙特卡洛方法模拟亚式期权定价亚式期权是一种路径依赖型期权,它的收益函数依赖于期权存续期内标的资 产的平均价格。平均价格分算术平均和几何平均两种,对于离散算术平均价格定 义为A da-S(t

27、i)()其中ti (i 1,2,., n)是离散时间样本点离散几何平均价格定义为1/ nAdg S(tJ()i 1亚式看涨期权到期现金流为1 N maxS(ti) K,0, ti i t, t T/ NN i i其中,K是执行价,S(ti)是h时刻的股价。【例8-3】股票价格为50,亚式看涨期权执行价为50,存续则为5个月, 期权到期现金流是每月均价与执行价之差,股票波动率的标准差为,无风险利率为,下面用蒙特卡洛方法计算该亚式期权价格:该期权定价程序为:% DOPutMC(s0,k,r,T,sigma,sb,NSteps,NRep1)fun ction P,aux,Cl=Asia nMC(s0

28、,k,r,T,sigma,NSteps,NRep1)%利用蒙特卡洛方法对亚式期权定价% 输入参数% sO:股票价格% k:执行价% r无风险利率% T:期权存续期% sigma股票波动的标准差% NSteps时间离散数目% NRepl:模拟路径数%输出参数% P下跌敲出看跌期权价格% CI蒙特卡洛模拟的方差% NCrossed 价格的95%置信区间%蒙特卡洛方法模拟风险中性下股价路径dt=T/NSteps; nudt=*sigma2)*dt;sidt=sigma*sqrt(dt);randn ('seed',0);ra nd=ra ndn (NRep1,NSteps);ran

29、d1= nu dt+sidt*ra nd;rand2=cumsum(rand1,2);%沿列方向逐列累加path=s0*exp(ra nd2);%用路径进行定价payoff=zeros(NRep1 , 1);for i=1:NRep1 payoff(i)=max(0,mea n(path(i,:)-k);endP,aux,CI=normfit(exp(-r*T)*payoff);运行程序s0=50;k=50;r=;T=5/12;sigma=;NSteps=5;NRep 仁50000; P,aux,ci= Asia nMC(s0,k,r,T,sigma,NSteps,NRep1 ) P =aux

30、 =CI =这是一个比较粗糙的估计,我们可以用控制变量(control variable)技术提 高估计精度。构造NY S(ti)i 0显然它和收益函数是相关的,而NEY ES(ti)i 0NES(i t)NS(0)eir tNS(0)ertii 0r(N 1) tIS(0) L1 e(ES(t)/S(0) et),这样用控制变量法可以将前面的程序改为%fun ctio n P, CI= Asia nMCCV(S0,X,r,T,sigma,NSamples,NRep1,NPilot)%利用蒙特卡洛方法对亚式期权定价% 输入参数% sO:股票价格% X:执行价% r无风险利率% T:期权存续期%

31、 sigma股票波动的标准差% NSample取样数目% NRepl:模拟路径数% Npilot: 路径数目%输出参数% P下跌敲出看跌期权价格% CI 蒙特卡洛模拟的方差% %用蒙特卡洛方法模拟风险中性下股价路径TryPath=AssetPaths1(S0,r,sigma,T,NSamples,NPilot);%生成路径StockSum=sum(TryPath,2); PP=mean(TryPath(:,2:(NSamples+1),2);TryPayoff=exp(-r*T)*max(0,PP-X);MatCov=cov(StockSum,TryPayoff); c=-MatCov(1,2

32、)/var(StockSum);dt=T/NSamples; ExpSum=S0*(1-exp(NSamples+1)*r*dt)/(1-exp(r*dt);% MC ControlVars=zeros(NRep1,1);for i=1:NRep1StockPath=AssetPaths1(S0,r,sigma,T,NSamples,1); Payoff(i)=exp(-r*T)*max(0,mean(StockPath(2:(NSamples+1)-X);ControlVars(i)=Payoff(i)+c*(sum(StockPath)-ExpSum);endP,aux,CI=normfi

33、t(ControlVars);function Spaths=AssetPaths1(S0,mu,sigma,T,NSteps,NRep1) dt=T/NSteps;n udt=*sigma2)*dt;sidt=sigma*sqrt(dt);Increments=nudt+sidt*randn(NRep1,NSteps);LogPaths=cumsum(log(S0)*ones(NRep1,1),Increments,2); Spaths=exp(LogPaths);下面是控制变量模拟的结果: randn('seed',0);P,CI=AsianMCCV(50,50,5/12,

34、5,45000,50000) 计算结果为P =CI =根据前面蒙特卡洛模拟的结果有randn('seed',0);P,aux,CI=AsianMC(50,50,5/12,5,50000)P =aux =CI =可以看出控制变量使得估计的置信区间缩小了蒙特卡洛模拟经验等价勒测度等价鞅理论是金融衍生品定价的重要方法, 衍生品价格就是在等价鞅测 度下对衍生品现金流用无风险利率贴现,可以用下面方程表示:S erTEQSr IF)其中,So表示股票价格,r为无风险利率,F)表示0时刻信息,Eq.|F。表示等价敬测度下的期望算子。Duan和simonate(1998)提出了乘数调整法,该方法可以保证等价鞅性 质,当标的资产服从几何布朗运动时,等价鞅下的资产运动满足下列条件:ST Sd exp r T2其中N(0,1),这样模拟的第i条路径为Si,T S0 exp r这时我们可以构造一个等价鞅测度*S.T(i)So exp(rT)Si,TSi,T / MS*(.)测度实际上在第i条路径的权重上乘以S)exp(rT),当样本容量趋于无穷大时有M(rT) 1*eSi,tSoM i iS*,i (i)是风险中性测度下的新样本。对于例8-1我们重新编写程序如下%function Emseucall,Var,CI=Emsmc(sO,K,r,T,sigma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论