第8章 蒙特卡洛模拟金融衍生产品定价

更新时间:2023-11-09 03:44:01 阅读量: 教育文库 文档下载

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

第8章 蒙特卡洛模拟金融衍生产品定价

本章介绍蒙特卡洛模拟期权定价的内容,要求读者掌握随机数生成方式,了解蒙特卡洛定价就是模拟风险中性测度下标的资产的运动过程,学会蒙特卡洛方法模拟欧式期权定价,掌握提高模拟精度的常用方法。

§8.1 随机模拟基本原理

1977年,菲力埔〃伯耶勒(Phelim Boyle)提出了模拟方法求解金融资产定价问题,其想法是假设资产价格分布是随机波动,如果知道了这个波动过程,就可以通过随机模拟不同的路径,每做完一次模拟,就产生了一个最终资产价值,再进行若干次这样的过程,那么所得到的结果就是一个最终的资产价值分布,从这个分布中我们可以得到期望的资产价格。 8.1.1 随机数生成函数

1.均匀分布随机数生成函数

MATLAB中的unidrnd函数可以生成1到N的均匀分布随机数。 调用方式 R=unidrnd(N); R=unidrnd(N,m); R=unirnd(N,m,n);

其中,N所要生成的随机数个数,m确定输出随机矩阵R的行数,n确定输出随机矩阵R的列数

2.生成服从连续均匀分布的随机数

如果需要生成服从连续分布的随机数,则需调用unifrnd函数,其调用格式为 调用方式1

R=unifrnd(A,B)生成位于A、B之间的一个随机数。 调用方式2

R=unifrnd(A,B,m)生成位于A、B之间的随机数。m=[m1,m2]表示行数列数。 调用方式3

R=unifrnd(A,B,m,n),m,n分别表示行数、列数 unifrnd(1,2,[5,6]),unifrnd(1,2,5,6) 8.1.2 生成正态分布随机数 调用方式

R=normrnd(mu,sigma) R=normrnd(mu,sigma,m) R=normrnd(mu,sigma,m,n)

8.1.3 特定分布随机数发生器

MATLAB中有统一格式的随机数发生器,函数名称为random,可生成许多服从不同分布的随机数。

y=random('name',A1,A2,A3,m,n)

表8.1 生成特定分布的随机数函数参数表

beta分布:beta,二项分布:bino,卡方:chi2,指数分布:exp,F-分布:f, Gamma:gam Lognormal:logn, uniform:unif;Poisson:poiss,T:t;Normal->norm; Noncentral F ->ncf, Noncentral->nct

8.1.4 蒙特卡洛模拟方差削减技术

蒙持卡洛模拟精度与模拟次数密切相关,模拟次数越高其精度越高,但是次数增加又会增加计算量。实践证明明减少模拟方差可以提高稳定性,减少模拟次数。有很多种方法可以减小方差,如对偶变量技术、控制变量技术、分层抽样、矩匹配、条件蒙特卡洛模拟等,但最简单并且应用最为广泛的是对偶变量技术与控制变量技术。

对偶变量技术就是先随机抽样得到一组数据,然后以此为基础构造出另一组对偶变量。下面以正态分布为例介绍对偶变量技术。首先从正态分布变量中随机抽取N个样本值,分别为Zi(i?1,2,...,N),由此可以得到N个模拟值

Ci(i?1,2,...,N),那么衍生证券蒙特卡洛估计值为

??1C?Ci

Ni~~ 以Zi(i?1,2,...,N)为基础,构造对偶随机数Zi??Z,Zi是与Zi相互对偶的随~机数,由正态分布的性质知,Zi??Zi(i?1,2,...,N)也是服从正态分布,由对偶随机数生成的估计值为

~1~C??Ci

Ni~?取平均得到新的估计 对C和C~???C1~?1i?Ci?C?(C?C)???? 2Ni?2??如果随机抽样的样本Zi(i?1,2,3,...,N)模拟得到的估计值比较小,那么与之对

~偶的随机抽样样本Zi??Zi(i?1,2,...,N)得到的估计值可能会偏大,二者的平均值

~?,C就可能会接近真实值。如果cov(Cii)?0,那么

~???C?C11~ii??)?1cov(C?,C?) var??var(C)?var(Ciiii?2?222??从上面的不等式可以看出,利用对偶技术可以增加估计稳定性,提高了估计精确度。

8.1.5 随机模拟控制变量技术

摔制变量技术就是将与所估计的未知变量密切相关的另一个已知量的真实值和估计值之间的差异作为控制量,以提高估计精度。在定价实践中,将这两种衍生证券用相同的随机抽样样本和时间间隔,实施同样的蒙特卡洛模拟过程,能

够得到两个模拟估计值,以第二种衍生证券真实值与估计值之间的差异作为控制变量,最后得到第一种衍生证券的蒙特卡洛估计值。

假定V1是需要估汁的第一种衍生证券的价值,V2是价值容易估计的第二种衍

?和V?分别是第一种衍生证生证券的价值,第一种证券与第二种证券相似,而V12券和第二种衍生证券在同样的随机抽样样本的蒙特卡洛估计值,那么利用控制变量技术得到第一种衍生证券的价格估计值为

?Cl?V??(V?V?) V1122?就是控制变量,它实际上是第一种衍生证券的蒙特卡洛模拟的估计这里V2?V2误差,且上述方程的方差之间的关系为

?Cl)?var(V?)?var(V?)?2cov(V?,V?) var(V11212?)?2cov(V?,V?),一定有 如果var(V212?Cl)?var(V?) var(V11因此,当两种衍生证券的协方差很大时,或者当两种衍生证券的价格高度相

关时,上述关系是成立的,两种衍生证券的正相关性越强,估计效率越理想。然的从实际应用的角度看,这种控制变量技术的应用十分有限,因此,下面是更一般的控制变量技术,其控制变量的形式为

???V???(V?V?) V1t22

方差为

??)?var(V?)??2var(V?)?2?cov(V?,V?) var(V11212 这是关于控制变量系数?的二次三项式,下面的目标是能够找到特殊的?使

?,V?)cov(V*?12???)最小,这方差var(V1)最小.这时只要取??就可以保证方差var(V1?)var(V2?,V?)的信息,种控制变量技术的缺点是?*需要提前知道协方差cov(V而这一般需12要靠经验实现。

§8.2 蒙持卡洛方法模拟期权定价(编程)考

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

在期权计算中,我们可以利用风险中性的方法计算期权的价格。风险中性定价形式如下:

?(f) f?e?rTET?是风险中性测度。 其中,f是期权的价格,fT是到期日T的现金流,E 如果知道了风险中性测度就可以模拟全路径,也可模拟终端价格,例如计算

障碍期权等路径依赖型期权时可以模拟全路径,而欧式期权可模拟终端价格。

如果标的资产服从几何布朗运动

dS??Sdt??SdW 那么风险中性定价的关键在于寻找风险中性测度。对于几何布朗运动,可以证明风险中性测度下,标的资产运动过程如下:

???2??ST?S0exp???r?2??T??T?? ????对于欧式看涨期权,到期日欧式看涨期权现金流如下:

max{0,S(0)exp((r-?2/2)T??T?)?K} 其中,K是执行价,r是无风险利率,?是标准差,?是正态分布的随机变量。

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

【例8-1】假设股票价格服从几何布朗运动,股票现在价格S(0)?50,欧式期权执行价K?52,无风险利率r?0.1,股票波动的标准差sigma?0.4,期权的到期日T?5/12,试用蒙特卡洛模拟方法计算该期权价格。

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

function [eucall,varprice,ci]=blsmc(s0,K,r,T,sigma,Nu) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% 蒙特卡洛方法计算欧式看涨期权的价格% %% 输入参教 %% sO:股票价格 %% K:执行价 %% r 无风险利率

%% sigma 股票波动的标准差 %% Nu 模拟的次数 %% 输出参数

%% eucall: 欧式看涨期权的价格 %% varprice模拟期权价格的方差

%% ci 95%概率保证的期权价格区间 randn('seed',O);

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

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

[eucall,varprice,ci]=normfit(discpayoff) 调用子程序可得到欧式看涨期权价格。

[c,var,ci]=blsmc(50,52,0.1,5/12,0.4,1000) c = 5.444522854313244 var = 9.136131838483149 ci =

4.877583065095581 6.011462643530908

从上面的结果可以看到,蒙特卡洛模拟得到的期权价格为5.4445,样本正态拟合的方差为9.1361,95%的置信区间为4.8776,6.0115,模拟波动的区间还是很大的。

我们用了normfit函数对模拟的结果用正态分布函数进行拟合,这不是必需的,主要是为了考察模拟结果的稳定性,如果不需要考察结果是否稳定,也可直接对模拟的结果求均值。此时可将最后一句改为

price=mean(discpayoff)。欧式期权的公式解如下: [call,put]= blsprice(50,52,0.1,5/12,0.4) call = 5.191081351846794 put = 5.068933121521976

公式解5.1911和模拟值5.4445二者之间还是存在较大的差距,增加模拟的次数为10000次时结果如下:

[c,var,ci]=blsmc(50,52,0.1,5/12,0.4,10000) c = 5.133786430504636 var = 8.933464757068791 ci =

4.958672541451405 5.308900319557867

模拟结果入5.1338,可以看到期权模拟精度有了显著提高,95%的的置信区间为[4.9587,5.3089],置信区间较1000时大大缩小,模拟可靠性增加。

下面用对偶方法计算欧式看涨期权的价格。

function [eucall,varprice,ci]=dul_blsmc(s0,K,r,T,sigma,Nu) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% 蒙特卡洛方法计算欧式看涨期权的价格(对偶法)% %% 输入参教 %% sO:股票价格 %% K:执行价 %% r 无风险利率

%% sigma 股票波动的标准差

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

Top