版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、蒙特卡洛期权定价方法(总61页)-CAL-FENGHAL-(YICAI)-Company One 1CAL-本页仅作为文档封面,使用请直接删除第八章蒙特卡洛期权定价方法在金融计算中蒙特卡洛模拟是一种重要的工具:可以用来评估 投资组合管理规则、为期权定价、模拟套期保值交易策略、估计风 险价值。蒙特卡洛方法主要的优势在于对大多数情况都适用、易于 使用、灵活。它把随机波动性和奇异期权的很多复杂特性都考虑进 去了,更倾向于使用处理高维问题,而网格和PDF分析框架却不适用。蒙特卡洛模拟潜在的劣势在于它的计算量大。多次的重复需要完善我们所关注的置信区间的估计。利用方差缩减技术和低差异序 列可以部分的解决这
2、个问题。本章的目的是解释这些技术在一些例 子上的应用,包括一些路径依赖型期权。这章是第四章的延伸,在 第四章里我们讨论了蒙特卡洛积分。需要强调的是蒙特卡洛方法是 概念上的一个数字积分工具,即使我们适用更多的“模拟”或“抽 样”。在使用低差异序列而不是伪随机生成时这需要牢记。如果可能,我们可以把模拟的结果和分析公式进行比较。很明 显我们这样做的目标是一个纯粹的教学。如果你要计算一个矩形房 间的面积,你只需要用房间的长度乘以房间的宽度即可,而不必要 计算有多少次一块标准砖与这个表面相匹配。尽管如此,你还是应 该学会在一些简单案例中首先适用模拟的方法,在这些简单的例子 中我们可以检验答案的一致性;更
3、进一步,我们也要看为达到方差 减小的目的分析公式可用于的模拟期权可能更有力的控制变量。蒙特卡洛应用的出发点是生成样本路径,这个生成的样本路径给 予一个描述价格(或利率)动态的随机微分方程。在节我们解释几 何布朗运动的路径生成;在一个具体例子中模拟两个对冲策略,我 们也会讨论布朗桥,它是适时推进模拟样本的一个替代方案。在节 将讨论交换期权,它被用作为一个如何将这种方法推广到多维过程 的一个简单实例。在节我们考虑一个弱路径依赖型期权的例子,这 是个下跌敲出看跌期权;我们加入了有条件的蒙特卡洛和为减小方 差抽样的重要性。在节将讨论到强路径依赖型期权,同时我们证明 了运用控制变量和低差异序列为算术平均
4、亚式期权定价。我们以概 述由蒙特卡洛抽样产生的估计期权敏感性的基本问题来结束本章; 在节我们考虑一个普通的看涨期权A的简单案例。在第节将讨论到随机模拟期权定价的另一个应用,它应用于美式期 权;而一个简单的模拟方法在早期的应用中不可实行,并且这个问 题在随机动态优化的框架里被强制转换。路径生成蒙特卡洛期权定价方法的应用的出发点是对样本基本因素路径的 产生。对于一般的期权就像在第四章里面一样不需要产生路径:只 需要关注标的资产到期日的价格。但是如果路径依赖型期权,我们 就需要整条路径或者至少需要在给定时刻的一系列价值。如果服从 几何布朗运动,情况的处理就非常简单。事实上,必须认识到在路径生成中有两
5、个误差源:样本误差、离散误差。样本错误时因为蒙特卡洛方法的随机性,这个问题可以通过减小方差的办法得到缓解。为了理解什么是离散错误,我们考虑一个典型的离散连续时间模型,例如:伊藤随机微分方程:dSt =a(SgJ)dt + b(SxJ)dWt根据最简单的离散的方法欧拉公式,得到以下离散时间模型:6St = St+尿 一 St = a(St、t)6t + 6(St,&是离散时间步,且£ "(0,1)这种方法在概念上与有限差分类 似,并且在确定性微分方程上的应用会产生一个截尾误差,在离散 步长很小的时候这个误差可以忽略不计【1】。当我们讨论随机过程 收敛性时是一个非常重要
6、的概念,但是我们可以猜想我们能够通过 从标准正态分布中抽取随机变量£来模拟一个与连续时间方程的解 密切相关的离散时间随机过程。随着样本路径和复制次数的增加, 我们也就能够减小样本误差。虽然可以更正式地证明上述理由,但我们应该认识到离散误差至 可能改变特征解的概率分布例如,几何布朗运动模型:dSt = fiStdt + aStdWt (&1)欧拉公式Stst = (1 + a St y/6t e.这是非常容易掌握和执行的,但是每个s严S(3)值的边缘分布比起 对数正态分布更普通。事实上,取很小的St就可以减小误差,但 是很费时。在一个特定的案例中,我们可以通过伊藤引理的一个简
7、单应用来同时消除随机误差,但对大多数情况而言这种方法不可 取。对于复杂的随机微分方程,我们必须生成整条样本路径。.1模拟几何布朗运动d log Sr =dt + a dWt.利用伊藤引理,我们可以把()转换为下面这种形式:(8.2)我们还记得,利用对数正态分布性质【2】,令u =卩 一(t2/2,有当完全合并时()非常有用,得到:Elog(S(t)/5(0)|=ytVarlog(S(t)/5(0)=dr2tE5(t)/5(0)(&3)VarS(i)/5(0)=少(严_ i)(8.4)为了模拟在时间段(0, T)上的资产价格的路径,我们必须用一个 间步长概把时间离散化。从最后一个等式以及
8、标准Wiener过程 (见节),得到St+乱=St exp(” <5/ +。屈e) ,(8.5)而 N(05l)是一个标准正态随机变量。以等式()为基础,很 容易生成资产价格的样本路径。在图中给出了生成服从几何布朗运动的资产价格的样本路径的 令。函数AssetPaths产生一个样本路径矩阵,在这个矩阵里,模拟 的资产价格按行存储且每一列类似于一个时间瞬间。第一列包含了 对所有路径来说相同的值和初始价格。我们必须给这个函数赋值, 始价格SO,漂移率mu,波动性sigma,时间范围T,时间步长的数量 NSteps,模拟次数NRepl.值得注意的是该函数把参数"作为已知的 然后计算参
9、数-例如,生成并且绘制三条为期一年的样本路径,初始价格$50,均值 为,标准差(以一年为基础),假定时间步长为一天【3】>> randnCstate1,0);>> pathsAssetPaths(50,0.1,0.3,1,365,3);>> plot(1:length(paths),paths(1,:)>> hold on» plot(1:length(paths),paths(2,:)>> hold on>> plot(1:length(paths),paths(3,:)绘制的结果如图所示。如果用另一种状态为r
10、andn标准型生成随机 数,将会得到不同的结果。functionSPaths=AssetPaths (SO, mu, sigma, T, NSteps, NRepl)SPaths = zeros (NRepl, 1+NSteps);SPaths (:, 1) = SO;dt = T/NSteps;nudt = *sigma'2)*dt;sidt 二 sigma*sqrt(dt);for i=l:NReplfor j=l:NStepsSPaths (i, j+1)二SPaths (i, j) *exp (nudt +sidt*randn);endend用蒙特卡洛模拟生成资产价格路径的MA
11、TLAB命令图用蒙特卡洛模拟生成的样本路径functionSPaths=AssetPathsV (SO, mu, sigma, T, NSteps, NRepl)dt = T/NSteps;nudt = *sigma'2)*dt;sidt 二 sigma*sqrt(dt);Increments = nudt + sidt*randn(NRepl, NSteps);LogPaths = cumsum(log(SO)*ones(NRepl, 1), Increments , 2);SPaths = exp (LogPaths);Spaths (:, 1) = SO;图生成资产价格路径的矢量
12、命令图中的命令是基于两个循环嵌套。有时在MATLAB中使用矢量命令会 更有效。为了使用矢量命令,可以便于把等式()重写为log - log St = u8t + ay/6t e.为了对行进行加总(默认的是对列进行加总),我们可以生成资产 价格对数的差分然后把可选参数设置为2利用cumsum函数。函数AssetPathsV的结果如图所示。值得注意的是在最后一行我们把初始价格写在第一列。原因如下:» format long>> exp(log(50)ans =49.99999999999999最好避免这个误差(在这里看是微不足道,但以后会发现并不是这 样的。)我们可以比较这两
13、组实现的速度:>> tic, paths=AssetPaths(50,0.1,0.3,1,100,1000);, toeElapsed time is 0.029226 seconds.>> tic, paths*AssetPathsV(50,01,0.3,1,100,1000);> toe Elapsed time is 0.034177 seconds.在这种情况下我们不能看出矢量命令的优势。我们应该注意到 处理tic和toe的返回时间是受后台操作系统的许多变量控制的, 但是在写这本书的第一版时,矢量命令是有明显的优势的。并且, 事实上,在很多情况下这种优势也
14、是存在的。问题是硬件和软件 (在在这种情况下,MATLAB的解释程序已经有了改进,这个是可以 论证的)的改进可能使得一些程序不再适用。有时一个完全的矢量 命令需要很多的矩阵,这不适合计算机的主存储器。在这种情况 下,利用虚拟内存磁盘空间可能会使得运行减缓。所以我们必须知道所有可能的问题,但是最终是由这个问题的有效率的实证检验所 决定的。模拟套期保值策略利用函数生成样本路径,我们可以首先为普通的欧式看涨期权 比较套期保值策略。从第二章我们了解到期权价格基本上是一个 delta套期保值策略并且对看涨期权来说连续时间的套期保值策略 需要持有标的资产的大量。一个简单的策略就是止损策略【4】。这种方法是
15、说当期权价格在执行价格以上时我们需要一个轧 平头寸(即买入股票),并且当期权价格在执行价格以下时我们需 要一个裸型头寸(即卖出股票)。在实际操作中,当标的资产的价 格高于执行价格K时就买入股票,反之当股票价格低于执行价格K 时就卖出股票。这个方法很直观但是它用在连续时间分析中并不是 那么容易的【5】。尽管如此,我们可以评判这种方法在离散时间中 使用蒙特卡洛模拟时的作用。在离散时间中存在一个执行的问题就 是在执行价格我们并不能真正的买卖股票:当我们发现价格高于临 界值时我们买入得价格大大高于K,然而我们卖出股票的价格却是 比临界值稍微低一点点。所以即使不考虑同样会影响delta套期保 值的交易费
16、用,在使用止损策略时同样存在一个潜在的问题。在图中给出了用来估计止损策略的平均成本的一个MATLAB程序。该 函数包括了可能由函数AssetPaths生成的样本路径矩阵。值得注意 的是在这种情况下,在模拟中必须使用的是真正意识上的漂移率mu 而不是像期权价格那样。为了检验这些命令,需要注意这里的步数(时间间隔)等于路径矩阵的列数减一。如果我们要购买标的股 票,就需要把借入的资金考虑在内。但是一旦假定存在确定且连续 的利率,就不需要把借入的资金考虑在内,因为我们能够很容易的 记录交易中的现金流量并且把它们折现到t=0时刻,就已经预先把 DiscountFactors这些折现因素考虑在内了。使用一
17、个状态变量 Covered去判断执行价格上涨或下跌。既然在购买股票股票时现金 流对购买者来说是负的,而在出售股票时则是正的,那么期权“价 格”就通过平均现金流的变动趋势来评价。同样需要注意在到期日 的状况:如果到期日期权的价格高于执行价格,那么期权持有者就 会行权,我们也会得到的是本应该包含在现金流中的执行价格function P = StopLoss (SO, K, mu, sigma, r, T, Paths)NRepl, NSteps = size(Paths);NSteps = NSteps - 1; % tme number of stepsCost = zeros(NRepl, 1
18、);dt = T/NSteps;DiscountFactors = exp(r*(0:1:NSteps)*dt);for k=l:NReplCashFlows = zeros(NSteps+1,1);if (Paths (k, 1) >= K)Covered = 1;CashFlows (1) = -Paths (k, 1);elseCovered = 0;endfor t=2:NSteps+lif (Covered = 1) & (Paths (k, t) < K)% SellCovered = 0;CashFlows (t) = Paths (k, t);elseif
19、(Covered = 0) & (Paths (k, t) > K)% BuyCovered = 1;CashFlows (t) = -Paths (k, t);endendif Paths(k, NSteps + 1) >= K% Option is exercisedCashFlows(NSteps + 1)=.CashFlows(NSteps + 1) + K;endCost(k) = 一dot(DiscountFactors, CashFlows);endP = mean(Cost);图估计止损策略的平均成本的MATLAB程序既然我们知道有时候用矢量命令更方便,那么
20、在图中我们也用矢 它本质上是节点路径的转换复制,在节点处价格处于临界状态,上 涨或者下跌。价格上升的次数我们用UpTimes来记录,上升时现金 流对持有者是不利得;同理用DownTimes来记录下跌的次数。量命令表示出来了。这里主要的不同之处是使用了变:1=11OldPrice,function P = StopLossV(SO, K, mu, sigma, r, T, Paths)NRepl, NSteps = size(Paths);NSteps = NSteps - 1;Cost = zeros (NRepl, 1);CashFlows = zeros(NRepl, NSteps+1);
21、dt = T/NSteps;DiscountFactors = exp(r*(0:1:NSteps)*dt);OldPrice = zeros(NRepl, 1), Paths(:, 1:NSteps);UpTimes = find(OldPrice < K & Paths >= K);DownTimes = find(OldPrice >= K & Paths < K);CashFlows(UpTimes) = -Paths(UpTimes);CashFlows(DownTimes) = Paths(DownTimes);ExPaths = f ind
22、(Paths(:, NSteps+1) >= K);CashFlows(ExPaths, NSteps+1)=CashFlows(ExPaths, NSteps+1) + K;Cost = -CashFlows*DiscountFactorsf ;P = mean(Cost);图止损套期保值策略的矢量命令现在我们可以检验这两个程序是否是一致的,以及矢量是否存在优势。» SO = 50;» K » 50;>> mu M 0.1;» sigma » 0.4;» r « 0.05;» T 5/12;
23、187; NRepl “00000;» NSteps - 10;>> randn(9state1>0);» Paths=AssetPaths(SO fmu,sigma,T,NSteps,NRepl);» tic, StopLoss(SO,K,mu,sigma,r,TtPaths)» toeans -5.5780Elapsed time is 3.100619 seconds» tic, StopLossV(SO>K,mu,sigma,r,T,Paths) f toeans 5.5780Elapsed time is 0.
24、735455 seconds.不同于资产路径的生成在这里我们可以从矢量命令中看出优 势。使用矢量程序生成资产路径我们也可以在这里发现为什么正确 分配初始资产价格很可能很重要,正如我们在图最后一行命令中所 做的那样。在这种情况下期权的价格正好符合这个价格,那么我们 总是会购买初始股票;但是如果初始股票价格使我们则不够买股 票,并且一个在这个过程中一个明显的但被忽略的误差已经产生了 很严重的后果。function P = DeltaHedging(SO, K, mu, sigma, r, T, Paths)NRepl, NSteps = size(Paths);NSteps = NSteps -
25、1;Cost = zeros(NRepl, 1);CashFlows = zeros(1, NSteps+1);dt = T/NSteps;Di scountFactors = exp(r*(0:1:NSteps)*dt);for i=l:NReplPath = Paths(i,:);Position 二 0;Deltas = blsdelta(Path(l:NSteps), K, r, T- (0:NSteps- l)*dt, sigma);for j=l:NSteps;CashFlows(j) = (Position - Deltas(j)*Path(j);Position 二 Delta
26、s(j);end辻 Path(NSteps+1) > KCashFlows(NSteps+1) = K - (1-Position)*Path(NSteps+1);elseCashFlows (NSteps+1)=Position*Path(NSteps+1);endCost (i) = CashF 1 ows*DiscountFactors'endP = mean (Cost);图 估计delta套期保值策略现在我们应该比较止损策略的成本、delta套期保值策略的成本以及理论的期权价格。估计delta套期保值策略的平均成本的程序已经在图中给出了。这个程序跟止损策略有点类似,但它
27、不是向量。在样本路径每一个点上为了获得期权厶而调用函数blsdelta时使用的向量是我们所处理过的唯一的向量。注意必须用趋于到期 日的当前资产价格和当前时间来计算厶;我们使用金融工具 blsdelta函数。给赋一个新的值就会更新股票的当前 Position,也会产生没有被考虑在内的现金流。图给出了比较两个套期保值策略作用的脚本。运行这个脚本, 我们可以得到以下的结果:» HedgingScripttrue price - 4.732837cost of stop/loss (S) 22 4,826756cost of delta-hedging = 4.736975cost of s
28、top/loss (S) = 4.828571cost of delta-hedging = 4.735174%SO= 50;K = 52;mu =;sigma =;r =;T = 5/12;NRepl =10000;NSteps = 10;C = blsprice (SO, K, r, T, sigma);fprintf(1, ' %s %fn,, ' true price = ', C);%randn C state', 0);Paths=AssetPaths (SO, mu, sigma, T, NSteps, NRepl);SL = StopLossV
29、(SO, K, mu, sigma, r, T, Paths);fprintf(1, 'cost of stop/loss (S) = %fn', SL);DC = DeltaHedging(SO, K, mu, sigma, r, T, Paths);fprintf(1, 'cost of delta-hedging = %fn,, DC);% NSteps = 100;randn (* st ate , 0);Paths=AssetPaths (SO, mu, sigma, T, NSteps, NRepl);SL = StopLossV (SO, K, mu, s
30、igma, r, T, Paths);fprintf(1, 'cost of stop/loss (S) = %fn', SL);DC = DeltaHedging(SO, K, mu, sigma, r, T, Paths); fprintf(1, 'cost of delta-hedging = %fn,, DC);图比较套期保值策略的脚本在第一组运行中我们使用十个套期保值步骤,在第二组中使用100个套期保值步骤。我们发现止损策略不像delta套期保值成本 那样收敛于真实的期权价格。事实上,需要在不同的设置下进行这 种比较,并且也应该包括该套期保值成本的可变性。布朗
31、桥在前面几节中,我们依据收益与时间密切相关的自然过程生成 了一个资产路径。事实上,Wiener过程倾向于一些能够用不同的方 法生成样本路径的特殊性质。假如有一个左边和右边的终点分别为 和许的时间间隔且存在一个中间瞬时时间厂使得k < s < tr.o 在生成的标准路径中,我们能够很自然地生成Wiener过程:“(切,0(弘以及最终的”6)。利用所谓的布朗桥,我们可以在条 件砂叭仍及妬=W&)处生成“。可以看出在这两个值的条件 下叭S)是一个正常变量,其期望值为(tr 一 S)Wl +(S - tl)Wrtr 一 tl方差为(tr s)(s 切tr tl这是由多元正态分布的条
32、件分布的一些性质所决定的。以上这些公 式【6】都是很直观的,我们就不必要再去证明了。“的条件期 望值是通过他和3线性插值求出的;方差在两个端点和®附近 较小,在整个时间间隔中间确实最大值。利用布朗桥,我们可以通过二分法生成样本路径。假定"(0) = 0, 抽取样本W(T.再次抽取样本"(772)。假定炉(0)和叭7/2),抽样 ”“);假定妙(刃2)和”(巧,抽样用(37/4),等等。实际上,我 们可以用非均匀时间步骤生成我们想要的任何序列样本路径。有人 也许会问为什么如此复杂的结构却这么有用。至少有以下两点原 因:它可以通过分层使得方差减小。在多维中运用分层很困
33、难,但 是我们可以对资产价格终值进行分层,并且可以利用其中点对其进 行分层。然后利用布朗桥生成中间值。在低差异序列结合中布朗桥构造也很有用。在节中我们发现简 单低差异序列在高纬定义域内运用很困难,因为不能完全包含一些 维度。利用布朗桥,我们可以通过以样本点作为基点用高效率序列 去描述Wiener过程路径;然后我们用其他序列甚至是蒙特卡洛抽样 来填补路径。在图中给出了用布朗桥的方法生成标准Wiener过程路径的一个 MATLAB程,但是只有在二等分的时间间隔0, T(例如,时间间隔 的数量是2的幕)这种特殊例子中才适用;在更多通常的设置中可 能适用。在这种情况之下,我们可以把上面的公式简化为样本
34、1“(s);如果令,则有妙(初=驾竺+扌応z,其中,Z服从标准正态分布。在这个程序中假定时间间隔T的长度 和把程序分隔开来次间隔的NSteps数量,并且这个程序运行出一个 包含一条样本路径的向量。假定时间间隔次数为8 (必须是2的 幕)。那么我们就必须执行3次二等分。给定初始条件"(S)=。,必须先抽取样本可(如,即是跳过一 个长度为T的时间间隔,在这个程序中即为TJumpo因为我们输入 了 9个要素矢量值(从index 1开始,包括"&),为了输入新的 值,我们必须跳过矢量中的八个值。跳过的值的数量是记为然后我们开始第一个循环。在第一阶段,只能抽取样本“(切, 给
35、定W(5)和W&)。给定状态left = 1和right = IJump + 1 ,我们必 须生成一个新的值并且在状态° = IJuffiP/2 *中保存起来,i = IJump/2 +。在本例中即为4+1=5o在这里我们只生成了一个 值,并且把两个跳跃都除以2。在第二次迭代中,我们必须抽取样本*血),给定“(如和他仏),抽 取样本"("),给定啟和“(切。将会执行两次嵌套循环,且指数 left, right和i都会增加4。在第三次和最后一次迭代中生成了剩余四个值。我们要求读者通过这个程序逐步利用调试器来验证以上我们所 说的模式。在图我们也给出了验证所生成
36、的随机过程的边缘分布式正确的的脚本。期望值应该为0,标准差应该为时间的平方根:>> CheckBridgem a0.00250.00150.002800030sdev a0.50040.70770.86460.9964ans =0.50000.70710.86601.0000我们发现出去样本误差,这个结果看起来是正确的。给定一个 生成标准Wiener过程的方法,很容易就可以模拟出几何布朗运动。 在图中给出了这个程序,并且使用了一种类似于矢量方法中的 AssetPathsV.值得注意的一点是使用函数diff在对数资产价格中 生成矢量Increments.事实上在标准蒙特卡洛中我们用连
37、续递增生 成基本Wiener过程;利用布朗桥结构在不同的瞬时时间我们很直接 的得出了这个过程的不同值,且必须使用函数d辻f去取得相对差 异。在一些情况之下,diff与cumsum起相反的作用,从以下这个 例 子 中 我 们 可 以 看 出 来:» diff(1 5 7 10 20)ans =42310%randnC state", 0);NRepl = 100000;T = 1;NSteps = 4;WSamples = zeros(NRepl, 1+NSteps);for i=l:NReplWSamples(i, :) = WienerBridge(T, NSteps);
38、endm = mean (WSamples (:, 2 : (1+NSteps)sdev = sqrt(var(WSamples(:, 2:(1+NSteps) sqrt(l:NSteps). *T/NSteps)图 检验利用布朗桥为标准Wiener ii程生成的路径function SPaths = GBMHaItonBridge(SO, mu, sigma, T, NSteps, NRepl)if round(log2(NSteps) log2(NSteps)fprintf C ERROR in GBMBridge: NSteps must be a power of 2n );Tetur
39、nenddt = T/NSteps;nudt 二 *sigma"2)*dt;SPaths = zeros(NRepl, NSteps+1);W = W i enerHaltonBri dge(T, NSteps, NRepl);Increments = nudt + sigma*diff(W);LogPath = cumsum(log(SO) , Increments);SPaths = exp(LogPath);Spa ths (:, 1) = SO;图利用布朗桥为几何布朗运动抽样为交换期权定价本节的目的是为了表明蒙特卡洛模拟在多维期权中也很适 用。我们将会使用一个简单的例子来比较
40、估计值和为了达到这个目 的的精确值。我们给一个由两个资产组成的欧式交换期权定价,根 据风险中性原则,这个两个资产的价格可以用一个二维几何布朗运 动来建模:dU(t)+dV(t) = rV(t) dt + cryV(i) dWy(tfunction p = Exchange (VO, UO, sigmaV, sigmaU, rho, T, r) sigmahat = sqrt(sigmaU'2 + sigmaV'2 -2*rho* s i gmaU* s i gmaV);dl = (log(V0/U0) +*T*sigmahat"2)/(sigmahat*sqrt(T)
41、;d2 = dl - sigmahat*sqrt(T);p = V0*normcdf(dl) - U0*normcdf(d2);图分析交换期权定价的命令其中这两个Wiener过程有瞬时相关P。该期权在到期日T的 收益为我们可以发现该期权是差价期权的一个特殊 例子,差价期权的收益取决于两个资产价格之差(在节中我们讨论 过一个美式差价期权。)之所以称为“交换”是因为在到期日可以 用一个资产跟另一个资产互换。例如,如果持有资产U和一个交换 期权,在到期日的收益将是Ut + max(Vr 一 JTr, 0) = max(Vr,闪).对该期权而言,有一个由Black-Scholes公式直接演化而来的分析
42、 定价公式:di =丿元+处_ 2pcrvau%N(d,_UoN(d2) ln(%/S) + &2772 ay/T dx dVT我们给出这样的公式是因为这个收益有一个同质形式,在考虑了两 个价格【7】比V/U后这个同质形式可以简化相应的偏微分方程。在 图中给出了计算这个公式的MATLAB命令。在使用蒙特卡洛中我们唯一需要考虑的一点是如何为两个相关 的Wiener过程生成样本路径。在节中我们对多维正态分布使用过同 样的方法。我们应该为相关关系为卩且服从标准正态分布的两个变 量的相应协方差矩阵找到Cholesky因子:p 1 function p, ci=ExchangeMC (VO, U
43、O, sigmaV, sigmaU, rho, T, r, NRepl)epsl = randn(l, NRepl);eps2 = rho*epsl + sqrt(l-rho'2)*randn(1, NRepl);VT = V0*exp(r - *sigmaV*2)*T + sigmaV*sqrt(T)*epsl);UT = U0*exp(r - sigmaU'2)*T + sigmaU*sqrt(T)*eps2);DiscPayoff = exp(-r*T)*max(VT-UT, 0); p, s, ci二 normfit (DiscPayoff);图用蒙特卡洛模拟为交换期权
44、泄价的命令这个可以由简单乘法E = LL,得到验证,其中1 0p V1 p2因此,为了模拟二维相关Wiener过程,我们必须生成服从标准正态 分布的两个独立变量Z1和并且用5= Z162 = pZ +- 护 Z2来实现路径的生成。在本例中,我们只需要生成在到期日两个资产价格的联合样本。在图中给出了最终的MATLAB命令。同样可以检验我们的结果:» VO = 50;» UO = 60;» sigmaV = 0.3;>> sigznaU = 0.4;>> rho = 0.7;» T = 5/12;» r » 0.0
45、5;» Exchange (VO ,110,8 igmaV, sigmaU, rho,T,r)ans =0.8633» NRepl » 200000;» randn(1 state* t 0)>> p,ci = ExchangeMCCVOO,sigmaV,sigmaU,rho,T,r,NRepl) P =0.8552ci =0 84440.8660%function P, CI, NCrossed=DOPutMC (SO, K, r, T, sigma, Sb, NSteps, NRepl)% Generate asset pathsCall
46、, Put = blsprice (SO, K, r, T, sigma);Payoff = zeros(NRepl, 1);NCrossed = 0;for i=l:NReplPath=AssetPathsl (SO, r, sigma, T, NSteps, 1); crossed = any(Path <= Sb);if crossed = 0Payoff(i) = max(0, K - Path(NSteps+1);elsePayoff(i) = 0;NCrossed = NCrossed + 1;endendP, aux, CI = normfit( exp(-r*T) * P
47、ayoff);图离散障碍期权的基本形式的蒙特卡洛模拟为下跌敲岀看跌期权定价在本节中,我们将讨论一个弱路径依赖型期权的例子,即下跌碍。在节中我们发现了连续监控的分析公式是如何被调整去反映离 散监控的;我们将使用函数DOPut去检验蒙特卡洛模拟的结果。有 一点非常重要那就是在实际中的障碍期权可能对随机波动很敏感; 在为障碍期权定价时可以同时使用蒙特卡洛模拟和随机波动模型。基木形式蒙特卡洛在图中给出了基本形式蒙特卡洛模拟的执行命令。参数NSteps 用来表明障碍水平&应该检验多少次股票价格。当触及障碍期权时 收益设置为0。注意在期权有效期中即使障碍是交叉的我们仍然要 模拟整条路径;部分路径确
48、实是没有用的,但是这样做是为了可以 用AssetPaths和任何矢量因素来简化命令。函数DOPutMC也表明了 路径的NCrossed数量,在这条路径中障碍处于交叉状态。现在为距到期日还有两个月的期权定价,假定每个月包含30天且每 天都会检验障碍。障碍$ 为$40:» DOPut(50,50,0.1,2/12,0.4,40*exp(-0.5826*0.4*sqrt(1/12/30) ans -1.3629» randn( eed1,0)» P,CI,NCrossed=D0PutMC(50,50,0.1,2/12,0.4,40,60,50000)P =1.3600C
49、I =1.33931.3808NCrossed »7392条件蒙特卡洛从节中我们知道对立抽样在这个例子中也许并不十分有效,因为收益与相关的到期资产价格是非单调的。如同整条资产价格路径 一样这里的问题就变得越来越复杂。也可以用控制变量;类似普通 看跌期权控制变量的一个替代是可以通过B-S公式计算出来的,而 这个价格能够由Black-Scholes公式计算出来。不管怎样,两个期 权之间的相关关系如何是值得探讨的。因此,我们尝试一种不同的 方法,即在节中已经解释过的条件方差减小方法。为了这个目的, 我们将会发现计算下跌敲入看跌期权的价格凡i是很方便的。为这 个敲入期权定价其实是等同于为相应
50、的敲出期权定价,因为我们知假定我们把这个期权有效期用长度为况的时间间隔加以离散化(在 本例中即为一天),使得丁 =必乩并且考虑在天数 uM上的资产价格路径:S = SS2,Sm 以此路径为基础,我们估计期权价格,如下心二 e"Ep(S)(K-Sm)+,现在令尸为障碍第一次触及时的时间的阶数,按照惯例,如果在期 权有效期内障碍不交叉则令二M + 1。在时刻/毗期权生 效,并且从这以后这个期权就跟普通的看跌期权一样。所以在障碍 交叉【8】时的交叉时刻广二广毗和价格*尸条件下,我们可以 使用Black-Scholes公式来估计收益的期望值。因此,如果障碍在 到期日前交叉,有E Z(S)(K
51、 - SQ+ |一广)坊(Sj,K, T -广),其中Bp(Sj=K,T -广)是执行价格为K,初始标的价格为 以及存续期为T的普通看跌期权的Black-Scholes价格;指数项把折现考虑在内,从到期日折现到交叉时刻。给定一个模拟路 径S,则使用以下作为估计式:/(S)e-rrBp(Sr,7<,r-t*).不同于对立抽样,条件蒙特卡洛运用这个问题的特定的知识;我们 知道得越多,那么数值积分就会越少。在图给出了执行方差减小技 术的命令DOPutMCCondo值得注意的一点是,为了有效性,最好是 在用向量参数时只用一次函数blsprice,而不是每次复制的时候都 用一次。所以把股票价格记为
52、StockVals和把下跌敲入看跌期权已 经被激活的时刻记为Timeso如果障碍没有交叉,则估计式就为0。同样也要注意blsprice里的向量有NCrossed的元素,然而包含估计值的向量Payoff的大小却是NReplo» D0Put(50,52,O.1,2/12,0.4,30*exp(-0.5826*0.4*sqrt(1/12/30) ans =3.8645>> randn('seed,.0)» P,CI,NCrossed = DDPutMC(50,52,0.1,2/12,0.4,30,60,200000)P =3.8751CI =3.85453.8
53、957NCrossed =249>> randn(,seed,0)» P,CI,NCrossed « DOPutMCCond(50,52,0.1,2/12,0.4,30,60,200000)P -3.8651CI «3.86173.8684NCrossed «249%function Pdo, CI, NCrossed= DOPutMCCond (SO, K, r, T, sigma, Sb, NSteps, NRepl)dt = T/NSteps;Call, Put = blsprice (SO, K, r, T, sigma);% Gen
54、erate asset paths and payoffs for the down and in optionNCrossed = 0;Payoff = zeros(NRepl, 1);Times = zeros(NRepl, 1);StockVals = zeros(NRepl, 1);for i=l:NReplPath=AssetPathsl (SO, r, sigma, T, NSteps, 1);t crossed = min (find ( Path <= Sb );if not(isempty(tcrossed)NCrossed = NCrossed + 1;Times (
55、NCrossed) = (tcrossedT) * dt;StockVals(NCrossed) = Path(tcrossed);endendif (NCrossed > 0)Caux, Paux=blsprice(StockVals(1:NCrossed), K, r,.T-Times (1:NCrossed), sigma);Payoff(1:NCrossed) = exp(-r*Times(1:NCrossed) *Paux;endPdo, aux, CI = normfit(Put 一 Payoff);图离散障碍期权的条件蒙特卡洛模拟 3重要性抽样最后一个运行表明条件方差减小技
56、术也许的确有效,但是还是 不能太高兴。首先,一次运行必不能代表一切。更糟的是,在运行 了很多次复制(200, 000)后,只有在249次复制中障碍才交叉。 这就意味着大部分的复制是白费功夫的【9】。换句话说,利用这个 期权的数据,障碍交叉是不容易出现的。这就是一个重要抽样可以 弥补的典型例子(参见节)。如果改变资产价格的漂移那么障碍交叉就会变得更有可能 【10】。我们需要倒退一步去考虑一下为生成资产价格路径S我们67所做的事情。对每一个时间步骤,生成一个正态变JfU值为方差为仇,所有的变量都是相互独立的,并且生成的资产价格设置为logSj -logi =Zj令Z为正态变量的向量,并且令f (Z
57、)为它的联合密度。如果我们釆用修正期望值可以预测障碍交叉的次数将会更多。令g (Z)为正态变量的联合密度生成了这个修正期望值。然后我们必须找出一个修正项,似然 比,从而得出正确的重要抽样估计式。结合重要抽样和刚刚描述的 条件期望,有(如果障碍在到期日之前交叉):丁 (Z)/(S)(K-Sm)+ . F(zj/(如,今讥 g(z“ ,分)°¥?+二驴”(s)(k_sq+ j,Sj.加券川(S)(Kf)F,Sj 加鬻严乌(SjW).在上面这些表达式中我们应该注意Z和Z之间的区别;在给定的条 件信息下,第一组样本事实上都是真的数字组合并且可以从期望中 提了出来。在执行过程中,我们必须生成期望值为少-6)的正态变量以及用似然比乘以从样本角度看来是随机变量【11】的条件估 计。现在一个唯一公开的问题就是如何计算似然比。在附录B中我 们考虑了期望值为"协方差为另:的多元正态联合分布:在本例中,因为相互独立的随机变量,协方差矩阵式元素为 厅'兀的多元矩阵,并且期望值构成了密度函数f同时A_b构成6tf(zi,Zj" g(z八,)i >1一E (以 _ “尸 _(以一 “ + b)2k=l=exp (一 茹毎 &
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内部审计工作程序规范
- 物流公司车辆调度与排班管理制度
- 足球场天然草坪施工方案
- 爱人心理疏导课程设计
- 程序化广告强化设计课程设计
- 环境工程研发工程师面试要点解析
- 2026年中考英语时态专项练习真题及答案
- XX区实验初级中学2026年春季学期校长履职与校园工作实施方案
- 2025年国家空间科学中心质量管理处招聘备考题库及答案详解参考
- 第二章 相交线与平行线 单元检测卷(含答案)北师大版2025-2026学年七年级数学下册
- 2020年陕西省普通高校职业教育单独招生考试语文试卷
- EPC工程总承包管理控制措施
- 初中八年级生物上册期末考试卷及答案
- 2017年4月自考00139西方经济学试题及答案含解析
- 大学有机化学实验必做试题
- 西方园林史课件
- 初一分班英语试卷(含答案)
- 园林花卉中职PPT完整全套教学课件
- 提名辽宁自然科学奖
- GB/T 26955-2011金属材料焊缝破坏性试验焊缝宏观和微观检验
- 大学物理绪论
评论
0/150
提交评论