二叉树和三叉树的期权定价方法(共23页).doc
《二叉树和三叉树的期权定价方法(共23页).doc》由会员分享,可在线阅读,更多相关《二叉树和三叉树的期权定价方法(共23页).doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上第七章 期权定价的二叉树和三叉树方法 在这一章中,我们利用二叉树和三叉树方法为期权定价。在第2.1节中我们已经介绍了利用基础途径的二叉树方法解决期权价格不确定性的模型。二叉树方法依赖于对相关随机过程的离散化并利用计算和内存的结合以满足易于管理的要求。我们也在,我们必须把原来的单步格方法扩展到多步格方法,但是我们必须校对格使它能够反映出相关模型,且这个模型是连续时间、连续状态的随机微分方程。然后我们就可以推广到多步的二叉树格和三叉树格。 在7.1节中,我们从如何利用在离散概率分布的时刻下随机价格波动校准简单的二叉树格。从这点来看,弄清楚网格技术和蒙特卡洛模拟之间的联系是
2、非常重要的,而利用时刻匹配技术缩减方差可以看作一种快捷的抽样排序。然后我们讨论内存效率的实现是如何设计的,美式期权定价是7.2节的主题。同时,还是要注重它和其他技术方法的联系。现在我们要做的本质上是一个非常简单满足动态规划原则的程序,我们将在第10章程序中进一步拓展。在7.3节中,我们把上述方法推广到双标的资产的情形,虽然这是一个最简单的情形,但是我们可以从这个情形中看出内存控制是这一情形的基础。另一种一般化的代表是三叉树格方法,三叉树格方法可以作为一种更普遍的有限差分方法(具体将在,最后,我们在7.5节中具体讨论网格化方法的优势和劣势。期权定价的二叉树和三叉树格方法 图7.1 单时期二叉树格
3、7.1 二叉树定价方法 在,我们已经考虑过单步二叉树方法在无套利情况下的期权定价,这里我们为了方便直接利用图7.1。其主要思想是复制两个资产,一个是无风险资产,另一个是相关股票。利用这两项资产,我们可以通过它们的组合塑造任何收益率的资产。如果我们令和为任意两个价格的角标,我们可以看到期权的价格应该为则, (7.1)在公式7.1中和是标的资产在涨跌两种情况的期权价格,是风险中性前提下相关资产升值的概率。为了寻找一个更好的不确定性模型,我们可以增加分类的情况,复制期权收益,甚至我们可以使用更多的资产,或允许中间日期交易。第二种可能性更为实际,并且也是必不可少的,例如,对于在期权的存续期内可以随时执
4、行的美式期权来说。对其求极限,就会得到连续时间模型,并且其最后收敛于Blacksholes方程。当Blacksholes方程没有解析解的时候,我们必须采取一些离散化的途径,比如说可以通过蒙特卡洛模拟从而估计出风险中性条件下预期收益,或者建立一个自适应网格的有限差分方法去解决相应的PDE模型。就像我们在图7.2中展示的一样,多级二叉树格方法就是一种可以选择的离散化方法。我们也可以考虑利用树图,但是要注意使计算方法易于控制。二叉树格定价图7.2 新生成的二叉树图这里我们为了方便令。虽然这个不是必须的,但是在后面我们可以看到,这个假设令模型简化了很多即每上一步紧接着下一步都会得到相同的初始价格。正如
5、我们从图中看到的一样,我们仅用了有限个价格步。这个有可能就是实施该方法的优势。但是,我们该怎么恰当的确定和的值呢,我们应该利用近似相关的连续过程去校对网格。二叉树格方法应该是风险中性过程一个良好的相似。因此,我们应以这样的方式参数设置晶格,即保持着连续时间模型的一些基本属性,这一过程就叫做校准。从开始,经过一个小的时间步,从2.5节我们可以看到新价格是一个随机变量,且利用对数正态对数分布的特性,我们得到 (7.2)和 (7.3)一个合理的要求是这些离散的动态点必须和它们的时刻相匹配。要注意的是,我们只有两个个等式,却有3个参数,p,u和d,所以三个变量有一个为自由变量,我们令,这样做是为了计算
6、简便,但不是必须的。在网格点上,我们有:,和(7.2)联立得注意,是风险中性条件下的概率,它不依赖于真实浮动,为了和方差匹配,在晶格上我们看到从(7.3)中我们也可以看到把最后两个等式联立可得最终得到将带入最后一个等式的右侧,化简得最后我们得到这样的等式其中,利用,可以转化为二次方程:方程的一个跟为利用一阶条件拓展,只受的影响,我们可以简化表达式,对平方根近似化简可得因此但是对于二阶条件,我们对拓展,最终获得参数 , , , (7.4)这就是著名的CRR公示这里强调一下:这个方法以及文献中所用的参数都不是唯一的,例如我们可以取,经计算可得:, , 这就是杰诺-拉德参数,此外,我们一直在努力结束
7、涉及计算以及线性方程组的计算,通过对数转换的方法,我们尽量的避免这些困难。在以后,我们都将采用这个方法。 假设无风险利率和波动是时间常数,我们所得的结果适用于整个晶格参数,为一个期权定价,我们需要对标的资产制定一个网格,然后从以往的时间倒推。事实上,期权价格在到期日的时候已经知道了,那时已经给出了期权的收益。因此,我们利用方程(7.1)按每一个时间步倒推递归,直到到达我们的初始节点。二叉树格方法在欧式看涨期权得到最佳的应用。例7.1假设我们假设为一个欧式看涨期权定价,存续期为5个月,利用B-S模型,我们知道结果是:如果我们想用二叉树格方法逼近结果的话,我们首先就要定义格参数,假定每个时间步为一
8、个月,然后对股票价格产生的格和选项值显示在图7.3,在晶格的最右面是期权的价格,为了便于计算,让我们考虑如何从最后一层至第二层逐层倒推:在递归后,我们看到,由此计算出的期权价格大约为6.36,结果不太接近确切价格,一个更好的改进近似就是缩小时间步长。为了更好的在MATLAB中实现这一方法,我们需要一个向前倒推的代数式。令为在节点的期权的价值,其中j为第j个时期 ,i表示为在j时期内上升了i。我们利用倒推思想,N是我们考虑的时间步,因此总共有N+1格,即整个期权存续期。在这样的定义下,晶格点的标的资产价格即为,在存续期内,我们有: , 时间逆推(下降时间标j),我们得到 (7.5)这些工作在MA
9、TLAB中生成非常简单,代码在图7.4给出,唯一要注意的一点是,矩阵索引在MATLAB中要从一开始,这需要一个微小的调整。7.3 欧式看涨期权的二叉树格function price, lattice = LatticeEurCall(SO,K,r,T,sigma,N) deltaT = T/N; u=exp(sigma * sqrt (deltaT) ; d=l/u; p=(exp(r*deltaT) - d)/(u-d) ; lattice = zeros(N+l,N+l); for i=O:N end for j=N-1 : -1 : 0 for i=O:j lattice(i+l,N+l
10、)=max(O , SO*(u-i)*(d-(N-i) - K); lattice(i+l,j+l) = exp(-r*deltaT) * . (p * lattice(i+2,j+2) + (1-p) * lattice(i+l,j+2); end end price = lattice(1,l) ;图7.4 MATLAB代码为欧式看涨期权定价欧式看涨期权接收到通常我们所定义的参数和在此情况下的时间步N,通过增加最后一个参数,我们得到了更为精确的价格(同一计算时间的增加)。 6.3595 6.1140更有趣的是探讨二叉树方法计算的价格如何收敛于正确价格的。我们可以通过图7.5的代码和图7.6
11、的结果输出来看出。在这种情况下,我们看到随着时间步的增加的震荡情况。我们刚才讨论的执行结果也有一些缺陷。首先,它使用的是一个大型的矩阵存储格,但是其中近一半为空,我们把返回的整个存储格作为一个输出参数,这个也许对与之相关的图7.3非常有用,但是可能在实际运用中毫无作用,实际上为我们只需要连续的两个存储层存储所需资料就能有所改善。在内循环中,我们用贴现系数乘以时间的风险中性概率,我们可以通过循环外计算节省时间。我们将努力在7.3节中进行改进,在下一节中,我们将把二叉树方法运用到其它非标准型期权定价中。C0mpLatticeBLS.m SO = 50; K = 50; r = 0.1; sigma
12、 = 0.4; T = 5/12; N=50 ; BlsC = blsprice (SO,K,r ,T, Sigma) ; LatticeC = zeros(1,N); for i=(l:N) end plot(l:N, ones(l,N)*BlsC); hold on; plot(l:N, LatticeC); Latt iceC (i) = Latt iceEurCal1 (SO, K , r , T, sigma, i)图7.5 脚本检查减少的二叉树格的精确性图7.6 二叉树方法中精确价格和增加了时间步后相似价格的差距7.1.2 把俩者结合起来,为后付费期权定价在这里,我们无红利股票的付
13、费后期权 这个例子是建立在(参考文献5 第13章 练习11)。后付费期权的特点是预先不支付担保金,当合约成立以后,将在以后支付。如果期权的存期满后,则期权必须执行,并归还担保金,否则期权就毫无价值可言,因为没有担保金。请注意,期权持有者的净盈利可以是负数,当期权的收益小于担保金的时候就会出现净盈利为负。在无套利的情况下,如果净回报总是为负,我们不能拥有一份在时刻价值为0的合约,我们怎么样才能找到公平的担保金价值呢?给出一个担保金为,则回报是:对于每一个给定的价格,我们都可以利用二叉树方法算出期权价格,现在我们必须寻找到一个值,使得在风险中性的前提下,于相关的期望回报为0:注意这里的贴现因子,因
14、为利率是恒定的,因此贴现因子并没有任何作用。为了解决这个含的方程,我们对晶格利用二分法解决非线性方程组(见,我们建立一个函数对给定条件下的期望进行估计;MATLAB代码在图7.7中给出。让我们考虑一个标的资产为股票的期权,股票的价格为12美元,波动率为20%;无风险利率为10%;执行价格为14美元;存续期为10个月。我们用二叉树方法为其定价,取时间步长为一个月,所以总共有10个时间步。当给定的时候,我们可以建立匿名函数返回贴现后的回报。然后我们利用二分法,以fzero为出发点进行探讨。f = (PI Lll(P,12,14,0.1, 0.2, 10/12, 10) f = (P) Lll(P,
15、l2,14,0.1, 0.2, 10/12, 10) fzero(f ,2) ans 2.0432exercise 11 chapter 13 from Luenberger, Investment Science % exercise 11, chapter 13, from Luenberger, Investment Sciencefunction ExpPayoff = L11(premium,S0,K,r,sigma,T,N)deltaT = T/N;u=exp(sigma * sqrt(deltaT);d=1/u;p=(exp(r*deltaT) - d)/(u-d);lattic
16、e = zeros(N+1,N+1);for i=0:N if (S0*(ui)*(d(N-i) = K) lattice(i+1,N+1)=S0*(ui)*(d(N-i) - K - premium; endendfor j=N-1:-1:0 for i=0:j lattice(i+1,j+1) = p * lattice(i+2,j+2) + (1-p) * lattice(i+1,j+2); endendExpPayoff = lattice(1,1);图7.7 用二叉树方法为后支付期权定价的MATLAB代码7.1.3 二叉树方法的一个执行改进我们原来使用过的改进后的二叉树方法现在也可以
17、改进了(从CPU运行时间和内存要求上)。首先,循环中没有必要重复计算贴现的概率,我们可以乘以贴现因子和概率一次来计算。此外,我们可以看到,随着对二叉树晶格的校准,即令ud=1,我们可以使用向量而不是二维矩阵来记忆资产价格从而节约存储。例如在图7.3中,我们看到只有11个不同的值用于标的资产价格。用此种格校准,如果有N个时间步,则我们就有了2N+1个不同的价格。因此,他们可以存储在单一列中,可以节省相当大的存储空间。如果我们需要1000步来准确估计,那么1000*1000的矩阵就和2001项的向量有了很大的差距。一个可行性方案存储价格的方法可以见图7.8。这些数字如图所示是在矢量的位置。1是存储
18、中的最小值,造成步骤序列是下跌序列。我们可以看到奇数项对应的是最后一层,偶数项对应的是倒数第二层。在格上是奇数还是偶数取决于时间步。图7.8 节省存储的二叉树格 同样方法可以用来存储期权价值。原则上,我们应该使用俩个向量对应时间的连续俩个层。但是,我们可以利用让偶数的元素一层,奇数的元素另一层,这样就可以使用含有2N+1个元素的向量了。由此产生的代码可以看图7.9。下面是我们上述工作的一些评论。 *我们预先计算的,包括贴现概率等等的数量不变(在代码第一部分)。 *当我们编写标的资产价格的载体SVals时,我们从最小的元素开始,即;然后乘以u;为了更好的准确性,最好把存到中间元素SVals(N+
19、1)中,然后继续正推或者倒推。 *注意的是我们在与调用值(通过索引)计算的时候分为2步,其数额为交替奇数和偶数索引值连续对应层。 *当到期时间为T的时候,我们只须考虑CVals数组中的2(N-T)+1个核心元素。期权的价格是储存在格中的,它对应的是与之相对应的格位置。我们可以检查一下一个计算上更有效率的版本。blsprice(50,50,0.1,5/12,0.4) ans = function price = SmartEurLattice(S0,K,r,T,sigma,N)% Precompute invariant quantitiesdeltaT = T/N;u=exp(sigma *
20、sqrt(deltaT);d=1/u;p=(exp(r*deltaT) - d)/(u-d);discount = exp(-r*deltaT);p_u = discount*p;p_d = discount*(1-p);% set up S valuesSVals = zeros(2*N+1,1);SVals(1) = S0*dN;for i=2:2*N+1 SVals(i) = u*SVals(i-1);end% set up terminal CALL valuesCVals = zeros(2*N+1,1);for i=1:2:2*N+1 CVals(i) = max(SVals(i)
21、-K,0);end% work backwardsfor tau=1:N for i= (tau+1):2:(2*N+1-tau) CVals(i) = p_u*CVals(i+1) + p_d*CVals(i-1); endendprice = CVals(N+1);SVals(i) = u*SVals(i-l); CVals(i) = max(SVals(i)-K,O) ; for i= (tau+l):2: (2*N+l-tau) end CVals(i) = p-u*CVals(i+l) + p-d*CVals(i-l) ; end price = CVals(N+l);6.1165
22、tic,LatticeEurCa11(50,50,0.1,5/12,0.4,2000,toc)ans = 6.1159 Elapsed time is 0. seconds. tic,SmartEurLattice(50,50,0.1,5/12,0.4,2000),toc ans = 6.1159 Elapsed time is 0. seconds.图7.9 欧式看涨期权二叉树方法的改进代码 我们可以通过矢量代码寻求进一步的改善,或者采取不同的方法。我们不会追求这样的方法以避免模糊的代码,但是我们把握容易的方法以寻求进一步改进。也许在节省CPU处理时间上效果并不明显,但是当处理多维期权定价的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 三叉 期权 定价 方法 23
限制150内