首页 二叉树和三叉树的期权定价方法

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

举报
开通vip

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

二叉树和三叉树的期权定价方法
1 第七章 期权定价的二叉树和三叉树方法 在这一章中,我们利用二叉树和三叉树方法为期权定价。在第 2.1节中我们已经介绍了利用基础途径的二叉树方法解决期权价格不 确定性的模型。二叉树方法依赖于对相关随机过程的离散化并利用计 算和内存的结合以满足易于管理的要求。我们也在 2.6.1 节中看到在 一个单步二叉树格定价中利用无套利进行期权定价更为简便。为了获 得一个实用的定价程序,我们必须把原来的单步格方法扩展到多步格 方法,但是我们必须校对格使它能够反映出相关模型,且这个模型是 连续时间、连续状态的随机微分方程。然后我们就可以推广到多步的 二叉树格和三叉树格。 在 7.1 节中,我们从如何利用在离散概率分布的时刻下随机价格 波动校准简单的二叉树格。从这点来看,弄清楚网格技术和蒙特卡洛 模拟之间的联系是非常重要的,而利用时刻匹配技术缩减方差可以看 作一种快捷的抽样排序。然后我们讨论内存效率的实现是如何 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 的,美式期权定价是 7.2 节的主题。同时,还是要注重它和其他技术 方法的联系。现在我们要做的本质上是一个非常简单满足动态规划原 则的程序,我们将在第 10 章程序中进一步拓展。在 7.3 节中,我们 把上述方法推广到双标的资产的情形,虽然这是一个最简单的情形, 但是我们可以从这个情形中看出内存控制是这一情形的基础。另一种 一般化的代表是三叉树格方法,三叉树格方法可以作为一种更普遍的 有限差分方法(具体将在 9.2.1 中叙述),最后,我们在 7.5 节中具 2 体讨论网格化方法的优势和劣势。 期权定价的二叉树和三叉树格方法 图 7.1 单时期二叉树格 7.1 二叉树定价方法 在 2.6.1 节中,我们已经考虑过单步二叉树方法在无套利情况下 的期权定价,这里我们为了方便直接利用图 7.1。其主要思想是复制 两个资产,一个是无风险资产,另一个是相关股票。利用这两项资产, 我们可以通过它们的组合塑造任何收益率的资产。如果我们令 u和d 为任意两个价格的角标,我们可以看到期权的价格应该为 0f 则, ])1([0 du tr fppfef    (7.1) 在 公式 小学单位换算公式大全免费下载公式下载行测公式大全下载excel公式下载逻辑回归公式下载 7.1 中 uf 和 df 是标的资产在涨跌两种情况的期权价格,p是风 险中性前提下相关资产升值的概率。 du de p tr     为了寻找一个更好的不确定性模型,我们可以增加分类的情况, 复制期权收益,甚至我们可以使用更多的资产,或允许中间日期交易。 第二种可能性更为实际,并且也是必不可少的,例如,对于在期权的 存续期内可以随时执行的美式期权来说。对其求极限,就会得到连续 3 时间模型,并且其最后收敛于 Black—sholes 方程。当 Black—sholes 方程没有解析解的时候,我们必须采取一些离散化的途径,比如说可 以通过蒙特卡洛模拟从而估计出风险中性条件下预期收益,或者建立 一个自适应网格的有限差分方法去解决相应的 PDE 模型。就像我们 在图 7.2 中展示的一样,多级二叉树格方法就是一种可以选择的离散 化方法。我们也可以考虑利用树图,但是要注意使计算方法易于控制。 二叉树格定价 图 7.2 新生成的二叉树图 这里我们为了方便令 du /1 。虽然这个不是必须的,但是在后面 我们可以看到,这个假设令模型简化了很多即每上一步紧接着下一步 都会得到相同的初始价格。 000 SduSudS  正如我们从图中看到的一样,我们仅用了有限个价格步。这个有 可能就是实施该方法的优势。但是,我们该怎么恰当的确定 u和 d 的 值呢,我们应该利用近似相关的连续过程去校对网格。 4 7.1.1 二叉树格的校对 二叉树格方法应该是风险中性过程一个良好的相似。 SdWrSdtdS  因此,我们应以这样的方式参数设置晶格,即保持着连续时间模型的 一些基本属性,这一过程就叫做校准。从 tS 开始,经过一个小的时间 步 t ,从 2.5 节我们可以看到新价格是一个随机变量 ttS  ,且 ),)2/((~)/log( 22 ttrNSS ttt   利用对数正态对数分布的特性,我们得到 tr ttt eSSE    ]/[ (7.2) 和 )1(]/[ 22  ttr ttt eeSSVar   (7.3) 一个合理的要求是这些离散的动态点必须和它们的时刻相匹配。要注 意的是,我们只有两个个等式,却有 3 个参数,p,u 和 d,所以三个变 量有一个为自由变量,我们令 du /1 ,这样做是为了计算简便,但不 是必须的。在网格点上,我们有: tttt SdpSpuSE .)1(.][  , 和(7.2)联立得 t tr tt SeSdpSpu  .)1(.  du de p tr     注意, p是风险中性条件下的概率,它不依赖于真实浮动,为了和方 差匹配,在晶格上我们看到 tr tttttttt eSdppuSSESESVar   2222222 ))1((][][)(   5 从(7.3)中我们也可以看到 )1(][ 222  ttr ttt eeSSVar   把最后两个等式联立可得 tr tt ttr t eSdppuSeeS  2222222 ))1(()1( 2  最终得到 2222 )1( dppue ttr   将 p带入最后一个等式的右侧,化简得 du eduddueu d du eu u du de trtrtrtr          222222 1)( )()( 22     tt tr edu du duedu   最后我们得到这样的等式  ttre  22 1)(  ttedu  其中,利用 du /1 ,可以转化为二次方程: 0)1( 222   tttrtr eeueu t   方程的一个跟为 tr trttrttr e eee u   2 4)1()1( 2222 22    利用一阶条件拓展,只受 t 的影响,我们可以简化表达式,对平方根 近似化简可得 ttrtree trtr t   22222 4)21(4))2(2(4)1( 2   因此 tre ttr u   2 2)2(2 2   6 )1)( 2 1( 2 trtttr     tttrtttr      2 1 2 1 22  但是对于二阶条件,我们对 te  拓展,最终获得参数 teu  , ted  , du de p tr     , (7.4) 这就是著名的 CRR 公示 这里强调一下:这个方法以及文献中所用的参数都不是唯一的, 例如我们可以取 5.0p ,经计算可得: 5.0p , ttr eu     ) 2 ( 2 , ttr ed     ) 2 ( 2 这就是杰诺-拉德参数,此外,我们一直在努力结束涉及计算以 及线性方程组的计算,通过对数转换的方法,我们尽量的避免这些困 难。在以后,我们都将采用这个方法。 假设无风险利率和波动是时间常数,我们所得的结果适用于整个 晶格参数,为一个期权定价,我们需要对标的资产制定一个网格,然 后从以往的时间倒推。事实上,期权价格在到期日的时候已经知道了, 那时已经给出了期权的收益。因此,我们利用方程(7.1)按每一个时 间步倒推递归,直到到达我们的初始节点。二叉树格方法在欧式看涨 期权得到最佳的应用。 例 7.1 假设我们假设为一个欧式看涨期权定价 500  KS , 1.0r , 4.0 ,存续期为 5 个月,利用 B-S 模型,我们知道结果是: >> )4.0,12/5,1.0,50,50(blspricecall  7 >> 1165.6call 如果我们想用二叉树格方法逼近结果的话,我们首先就要定义格 参数,假定每个时间步为一个月,然后 0833.012/1 t 1224.1 teu  8909.0/1  ud 5073.0    du de p tr 对股票价格产生的格和选项值显示在图 7.3,在晶格的最右面是期权 的价格,为了便于计算,让我们考虑如何从最后一层至第二层逐层倒 推: 77.29]77.20*4927.007.39*5073.0[]77.20).1(07.39.[ 0833.0*1.0   eppe tr 在递归后,我们看到,由此计算出的期权价格大约为 6.36,结果不 太接近确切价格,一个更好的改进近似就是缩小时间步长。 为了更好的在 MATLAB 中实现这一方法,我们需要一个向前倒推的 代数式。令 ijf 为在节点的期权的价值,其中 j 为第 j 个时期 )~0( Nj  ,i 表示为在 j 时期内上升了 i。我们利用倒推思想,N 是我 们考虑的时间步,因此总共有 N+1 格, TtN  ,即整个期权存续期。 在这样的定义下,晶格点的标的资产价格即为 ijidSu  ,在存续期内, 我们有: },0max{, KdSuf iNi Ni   , Ni ,...,1,0 时间逆推(下降时间标 j),我们得到 ].)1([ 1,1,1    jiji tr ij fppfef  (7.5) 这些工作在 MATLAB 中生成非常简单,代码在图 7.4 给出,唯一要注 8 意的一点是,矩阵索引在 MATLAB 中要从一开始,这需要一个微小的 调整。 7.3 欧式看涨期权的二叉树格 9 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)=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,通过增加最后一个参数,我们得到了更为精确的价格(同一 计算时间的增加)。 >> )5,4.0,12/5,1.0,50,50(calllatticeEurcall  >> call 6.3595 >> )500,4.0,12/5,1.0,50,50(calllatticeEurcall  >> call 6.1140 更有趣的是探讨二叉树方法计算的价格如何收敛于正确价格的。 我们可以通过图 7.5 的代码和图 7.6 的结果输出来看出。在这种情况 下,我们看到随着时间步的增加的震荡情况。 我们刚才讨论的执行结果也有一些缺陷。首先,它使用的是一个 10 大型的矩阵存储格,但是其中近一半为空,我们把返回的整个存储格 作为一个输出参数,这个也许对与之相关的图 7.3 非常有用,但是可 能在实际运用中毫无作用,实际上为我们只需要连续的两个存储层存 储所需资料就能有所改善。在内循环中,我们用贴现系数乘以时间的 风险中性概率,我们可以通过循环外计算节省时间。我们将努力在 7.3 节中进行改进,在下一节中,我们将把二叉树方法运用到其它非 标准型期权定价中。 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 脚本检查减少 t 的二叉树格的精确性 图 7.6 二叉树方法中精确价格和增加了时间步后相似价格的差距 11 7.1.2 把俩者结合起来,为后付费期权定价 在这里,我们无红利股票的付费后期权1。后付费期权的特点是预 先不支付担保金,当合约成立以后,将在以后支付。如果期权的存期 满后,则期权必须执行,并归还担保金,否则期权就毫无价值可言, 因为没有担保金。请注意,期权持有者的净盈利可以是负数,当期权 的收益小于担保金的时候就会出现净盈利为负。在无套利的情况下, 如果净回报总是为负,我们不能拥有一份在 0t 时刻价值为 0的合约, 我们怎么样才能找到公平的担保金价值呢? 给出一个担保金为 P,则回报是: 对于每一个给定的价格 P,我们都可以利用二叉树方法算出期权 价格,现在我们必须寻找到一个值 P,使得在风险中性的前提下,于 TS 相关的期望回报为 0 : 0)];([   PSfE T 注意这里的贴现因子,因为利率是恒定的,因此贴现因子并没有任何 作用。为了解决这个含 P的方程,我们对晶格利用二分法解决非线性 方程组(见 3.4.1 节)。首先,我们建立一个函数对给定 P条件下的 期望进行估计;MATLAB 代码在图 7.7 中给出。让我们考虑一个标的 资产为股票的期权,股票的价格为 12 美元,波动率为 20%;无风险 利率为 10%;执行价格为 14 美元;存续期为 10 个月。我们用二叉树 方法为其定价,取时间步长为一个月,所以总共有 10 个时间步。当 P 1 这个例子是建立在(参考文献 5 第 13 章 练习 11) 12 给定的时候,我们可以建立匿名函数返回贴现后的回报。然后我们利 用二分法,以 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 Science function 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); lattice = zeros(N+1,N+1); for i=0:N if (S0*(u^i)*(d^(N-i)) >= K) lattice(i+1,N+1)=S0*(u^i)*(d^(N-i)) - K - premium; end end for 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); end end ExpPayoff = lattice(1,1); 图 7.7 用二叉树方法为后支付期权定价的 MATLAB代码 7.1.3 二叉树方法的一个执行改进 我们原来使用过的改进后的二叉树方法现在也可以改进了(从 CPU 运行时间和内存要求上)。首先,循环中没有必要重复计算贴现 的概率,我们可以乘以贴现因子和概率一次来计算。此外,我们可以 看到,随着对二叉树晶格的校准,即令 ud=1,我们可以使用向量而 13 不是二维矩阵来记忆资产价格从而节约存储。例如在图 7.3 中,我们 看到只有 11 个不同的值用于标的资产价格。用此种格校准,如果有 N 个时间步,则我们就有了 2N+1 个不同的价格。因此,他们可以存 储在单一列中,可以节省相当大的存储空间。如果我们需要 1000 步 来准确估计,那么 1000*1000 的矩阵就和 2001 项的向量有了很大的 差距。一个可行性 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 存储价格的方法可以见图 7.8。这些数字如图 所示是在矢量的位置。1 是存储中的最小值,造成步骤序列是下跌序 列。我们可以看到奇数项对应的是最后一层,偶数项对应的是倒数第 二层。在格上是奇数还是偶数取决于时间步。 图 7.8 节省存储的二叉树格 同样方法可以用来存储期权价值。原则上,我们应该使用俩个向 量对应时间的连续俩个层。但是,我们可以利用让偶数的元素一层, 奇数的元素另一层,这样就可以使用含有 2N+1 个元素的向量了。由 此产生的代码可以看图 7.9。下面是我们上述工作的一些评论。 *我们预先计算的,包括贴现概率等等的数量不变(在代码第一部 14 分)。 *当我们编写标的资产价格的载体 SVals 时,我们从最小的元素 开始,即 NdS0 ;然后乘以 u;为了更好的准确性,最好把 0S 存到中间 元素 SVals(N+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 quantities deltaT = 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 values SVals = zeros(2*N+1,1); SVals(1) = S0*d^N; for i=2:2*N+1 SVals(i) = u*SVals(i-1); end % set up terminal CALL values CVals = zeros(2*N+1,1); for i=1:2:2*N+1 CVals(i) = max(SVals(i)-K,0); end % work backwards 15 for tau=1:N for i= (tau+1):2:(2*N+1-tau) CVals(i) = p_u*CVals(i+1) + p_d*CVals(i-1); end end price = 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 >> 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 欧式看涨期权二叉树方法的改进代码 我们可以通过矢量代码寻求进一步的改善,或者采取不同的方 法。我们不会追求这样的方法以避免模糊的代码,但是我们把握容易 的方法以寻求进一步改进。也许在节省 CPU 处理时间上效果并不明 显,但是当处理多维期权定价的时候对内存的节省就显得非常必要。 7.2 用二叉树方法对美式期权定价 利用二叉树技术为美式期权定价我们已经在上一节讲过,是相当 简单的。唯一个关键点就是如何解释早期的运动2。在这里,我们解 决的是标的资产为无红利支付股票的普通美式看跌期权的定价问题。 2 相对应的看涨期权我们不敢兴趣,因为我们可以证明,美式看涨期权提前执行时没有意义的,除非在期 权存续期内存在股息支付。 16 考虑在最后一个晶格层的点(1,N)。如果期权获利,这显然是最佳的 执行点。因此,在最后一层我们有: }0,max{ iNiN SKf  iNi iN dSuS  是该节点的标的资产价格。现在我们考虑一个在倒数第二 层的点。如果期权没有获利即 KS Ni 1, ,我们就不执行。如果期权已 经盈利,我们就想知道是现在立即执行好,还是将来在某个机会执行 获取更大的收益更好。换句话说,我们必须解决一个最优停止问题, 在每个时间步上,我们必须观察这个动态系统,从而决定是否应该立 即执行,以保持现有收益,或者继续存有期权。 解决这个问题有个简单的方法,就是通过比较直接的回报(期权 的内在价值)和继续持有的价值。如果我们继续持有资产,我们拥有 的资产价值为: )( ,,11, NidNiu trc Ni fpfpef      (备注:相应的看涨期权我们不感兴趣,因为可以证明,提前执行是 从来没有最优选择的,除非股息在期权的存续期支付。) 这里 up 和 dp 都是风险中性概率,我们应该执行,如果内在价值大于 继续持有的价值。因此期权在从第二到最后一层节点上的价值为 )},(,max{ ,11,1, Nidiu tr NiNi fpNfpeSKf      同样的事情会在任意层的递归过程中发生。这意味着,我们应该从最 后一层开始,在那里期权的价值就是期权的收益。然后我们应该对时 间 倒 推 通 过 对 通 常 期 望 稍 加 修 改 的 方 程 ( 7.5 ) )}.)1((,max{ 1,1,1,    jiji tr ijji fppfeSKf  (7.6) 17 这种想法看似简单,但它是一个所谓动态规划原则的普遍运用。我们 将会在第 10 章看到动态规划原则在理论上多么的有效,但是有时却 由于”维数灾”而很难运用。在二叉树格中,我们使用了一个对相关 随机过程的简单离散化,动态规划看起来微不足道。事实上,我们的 推理有些误导,因为我们已经采取了期权持有的观点是愿意行使其期 权的最佳状态。但我们要问为什么我们只注重预期价值,而忽略风险 厌恶。一个严谨的理由其实没那么简单,它应该包括无套利理论和期 权卖方应该也关系他最糟糕的情况,就是期权持有人最优化执行他的 期权。 撇开理论的问题,其实很容易采用我们已经做出来的欧式看涨期 权和美式看跌期权。结果代码显示在图 7.10.我们以不同的方式轻微 初始化晶格,但唯一显著的变化就是后面的时间步长,我们比较了持 有价值和内在价值。 金融工具箱为我们提供了一个 binprice 函数,利用该函数可以给 普通美式看涨和看跌期权定价且允许连续红利。我们可以通过比较美 式看跌期权格定价和 binprice 去检验我们的实现: >> SO = 50; >> K = 50; >> r = 0 . 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 18 OPTION PRICING BY BINOMIAL AND TRINOMIAL LATTICES function price = AmPutLattice(SO,K,r,T,sigma,N) % Precompute invariant quantities deltaT = T/N; u=exp(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 = zeros (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 需要一个标志,表明如果选择看跌(标志设置为 0)或选择看涨(标志设置为 1)。此条件为上面条件的一个快速反应。 这里计算函数 binprice 需要期权的存续期 T 和时间步长,令 NTdt / 。 19 我们忽略了可用于分红比例的期权参数。输出的 binprice 是俩个价格, 一个是标的资产的价格,一个是期权的价值;重要的一点是当时间步 很小的时候,利用分号控制屏幕上的输出。 7.3 利用二叉树方法为双标的期权定价 为了说明晶格技术扩展到多维期权,这里我们考虑两种资产的美 式利差期权。这种期权的回报为: }0,max{ 21 KSS  基本方法可以推广到许多种期权,但是不包括强依赖路径的期权。为 了进一步推广,我们也考虑持续股息收益率 1q 和 2q 。其实我们并没有 对问题进行很大的改变,因为我们只是调整了风险中性的动态,这里 我们关于它的方程(2.42)。 111111 )( dWSdtSqrdS  222222 )( dWSdtSqrdS  这里两个维纳过程是相互关联的,且 dtdWdW 21 (见 2.5.5 节) 为了避免我们在校准过程中涉及到非线性问题所遇到的困难,我 们对资产价格进行对数化处理。令 ii Sx log ,利用伊藤引理,我们 得到两个随机微分方程: 11111 dWdtSvdX  212212 dWdtSvdX  这里 2,1,2/2  iqrv iii  现在,作为典型的二叉树格,我们假设这两个资产上升或者下降 在价格方面的对数数额为 ix ,校准格。我们对一 ,二阶的距进行匹 20 配。这两只股票可能上行或者低走。因此每个节点有 4 个数值和 4 个 概率 uup , udp , dup , ddp 。我们首先需要一个关于增量 iX 预期的匹配 条件: tvxppxppXE ddduuduu  1111 )()(][   2222 )()(][ vxppxppXE ddduuduu  这里我们要区别随机变量 iX 和他们的现值 ix 。然后我们需要一个相 似的二阶条件: ttvtxppppXE ddduuduu  2 1 22 1 2 1 2 1 2 1 )())((])[(  ttvtxppppXE ddduuduu  2 2 22 2 2 2 2 2 2 2 )())((])[(  , 这里我们用到了常用恒等式 ][][)( 22 XEXEXVar  ,我们也忽略了高阶 无穷小的 t 。当概率趋近于 1 的时候,这些方程将被极大的简化: tx  11  , tx  22  我们还应该说明协方差,以及与它等价的交叉向量: .)()(].[ 21 2 21212121 ttvvtXXppppXXE ddduuduu   现在我们对 4 个未知概率有 4 个等式: 1 1  tv pppp ddduuduu  2 2  tV pppp ddduuduu   ddduuduu pppp 1 ddduuduu pppp 这些方程可以通过反转矩阵解决,或者通过适当的线性方程组组合。 21 得出: })(1{ 4 1 2 2 1 1        tpuu })(1{ 4 1 2 2 1 1        tpud })(1{ 4 1 2 2 1 1        tpdu })(1{ 4 1 2 2 1 1        tpdd 这些条件有个直观的解释。就是当相对波动较大的时候,与其正相关 的概率也跳跃较大。例如在 1S 向上浮动, 2S 向下浮动的概率下, 2p 即 成为一个负标志(即向上浮动越大,就越向下跳),并呈负相关关系, 使得这一联动成为可能,类似的考虑也适合于 p, d ,u 。即当 p, d,u 越小,正相关的浮动就越大。 二叉树格方法的需要仔细的内存管理控制,因为我们不能随意的 存储一个多维矩阵。由于上线俩个资产的浮动的绝对值是相同的,我 们就可以利用我在已在 7.1.3 中相同的方法。由此产生的代码将显示 在图 7.1.1 中(参数不言自明)。首先我们计算不变的量。注意,在 二叉树方法中,我们运用的是价格,不是价格的对数。因此,上升的 价格为: 22 tx i ii eeu   这里 2,1,/1  iud ii 。概率的百分号在主循环之外。两个相关资产的价 值存储在两个向量 S1val 和 S2vals,这个定价的方法完全相似于对普 通期权的定价。期权的价格将存储于二叉树格矩阵中,这个矩阵经过 期权收益的初始化,这里令 i 指资产 1,j 指资产 2。我们可以用两 个连续的一次矩阵,因此奇数层和偶数层都是连续层且交替使用。因 为这是一个美式期权,我们在风险中性的前提下计算出来的继续持有 的价值要和与期权的内在价值进行比较。 为了检测执行的具体情况,我们用下面这个例子3 >> 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 ,ql, 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) ; 3 该例子引用于(藏考文献一 p47-51) 23 p-uu = discount*O.25*(1 + sqrt(deltaT)*(nul/sigmal + nu2/sigma2) + rho); 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(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: (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 代码 显然,三个步骤是不够获得可以接受的近似结果的,但是通过 层与层检查,并通过这个例子了解矩阵 Cvals 管理存储格。在 matlab 中,我们可以逐步调试,就可以显示我们得到的基本信息。最初的晶 格是为清晰度准备的,我们用一个星号标记其中无关的数据(当显示 与调试你会看到一些数字有 Cvals): 24 经过一次循环,一次次逼近结果,相关数据是: 请注意,新的价值是作为临近 4 个值的平均值获得的,其中存储 的数据在下一时间层,然后回到一个步骤,我们有: 格中最后的结果为: 我们可以看到,我们正在处理一个金字塔结构的递归排序工作, 我们经历了一个比较小的可以接受的内存浪费。 25 图 7.12单时段三叉树 7.4 三叉树方法定价 在二叉树上衍生三叉树想法是十分自然的。每个节点有 3 个下节 点,即价格向上,向下和保持不变(这只是一种可能的选择)。晶格 的校准以这样一种方式以便重组和匹配基本连续随机变量的前两个 时刻。增加的新自由度,可用于改善衔接或提出额外条件。这种方法 的最大作用是对障碍期权,我们可以在晶格中求障碍值。 这里非常方便的处理随机微分过程。经过一个小的时间步,我们 有 3 个方向移动,相对应的价格对数增量形式为 x ,0, x 三种, 与之相应的价格本身的乘法。这三种等价的方向对应的风险中性概率 为 up , mp 和 dp 。树图的结构见图 7.12。这里给出一般方程: dWvdtdX  , 这里 2/2 rv ,我们写出这时刻相对应的方程为: tvxppxpXE dmu   0][ 222222 )()(0)(])[( tvtxppxpXE dmu   1 dmu ppp 求解得: 26 图 7.12 单步三叉树 图 7.13 三叉树方法的全例 我们看到更多的自由度来决定 x 。事实上,这证明了我们可以独 立的选择 x 和 t 。通常我们取 tx  3 。这种关系在我们处理有限差 分的时候非常好用。我们也应该注意到,一个随意的取值会导致负的 概率。作为一个例子,我们考虑给一个标的资产为无红利支付股票的 偶是看涨期权定价: 1000 S , 100K , 06.0r , 1T ,以及 3.0 。如 果我们建一个 2.0x 的三叉树格,我们得到图 7.13,这里: 3878.0up , 2494.0mp , 3628.0dp 实现这一三叉树算法的 MATLAB 代码见图 7.14.像往常一样,概率的 百分比不计入主循环。这里我们有个观察数据是必需的,不像二叉树, 27 我们必须储存俩个连续的时间层,因为在奇数列和偶数列之间没有互 换。从此,我们使用的是两列数组有 2n + 1 行,其中的列的作用可 能在现在或将来。我们利用增量模 2 交换的作用两个层次:是由变量 索引了解和 kthen,对值 1 和 2 交替。下面是改进后格计算: >> 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*((sigma^2*deltaT+nu^2*deltaT-2)/deltaX^2 + ... nu*deltaT/deltaX) ; p-rn = discount*(l - (sigma^2*deltaT+nu^2*deltaT-2)/deltaX-2); p-d = discount*0.5*((sigma^2*deltaT+nu^2*deltaT^2)/deltaX^2 - . . . % 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: 2*N+1 Svals(j) = exp-dX*Svals(j-1) ; end % set up lattice and terminal values Cvals = z
本文档为【二叉树和三叉树的期权定价方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_183791
暂无简介~
格式:pdf
大小:591KB
软件:PDF阅读器
页数:30
分类:工学
上传时间:2013-05-14
浏览量:55