L/O/G/O六.二叉树期权定价模型Ch6期权类工具Section2期权定价与计算二叉树模型的基本思想(1)衍生证券的价值是基于标的资产(或股票)的价值所以在计算资产期权价格时,可以先从资产的价格变动入手;(2)假设投资者是风险中性的(riskneutral),即投资者对风险不要求补偿,对所有的无风险证券而言,他们的预期收益为无风险利率;(3)假设没有套利空间.1.CRR二叉树模型把期权的存续期分成许多小的等长时间段,记作Δt,并假设期权价格存存在上升与下降两种可能性,上升与下降的比率分别为u和d,对应概率分别为p和(1-p).例13.股票价格为52,无风险收益率为10%,期权距离到期日为5个月,股票波动率的标准差为0.4,欧式看跌期权执行价为52.假设将时间离散为5个相等的时间段,利用二叉树模型估计看跌期权的价格.第一步:确定p,u,和d参数.假设股份初始价格为S,如果投资无风险资产,经过Δt后价值变为SeΔt,股票收益期望为:SeΔt=pSu+(1-p)Sd整理为:eΔt=pu+(1-p)d(公式6-1)(1)CRR二叉树原理及excel欧式期权算法假设标的资产服从几何布郎运动,有:则有资产方差:D(S)=σ2S2Δt该方差必须和离散模型中的资产方差相等.离散资产方差根据公式D(X)=EX2-(EX)2,于是有:σ2S2Δt=pS2u2+(1-p)S2d2-S2[pu+(1-p)d]2整理,得到:σ2Δt=pu2+(1-p)d2-[pu+(1-p)d]2(公式6-2)假设u的d满足如下的关系:u=1/d(公式6-3)出以解出:),(~tStrSNSdudeptr(公式6-4)eΔt=pu+(1-p)d(公式6-1)如果是外汇期权,(公式6-4`),r表示国内利率,r*表示国外利率dudeptrr*)(teu(公式6-5)ted(公式6-6)对于本例中的参数:1224.112/14.0eu8909.012/14.0ed5073.08909.01224.18909.0121*1.0epdudeptr(公式6-4)第二步:二叉树构建各期资产价格.当时间为0时,证券价格为S,经过Δt时间后,证券价格可能上升到Su,也可能下降到Sd;从Δt到2Δt时,证券Su可能上升到Suu,也可能下降到Sud,而Sd可能上升到Sdu(=Sud),也可能下降到Sdd,如图所示.以此类推.t0Δt2Δt3ΔtSSuSdSu2SudSd2Su3Su2dSud2Sd3资产价格二叉树在时间iΔt,资产价格有i+1种可能,可表示为:Sujdi-ji=0,1,2,…Nj=i,i-1,i-2,…0(j,i)(0,1)(1,0)(0,1)(2,0)(1,1)(0,2)(3,0)(2,1)(1,2)(0,3)u的指数d的指数为了方便在excel中计算,我们把上图的图形变形成下面的形状0Su30Su2Su2dSuSudSud2SSdSd2Sd3例14:接上例,资产初始价格为52,请画出五步二叉树的各期资产价格图.解:可以用excel计算出各期价格:92.6382.5373.5373.5365.5158.3665.5158.365246.3358.36485246.3341.2836.785246.329341.2836.7832.7729.19利用excel计算出的各期资产价格股票价格为52,无风险收益率为10%,期权距离到期日为5个月,股票波动率的标准差为0.4,欧式看跌期权执行价为52.假设将时间离散为5个相等的时间段,利用二叉树模型估计看跌期权的价格.实际上是个三角矩阵可以把上面的表格写成下面的形式,就可以看出二叉树变成了上三角矩阵5258.364865.5173.5382.5392.63046.32935258.3665.5173.530041.2846.335258.3600036.7841.2846.33000032.7736.780000029.1992.6373.5365.515246.3258.365241.2846.3336.7829.1982.5365.515258.3641.2832.7773.5358.3646.3336.78整理成二叉树形式第三步:根据各期资产价格二叉树倒推出期权定价①对于第N+1列(注意列号从1开始至N+1),各节的价值fN+1,j是:看涨:fN+1,j=max(0,SujdN-j-K),看跌:fN+1,j=max(K-SujdN-j,0),其中:j=N+1,N,N-1,N-2,...0.②对于第N列以前的所有列,如其中的一个节点(i,j),从节点(i,j)移动到(i+1,j+1)的概率为p,移动到(i+1,j+2)的概率为(1-p),在风险中性的情况下,节点(i,j)的价值f(i,j)为:f(i,j)=e-r△t*[p*f(i+1,j+1)+(1-p)f(i+1,j)],0≤i≤N,0≤j≤i(公式6-7)③按上面的方法,从第N+1列开始到第1列遍历二叉树,得到的第(1,1)个节点的值就是期权的价格.可以理解的是,如果选择的时间间隔足够小时,就可以求出欧式期权的精确值.上面是用excel求出例13或例14中的期权价格.这里就不再画树形图了.具体过程,见文件:《二叉树求欧式期权.xls》注意:在上面求p及f(i,j)等公式中,用到无风险利率r是连续复利,如果给出的是单利,则应用(1+r*Δt)代替erΔt,用1/(1+r*Δt)代替e-rΔt.例15有一份欧式股票看涨期权,其执行价格为21美元,存续期为3个月.资产现价为20美元,在未来3个月内其价格可能上涨到22美元或下降到18美元.无风险利率为12%(单利).请用单步二叉树模型求出该看涨期权的价值和看跌期权的价值.解:由题设知,S=20,Su=22,Sd=18,r=0.12,Δt=0.25,这时计算资产上涨的概率p的公式应改为:dudtrp1注意u=22/20=1.1,d=18/12=0.9,所以f(1,0)=max(0,22-21),f(0,1)=max(0,18-21)=0所以该欧式看涨期权的价格为:所以该欧式看跌期权的价格为:65.09.01.19.025.0*12.01p22cf涨(1,0)=max(0,22-21)=118f涨(0,1)=max(0,18-21)=0f跌(1,0)=max(0,21-22)=0f跌(1,0)=max(0,21-18)=3(i+1,j+1)(i+1,j+2)(i+2,j+2)6311.0%31035.0165.01*)1(*)1,0()0,1(trfpfpc涨涨0194.1%31335.0065.01*)1(*)1,0()0,1(trfpfpc跌跌作业把例15用二步二叉树和三步二叉树分别计算其看涨与看跌期权的价格.还是按单利算.可以用excel计算.(2)matlab计算期权的二叉树方法①调用现有函数Matlab中计算欧式期权的CRR二叉树模型函数为binprice.调用方式:[AssetPrice,OptionValue]=binprice(Price,Strike,Rate,Time,Increment,Volatility,Flag,DividendRate,Dividend,ExDiv)输入参数:Increment:时间的增量,即Δt,即步长Flag:期权的种类,Flag=1表示看涨,0表示看跌DividentRate:(optional)红利发放率,默认值为0,表示没有红利,如果给出了红利率,则Dividend值为0Dividend(optional)标的资产价外的红利金额,默认值是0,如果Dividend不为0,则DividendRate=0ExDiv(optional)标的资产的除息日期.可以理解为红利发放日至期权起始日之间的天数,但是表示与increment(Δt)的倍数.输出参数:Price二叉树每个节点的价格,是一个N+1方阵.其中Price(1,1)就是期权的价格.Option期权在每个节点的现金流例16:股票价格为52元,无风险收益率为10%,期权存续期为5个月,波动率的标准差为0.4,在3个半月(折合时间倍数为3.5)发放红利2.06元.欧式看跌期权执行价格为50,请用二叉树模型估计该看跌期权的价格.解:[Price,Option]=binprice(52,50,0.1,5/12,1/12,0.4,0,0,2.06,3.5)Price=52.000058.136765.022672.749479.351589.0642046.564252.033658.170662.988270.69800041.723146.598149.999256.119200037.412039.688744.5467000031.504435.36060000028.0688Price=52.000058.136765.022672.749479.351589.0642046.564252.033658.170662.988270.69800041.723146.598149.999256.119200037.412039.688744.5467000031.504435.36060000028.0688Option=4.44042.16270.636100006.86113.77151.3018000010.15916.37852.6645000014.224510.31135.4533000018.495614.63940000021.9312所以该看跌期权的价格为4.4404元.???一个有趣的发现可以看出Price矩阵与excel算出来的是一样的,但是option矩阵就与excel有很大的不同.这是为什么?经过N次编程计算,我终于搞明白了,原来:默认情况下,matlab是保留四位小数计算出结果的,而excel则保留了一切小数.所以实际上excel计算更为精确,但是在金融界人们用matlab更多更容易,反而以matlab为准了.②编程计算欧式期权的价格例18:已知股票当前价格为52,欧式看涨期权的执行价为50,无风险利率为0.1,股票波动的标准差为0.2,请自编一个函数计算该期权的价格.解:总的思路是先编写一个二叉树方法欧式看涨期权定价的函数,然后在命令行调用该函数即可.具体说来:Step1:在获得输入的各种参数(如现价S0,协议价K,无风险利率r,存续期T,波动率sigma,二叉树的步数等)之后,首先要求出Δt,上升比率及概率u和p,下降比率d和(1-p).由于二叉树在程序中实际上是上(n+1)*(n+1)三角矩阵,所以要用一个(n+1)*(n+1)零矩阵初始化期权各节点价值的二叉树矩阵(假设为lattic)Step2:由于二叉树的定价是从矩阵的最后一列,即第N+1列倒推到第1列,所以我们要把刚才初始化的矩阵的第N+1列的节点价值求出来,可以用公式max(0,SuN-jdj-K)(j=0,1,2...N)表示这一列.可以利用这个公式对期权价格矩阵的最后一列赋值.Step3:用两层循环求出期权价格矩阵.外循环(j循环)控制列,当然是从第N行开始到第1行,内循环(i循环)利用公式6-7计算出第j列各行的价值.Step4:写出输入变量.期权价格price就是lattic(1,1).具体细节见程序.function[Price,Lattice]=eucall_lattice(S,K,r,T,sigma,N)%看涨期权二叉树定价自编函数%输入参数%S0股票/资产当前价格%K看涨期权执行价格%r无风险利率%sigma股票/资产的年波动率标准差%N时间离散的步数%输出参数%Price期权的价格%Lattice期权价格二叉树%吴义能2011-03-06重新修订%%%%%%%%%%%%%%%%%%%%%%%%dt=T/N;u=exp(sigma*sqrt(dt));d=1/u;(i+1,