第七章二叉树和三叉树的期权定价方法

上传人:痛*** 文档编号:124973400 上传时间:2022-07-25 格式:DOC 页数:31 大小:518KB
收藏 版权申诉 举报 下载
第七章二叉树和三叉树的期权定价方法_第1页
第1页 / 共31页
第七章二叉树和三叉树的期权定价方法_第2页
第2页 / 共31页
第七章二叉树和三叉树的期权定价方法_第3页
第3页 / 共31页
资源描述:

《第七章二叉树和三叉树的期权定价方法》由会员分享,可在线阅读,更多相关《第七章二叉树和三叉树的期权定价方法(31页珍藏版)》请在装配图网上搜索。

1、第七章 期权定价的二叉树和三叉树方法 在这一章中,我们利用二叉树和三叉树方法为期权定价。在第2.1节中我们已经介绍了利用基础途径的二叉树方法解决期权价格不确定性的模型。二叉树方法依赖于对相关随机过程的离散化并利用计算和内存的结合以满足易于管理的要求。我们也在2.6.1节中看到在一个单步二叉树格定价中利用无套利进行期权定价更为简便。为了获得一个实用的定价程序,我们必须把原来的单步格方法扩展到多步格方法,但是我们必须校对格使它能够反映出相关模型,且这个模型是连续时间、连续状态的随机微分方程。然后我们就可以推广到多步的二叉树格和三叉树格。 在7.1节中,我们从如何利用在离散概率分布的时刻下随机价格波

2、动校准简单的二叉树格。从这点来看,弄清楚网格技术和蒙特卡洛模拟之间的联系是非常重要的,而利用时刻匹配技术缩减方差可以看作一种快捷的抽样排序。然后我们讨论内存效率的实现是如何设计的,美式期权定价是7.2节的主题。同时,还是要注重它和其他技术方法的联系。现在我们要做的本质上是一个非常简单满足动态规划原则的程序,我们将在第10章程序中进一步拓展。在7.3节中,我们把上述方法推广到双标的资产的情形,虽然这是一个最简单的情形,但是我们可以从这个情形中看出内存控制是这一情形的基础。另一种一般化的代表是三叉树格方法,三叉树格方法可以作为一种更普遍的有限差分方法(具体将在9.2.1中叙述),最后,我们在7.5

3、节中具体讨论网格化方法的优势和劣势。期权定价的二叉树和三叉树格方法 图7.1 单时期二叉树格7.1 二叉树定价方法 在2.6.1节中,我们已经考虑过单步二叉树方法在无套利情况下的期权定价,这里我们为了方便直接利用图7.1。其主要思想是复制两个资产,一个是无风险资产,另一个是相关股票。利用这两项资产,我们可以通过它们的组合塑造任何收益率的资产。如果我们令和为任意两个价格的角标,我们可以看到期权的价格应该为则, (7.1)在公式7.1中和是标的资产在涨跌两种情况的期权价格,是风险中性前提下相关资产升值的概率。为了寻找一个更好的不确定性模型,我们可以增加分类的情况,复制期权收益,甚至我们可以使用更多

4、的资产,或允许中间日期交易。第二种可能性更为实际,并且也是必不可少的,例如,对于在期权的存续期内可以随时执行的美式期权来说。对其求极限,就会得到连续时间模型,并且其最后收敛于Blacksholes方程。当Blacksholes方程没有解析解的时候,我们必须采取一些离散化的途径,比如说可以通过蒙特卡洛模拟从而估计出风险中性条件下预期收益,或者建立一个自适应网格的有限差分方法去解决相应的PDE模型。就像我们在图7.2中展示的一样,多级二叉树格方法就是一种可以选择的离散化方法。我们也可以考虑利用树图,但是要注意使计算方法易于控制。二叉树格定价图7.2 新生成的二叉树图这里我们为了方便令。虽然这个不是

5、必须的,但是在后面我们可以看到,这个假设令模型简化了很多即每上一步紧接着下一步都会得到相同的初始价格。正如我们从图中看到的一样,我们仅用了有限个价格步。这个有可能就是实施该方法的优势。但是,我们该怎么恰当的确定和的值呢,我们应该利用近似相关的连续过程去校对网格。7.1.1二叉树格的校对二叉树格方法应该是风险中性过程一个良好的相似。因此,我们应以这样的方式参数设置晶格,即保持着连续时间模型的一些基本属性,这一过程就叫做校准。从开始,经过一个小的时间步,从2.5节我们可以看到新价格是一个随机变量,且利用对数正态对数分布的特性,我们得到 (7.2)和 (7.3)一个合理的要求是这些离散的动态点必须和

6、它们的时刻相匹配。要注意的是,我们只有两个个等式,却有3个参数,p,u和d,所以三个变量有一个为自由变量,我们令,这样做是为了计算简便,但不是必须的。在网格点上,我们有:,和(7.2)联立得 注意,是风险中性条件下的概率,它不依赖于真实浮动,为了和方差匹配,在晶格上我们看到从(7.3)中我们也可以看到把最后两个等式联立可得最终得到将带入最后一个等式的右侧,化简得最后我们得到这样的等式其中,利用,可以转化为二次方程:方程的一个跟为利用一阶条件拓展,只受的影响,我们可以简化表达式,对平方根近似化简可得因此但是对于二阶条件,我们对拓展,最终获得参数 , , , (7.4)这就是著名的CRR公示这里强

7、调一下:这个方法以及文献中所用的参数都不是唯一的,例如我们可以取,经计算可得:, , 这就是杰诺-拉德参数,此外,我们一直在努力结束涉及计算以及线性方程组的计算,通过对数转换的方法,我们尽量的避免这些困难。在以后,我们都将采用这个方法。 假设无风险利率和波动是时间常数,我们所得的结果适用于整个晶格参数,为一个期权定价,我们需要对标的资产制定一个网格,然后从以往的时间倒推。事实上,期权价格在到期日的时候已经知道了,那时已经给出了期权的收益。因此,我们利用方程(7.1)按每一个时间步倒推递归,直到到达我们的初始节点。二叉树格方法在欧式看涨期权得到最佳的应用。例7.1假设我们假设为一个欧式看涨期权定

8、价,存续期为5个月,利用B-S模型,我们知道结果是:如果我们想用二叉树格方法逼近结果的话,我们首先就要定义格参数,假定每个时间步为一个月,然后对股票价格产生的格和选项值显示在图7.3,在晶格的最右面是期权的价格,为了便于计算,让我们考虑如何从最后一层至第二层逐层倒推:在递归后,我们看到,由此计算出的期权价格大约为6.36,结果不太接近确切价格,一个更好的改进近似就是缩小时间步长。为了更好的在MATLAB中实现这一方法,我们需要一个向前倒推的代数式。令为在节点的期权的价值,其中j为第j个时期 ,i表示为在j时期内上升了i。我们利用倒推思想,N是我们考虑的时间步,因此总共有N+1格,即整个期权存续

9、期。在这样的定义下,晶格点的标的资产价格即为,在存续期内,我们有: , 时间逆推(下降时间标j),我们得到 (7.5)这些工作在MATLAB中生成非常简单,代码在图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

10、+l,N+l); for i=O:N end for j=N-1 : -1 : 0 for i=O:j lattice(i+l,N+l)=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,通过增加最后一个参数,我们得到了更为精确的价格(同一计

11、算时间的增加)。 6.3595 6.1140更有趣的是探讨二叉树方法计算的价格如何收敛于正确价格的。我们可以通过图7.5的代码和图7.6的结果输出来看出。在这种情况下,我们看到随着时间步的增加的震荡情况。我们刚才讨论的执行结果也有一些缺陷。首先,它使用的是一个大型的矩阵存储格,但是其中近一半为空,我们把返回的整个存储格作为一个输出参数,这个也许对与之相关的图7.3非常有用,但是可能在实际运用中毫无作用,实际上为我们只需要连续的两个存储层存储所需资料就能有所改善。在内循环中,我们用贴现系数乘以时间的风险中性概率,我们可以通过循环外计算节省时间。我们将努力在7.3节中进行改进,在下一节中,我们将把

12、二叉树方法运用到其它非标准型期权定价中。 C0mpLatticeBLS.m SO = 50; K = 50; r = 0.1; sigma = 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 脚本检查减少的二叉树

13、格的精确性图7.6 二叉树方法中精确价格和增加了时间步后相似价格的差距7.1.2 把俩者结合起来,为后付费期权定价在这里,我们无红利股票的付费后期权 这个例子是建立在(参考文献5 第13章 练习11)。后付费期权的特点是预先不支付担保金,当合约成立以后,将在以后支付。如果期权的存期满后,则期权必须执行,并归还担保金,否则期权就毫无价值可言,因为没有担保金。请注意,期权持有者的净盈利可以是负数,当期权的收益小于担保金的时候就会出现净盈利为负。在无套利的情况下,如果净回报总是为负,我们不能拥有一份在时刻价值为0的合约,我们怎么样才能找到公平的担保金价值呢?给出一个担保金为,则回报是:对于每一个给定

14、的价格,我们都可以利用二叉树方法算出期权价格,现在我们必须寻找到一个值,使得在风险中性的前提下,于相关的期望回报为0:注意这里的贴现因子,因为利率是恒定的,因此贴现因子并没有任何作用。为了解决这个含的方程,我们对晶格利用二分法解决非线性方程组(见3.4.1节)。首先,我们建立一个函数对给定条件下的期望进行估计;MATLAB代码在图7.7中给出。让我们考虑一个标的资产为股票的期权,股票的价格为12美元,波动率为20%;无风险利率为10%;执行价格为14美元;存续期为10个月。我们用二叉树方法为其定价,取时间步长为一个月,所以总共有10个时间步。当给定的时候,我们可以建立匿名函数返回贴现后的回报。

15、然后我们利用二分法,以fzero为出发点进行探讨。f = (PI Lll(P,12,14,0.1, 0.2, 10/12, 10) f = (P) Lll(P,l2,14,0.1, 0.2, 10/12, 10) fzero(f ,2) ans 2.0432 exercise 11 chapter 13 from Luenberger, Investment Science % exercise 11, chapter 13, from Luenberger, Investment Sciencefunction ExpPayoff = L11(premium,S0,K,r,sigma,T,N

16、)deltaT = T/N;u=exp(sigma * sqrt(deltaT);d=1/u;p=(exp(r*deltaT) - d)/(u-d);lattice = 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 =

17、lattice(1,1); 图7.7 用二叉树方法为后支付期权定价的MATLAB代码7.1.3 二叉树方法的一个执行改进我们原来使用过的改进后的二叉树方法现在也可以改进了(从CPU运行时间和内存要求上)。首先,循环中没有必要重复计算贴现的概率,我们可以乘以贴现因子和概率一次来计算。此外,我们可以看到,随着对二叉树晶格的校准,即令ud=1,我们可以使用向量而不是二维矩阵来记忆资产价格从而节约存储。例如在图7.3中,我们看到只有11个不同的值用于标的资产价格。用此种格校准,如果有N个时间步,则我们就有了2N+1个不同的价格。因此,他们可以存储在单一列中,可以节省相当大的存储空间。如果我们需要100

18、0步来准确估计,那么1000*1000的矩阵就和2001项的向量有了很大的差距。一个可行性方案存储价格的方法可以见图7.8。这些数字如图所示是在矢量的位置。1是存储中的最小值,造成步骤序列是下跌序列。我们可以看到奇数项对应的是最后一层,偶数项对应的是倒数第二层。在格上是奇数还是偶数取决于时间步。图7.8 节省存储的二叉树格 同样方法可以用来存储期权价值。原则上,我们应该使用俩个向量对应时间的连续俩个层。但是,我们可以利用让偶数的元素一层,奇数的元素另一层,这样就可以使用含有2N+1个元素的向量了。由此产生的代码可以看图7.9。下面是我们上述工作的一些评论。 *我们预先计算的,包括贴现概率等等的

19、数量不变(在代码第一部分)。 *当我们编写标的资产价格的载体SVals时,我们从最小的元素开始,即;然后乘以u;为了更好的准确性,最好把存到中间元素SVals(N+1)中,然后继续正推或者倒推。 *注意的是我们在与调用值(通过索引)计算的时候分为2步,其数额为交替奇数和偶数索引值连续对应层。 *当到期时间为T的时候,我们只须考虑CVals数组中的2(N-T)+1个核心元素。期权的价格是储存在格中的,它对应的是与之相对应的格位置。我们可以检查一下一个计算上更有效率的版本。 blsprice(50,50,0.1,5/12,0.4) ans = function price = SmartEurLa

20、ttice(S0,K,r,T,sigma,N)% Precompute invariant quantitiesdeltaT = T/N;u=exp(sigma * 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

21、 terminal CALL valuesCVals = zeros(2*N+1,1);for i=1:2:2*N+1 CVals(i) = max(SVals(i)-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-t

22、au) end CVals(i) = p-u*CVals(i+l) + p-d*CVals(i-l) ; end price = CVals(N+l);6.1165 tic,LatticeEurCa11(50,50,0.1,5/12,0.4,2000,toc)ans = 6.1159 Elapsed time is 0.262408 seconds. tic,SmartEurLattice(50,50,0.1,5/12,0.4,2000),toc ans = 6.1159 Elapsed time is 0.069647 seconds. 图7.9 欧式看涨期权二叉树方法的改进代码 我们可以通

23、过矢量代码寻求进一步的改善,或者采取不同的方法。我们不会追求这样的方法以避免模糊的代码,但是我们把握容易的方法以寻求进一步改进。也许在节省CPU处理时间上效果并不明显,但是当处理多维期权定价的时候对内存的节省就显得非常必要。7.2 用二叉树方法对美式期权定价 利用二叉树技术为美式期权定价我们已经在上一节讲过,是相当简单的。唯一个关键点就是如何解释早期的运动 相对应的看涨期权我们不敢兴趣,因为我们可以证明,美式看涨期权提前执行时没有意义的,除非在期权存续期内存在股息支付。在这里,我们解决的是标的资产为无红利支付股票的普通美式看跌期权的定价问题。考虑在最后一个晶格层的点(1,N)。如果期权获利,这

24、显然是最佳的执行点。因此,在最后一层我们有:是该节点的标的资产价格。现在我们考虑一个在倒数第二层的点。如果期权没有获利即,我们就不执行。如果期权已经盈利,我们就想知道是现在立即执行好,还是将来在某个机会执行获取更大的收益更好。换句话说,我们必须解决一个最优停止问题,在每个时间步上,我们必须观察这个动态系统,从而决定是否应该立即执行,以保持现有收益,或者继续存有期权。解决这个问题有个简单的方法,就是通过比较直接的回报(期权的内在价值)和继续持有的价值。如果我们继续持有资产,我们拥有的资产价值为:(备注:相应的看涨期权我们不感兴趣,因为可以证明,提前执行是从来没有最优选择的,除非股息在期权的存续期

25、支付。)这里和都是风险中性概率,我们应该执行,如果内在价值大于继续持有的价值。因此期权在从第二到最后一层节点上的价值为同样的事情会在任意层的递归过程中发生。这意味着,我们应该从最后一层开始,在那里期权的价值就是期权的收益。然后我们应该对时间倒推通过对通常期望稍加修改的方程(7.5) (7.6)这种想法看似简单,但它是一个所谓动态规划原则的普遍运用。我们将会在第10章看到动态规划原则在理论上多么的有效,但是有时却由于”维数灾”而很难运用。在二叉树格中,我们使用了一个对相关随机过程的简单离散化,动态规划看起来微不足道。事实上,我们的推理有些误导,因为我们已经采取了期权持有的观点是愿意行使其期权的最

26、佳状态。但我们要问为什么我们只注重预期价值,而忽略风险厌恶。一个严谨的理由其实没那么简单,它应该包括无套利理论和期权卖方应该也关系他最糟糕的情况,就是期权持有人最优化执行他的期权。撇开理论的问题,其实很容易采用我们已经做出来的欧式看涨期权和美式看跌期权。结果代码显示在图7.10.我们以不同的方式轻微初始化晶格,但唯一显著的变化就是后面的时间步长,我们比较了持有价值和内在价值。金融工具箱为我们提供了一个binprice函数,利用该函数可以给普通美式看涨和看跌期权定价且允许连续红利。我们可以通过比较美式看跌期权格定价和binprice去检验我们的实现: SO = 50; K = 50; r = 0

27、 . 0 5 ; T = 5/12; sigma = 0.4; N = 1000; price = AmPut Lattice (SO, K, r , T , sigma, N) price = p, 01 = binprice(SO,K,r,T,T/N,sigma,O); 4.6739 416 OPTION PRICING BY BINOMIAL AND TRINOMIAL LATTICES function price = AmPutLattice(SO,K,r,T,sigma,N) % Precompute invariant quantities deltaT = T/N; u=exp

28、(sigma * sqrt(de1taT) ; d=l/u; p=(exp(r*deltaT) - d)/(u-d) ; discount = exp(-r*deltaT); p-u = discount*p; p-d = discount*(l-p) ; % set up S values SVals = zeros (2*N+1,1 ; SVals(N+l) = SO; for i=l:N SVals(N+l+i) = u*SVals(N+i); SVals (N+l-i) = d*SVals (N+2-i) ; end % set up terminal values PVals = z

29、eros (2*N+1,1) ; for i=1:2:2*N+1 end % work backwards for tau=l:N PVals(i) = max(K-SVals(i) ,O) ; for i= (tau+l) :2: (2*N+l-tau) hold = p-u*PVals(i+l) + p-d*PVals(i-l); PVals(i) = max(hold, K-SVals(i); end end price = PVals(N+l); 图7.10 二叉树方法为美式看跌期权定价的matlab代码。 o ( l , l ) ans = 4.6739该函数binprice需要一个

30、标志,表明如果选择看跌(标志设置为0)或选择看涨(标志设置为1)。此条件为上面条件的一个快速反应。这里计算函数binprice需要期权的存续期T和时间步长,令。我们忽略了可用于分红比例的期权参数。输出的binprice是俩个价格,一个是标的资产的价格,一个是期权的价值;重要的一点是当时间步很小的时候,利用分号控制屏幕上的输出。7.3 利用二叉树方法为双标的期权定价为了说明晶格技术扩展到多维期权,这里我们考虑两种资产的美式利差期权。这种期权的回报为:基本方法可以推广到许多种期权,但是不包括强依赖路径的期权。为了进一步推广,我们也考虑持续股息收益率和。其实我们并没有对问题进行很大的改变,因为我们只

31、是调整了风险中性的动态,这里我们关于它的方程(2.42)。这里两个维纳过程是相互关联的,且(见2.5.5节)为了避免我们在校准过程中涉及到非线性问题所遇到的困难,我们对资产价格进行对数化处理。令 ,利用伊藤引理,我们得到两个随机微分方程:这里现在,作为典型的二叉树格,我们假设这两个资产上升或者下降在价格方面的对数数额为,校准格。我们对一 ,二阶的距进行匹配。这两只股票可能上行或者低走。因此每个节点有4个数值和4个概率,。我们首先需要一个关于增量预期的匹配条件:这里我们要区别随机变量和他们的现值。然后我们需要一个相似的二阶条件: ,这里我们用到了常用恒等式,我们也忽略了高阶无穷小的。当概率趋近于

32、1的时候,这些方程将被极大的简化:, 我们还应该说明协方差,以及与它等价的交叉向量:现在我们对4个未知概率有4个等式:这些方程可以通过反转矩阵解决,或者通过适当的线性方程组组合。得出:这些条件有个直观的解释。就是当相对波动较大的时候,与其正相关的概率也跳跃较大。例如在向上浮动,向下浮动的概率下,即成为一个负标志(即向上浮动越大,就越向下跳),并呈负相关关系,使得这一联动成为可能,类似的考虑也适合于p, d ,u 。即当p,d,u越小,正相关的浮动就越大。二叉树格方法的需要仔细的内存管理控制,因为我们不能随意的存储一个多维矩阵。由于上线俩个资产的浮动的绝对值是相同的,我们就可以利用我在已在7.1

33、.3中相同的方法。由此产生的代码将显示在图7.1.1中(参数不言自明)。首先我们计算不变的量。注意,在二叉树方法中,我们运用的是价格,不是价格的对数。因此,上升的价格为:这里。概率的百分号在主循环之外。两个相关资产的价值存储在两个向量S1val和S2vals,这个定价的方法完全相似于对普通期权的定价。期权的价格将存储于二叉树格矩阵中,这个矩阵经过期权收益的初始化,这里令i指资产1,j指资产2。我们可以用两个连续的一次矩阵,因此奇数层和偶数层都是连续层且交替使用。因为这是一个美式期权,我们在风险中性的前提下计算出来的继续持有的价值要和与期权的内在价值进行比较。为了检测执行的具体情况,我们用下面这

34、个例子 该例子引用于(藏考文献一 p47-51) s10 = 100; s20 = 100; K = 1; r = 0 . 0 6 ; sigmal = 0.2; sigma2 = 0.3; rho = 0.5; q l = 0.03; q2 = 0.04; AmSpreadLattice (S10 ,S20 ,K,r ,T, sigmal , sigma2,rho ,ql .q2,N) T = 1; N = 3 ; ans = 10.0448 function price = AmSpreadLattice 610, S20 ,K ,r ,T, sigma1 , sigma2 ,rho ,q

35、l, q2, N) 1 Precompute invariant quantities deltaT = T/N; nu1 = r - ql - 0.5*sigmal-2; nu2 = r - q2 - 0.5*sigma2-2; ul = exp(sigmal*sqrt(deltaT) ; dl = l / u l ; u2 = exp(sigma2*sqrt(deltaT); d2 = l/u2; discount = exp(-r*deltaT) ; p-uu = discount*O.25*(1 + sqrt(deltaT)*(nul/sigmal + nu2/sigma2) + rh

36、o); p-ud = discount*O.25*(1 + sqrt(deltaT)*(nul/sigmal - nu2/sigma2) - rho); p-du = discount*0.25*(1 + sqrt(deltaT)*(-nul/sigmal + nu2/sigma2) - rho); p-dd = discount*O.25*(1 + sqrt(deltaT)*(-nul/sigmal - nu2/sigma2) + rho); % set up S values Slvals = zeros(2*N+l,l); S2vals = zeros(2*N+1,1) ; Slvals

37、(1) = SlO*dl-N; S2vals(l) = S20*d2-N; for i=2:2*N+1 Slvals(i) = ul*Slvals(i-l) ; S2vals(i) = u2*S2vals(i-l) ; end % set up terminal values Cvals = zeros(2*N+1,2*N+i); for i=1:2:2*N+1 for j=1: 2 : 2*N+1 end end % roll back for tau= 1 : N Cvals(i, j) = max(Slvals(i)-S2vals(j)-K,O); for i= (tau+l) :2:

38、(2*N+l-tau) for j= (tau+l) :2: (2*N+l-tau) hold = p-uu * Cvals(i+l,j+l) + p-ud * Cvals(i+l,j-1) + . p-du * Cvals(i-l,j+l) + p-dd * Cvals(i-1,j-1); Cvals(i,j) = max(ho1d. Slvals(i) - S2vals(j) - K); end end end price = Cvals(N+l,N+l); 图7.11 利用二叉树方法给美式利差期权定价的matlab代码 显然,三个步骤是不够获得可以接受的近似结果的,但是通过层与层检查,并

39、通过这个例子了解矩阵Cvals管理存储格。在matlab中,我们可以逐步调试,就可以显示我们得到的基本信息。最初的晶格是为清晰度准备的,我们用一个星号标记其中无关的数据(当显示与调试你会看到一些数字有Cvals):经过一次循环,一次次逼近结果,相关数据是:请注意,新的价值是作为临近4个值的平均值获得的,其中存储的数据在下一时间层,然后回到一个步骤,我们有:格中最后的结果为:我们可以看到,我们正在处理一个金字塔结构的递归排序工作,我们经历了一个比较小的可以接受的内存浪费。图7.12单时段三叉树7.4 三叉树方法定价在二叉树上衍生三叉树想法是十分自然的。每个节点有3个下节点,即价格向上,向下和保持

40、不变(这只是一种可能的选择)。晶格的校准以这样一种方式以便重组和匹配基本连续随机变量的前两个时刻。增加的新自由度,可用于改善衔接或提出额外条件。这种方法的最大作用是对障碍期权,我们可以在晶格中求障碍值。这里非常方便的处理随机微分过程。经过一个小的时间步,我们有3个方向移动,相对应的价格对数增量形式为,0, 三种,与之相应的价格本身的乘法。这三种等价的方向对应的风险中性概率为,和。树图的结构见图7.12。这里给出一般方程: ,这里,我们写出这时刻相对应的方程为:求解得:图7.12 单步三叉树图7.13 三叉树方法的全例 我们看到更多的自由度来决定。事实上,这证明了我们可以独立的选择和。通常我们取

41、。这种关系在我们处理有限差分的时候非常好用。我们也应该注意到,一个随意的取值会导致负的概率。作为一个例子,我们考虑给一个标的资产为无红利支付股票的偶是看涨期权定价:,,以及。如果我们建一个的三叉树格,我们得到图7.13,这里:, , 实现这一三叉树算法的MATLAB代码见图7.14.像往常一样,概率的百分比不计入主循环。这里我们有个观察数据是必需的,不像二叉树,我们必须储存俩个连续的时间层,因为在奇数列和偶数列之间没有互换。从此,我们使用的是两列数组有2n + 1行,其中的列的作用可能在现在或将来。我们利用增量模2交换的作用两个层次:是由变量索引了解和kthen,对值1和2交替。下面是改进后格

42、计算: S O =100 ; K=100; r=0.06; T = l ; sigma=0.3; deltaX = 0.2; EuCallTrinomial(SO,K,r,T,sigma,N,deltaX) ans = N=3; 14.6494 function price = EuCallTrinomial(SO,K,r,T,sigma,N,deltaX) % Precompute invariant quantities deltaT = T/N; nu = r - 0.5*sigma-2; discount = exp(-r*deltaT) ; p-u = discount*0.5*(s

43、igma2*deltaT+nu2*deltaT-2)/deltaX2 + . nu*deltaT/deltaX) ; p-rn = discount*(l - (sigma2*deltaT+nu2*deltaT-2)/deltaX-2); p-d = discount*0.5*(sigma2*deltaT+nu2*deltaT2)/deltaX2 - . . . % set up S values (at maturity) Svals = zeros(2*N+l, 1) ; Svals(1) = SO*exp(-N*deltaX); exp-dX = exp(de1taX); for j=2

44、: 2*N+1 Svals(j) = exp-dX*Svals(j-1) ; end % set up lattice and terminal values Cvals = zeros(2*N+1,2); t = mod(N,2)+1; for j=1:2*N+1 end for t=N-1 : -1 : 0 ; nu*delt aT/delt ax) ; Cvals(j ,t) = rnax(Svals(j)-K,O); know = mod(t.2)+1; knext = mod(t+l,2)+1; for j = N-t+l:N+t+l Cvals(j ,know) = p-d*Cva

45、ls(j-l,knext)+p-m*Cvals(j,knext)+. . . p-u*Cvals(j+l,knext); end end price = Cvals(N+1,1); 图7.14 利用三叉树为欧式看涨期权定价的MATLAB代码我们注意到对的选择是为了方便应用。如下看到的经验法则有一定的道理: blspr ice (SO, K , r , T, sigma) ans = 14.7171 N=100; deltaX = 0.2; EuCallTrinomial(SO,K,r,T,sigma,N,delta)() ans = 14.0715 deltaX = 0.5; EuCallTr

46、inomial(SO,K,r,T,sigma,N,deltaX) ans = 10.9345 deltaX = sigma*sqrt (T/N) ; EuCallTrinomial(SO,K,r,T,sigma,N,delta;) ans = 14.6869 N=1000; deltaX = sigma*sqrt (T/N) ; EuCallTrinomial(SO,K,r,T,sigma,N,delt) ans = 14.71417.5 摘要二叉树方法通常是学习期权定价的一个基本的数值方法这是合理的,它显然是一个简单的方法。我们宁愿在稍后阶段描述方法,以便建立一个更广阔的框架。这种晶格法和蒙

47、特卡洛模拟方法以及有限差分法密切相关。关于关于蒙特卡罗方法,二叉树格和三叉树格代表一个灵巧的决定性时刻采样匹配的;时刻匹配是众多方差减少技术之一,已经被提出很多年了。当问题维数很小的时候,晶格技术方法和蒙特卡洛模拟相比的有点就在于它的计算速度。晶格方法不适宜对依赖于路径的期权定价。有人提出灵巧选择技术的使用的问题,例如,对回望期权存在不收敛的可能。因此对高维复杂的期权定价,蒙特卡罗模拟是唯一可行的方法。从另一方面来说,晶格方法容易处理早期期权运动的问题。有些学者认为显式有限差分方法等同于三叉树方法。事实上,在第9.2.1这将是明显的,在那里我们看到一个明确的计划,数值不稳定链接到一个无效离散化

48、,本质上导致了负的概率三叉树点阵。因此,可以认为,网格额外的灵活性,能使用隐含和准确的计划可能会取代晶格技术。但实际上,正如我们已经指出,有时是一个口味问题。有了良好的校准(我们刚刚开了头在这里),在许多实际情况中准确的价格可以由格的技术获得了。我们还应该指出的是,我们根据市场的完全理想化的假设工作,确定性波动等。此外,我们基本上一直使用用历史波幅,而我们知道,隐含波动率通常被认为与之有关的。晶格技术已用于对市场价格校准,在所谓的隐含格产生。我们参考文献关于这一主题更加先进,但我们应该牢记,简单的概念和方法的晶格计算效率,可能是极其有益概括超越的Black - Scholes期权定价的框架。参

49、考文献1. L. Clewlow and C. Strickland. Implementing Derivatives Models. Wiley, Chichester, West Sussex, England, 1998.2. D.J. Higham. Nine Ways to Implement the Binomial Method for Option Valuation in MATLAB. S I A M Review, 44:661-677, 20023. J.C. Hull. Options, Futures, and Other Derivatives (5th ed.). Prentice Hall, Upper Saddle River, NJ, 20034. G. Levy. Computational Finance. Numerical Methods for Pricing Finan-cial Instruments. Elsevier Butterworth-Heinemann, Oxford, 20045. D.G. Luenberger.Investment Science. Oxford University Press, New York, 1998.31

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!