二叉树定价模型_第1页
二叉树定价模型_第2页
二叉树定价模型_第3页
二叉树定价模型_第4页
二叉树定价模型_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,六. 二叉树期权定价模型,Ch 6 期权类工具,Section 2 期权定价与计算,二叉树模型的基本思想,(1)衍生证券的价值是基于标的资产(或股票)的价值所以在计算资产期权价格时,可以先从资产的价格变动入手; (2)假设投资者是风险中性的(risk neutral),即投资者对风险不要求补偿,对所有的无风险证券而言,他们的预期收益为无风险利率; (3)假设没有套利空间.,1CRR二叉树模型,把期权的存续期分成许多小的等长时间段,记作t,并假设期权价格存存在上升与下降两种可能性,上升与下降的比率分别为u和d,对应概率分别为p和(1-p). 例13股票价格为52,无风险收益率为10%,期权距离

2、到期日为5个月,股票波动率的标准差为0.4,欧式看跌期权执行价为52.假设将时间离散为5个相等的时间段,利用二叉树模型估计看跌期权的价格. 第一步:确定p,u,和d参数. 假设股份初始价格为S,如果投资无风险资产,经过t后价值变为Set,股票收益期望为: Set=pSu+(1-p)Sd 整理为: et=pu+(1-p)d (公式6-1),(1)CRR二叉树原理及excel欧式期权算法,假设标的资产服从几何布郎运动,有: 则有资产方差: D(S)= 2S2t 该方差必须和离散模型中的资产方差相等.离散资产方差根据公式D(X)=EX2-(EX)2,于是有: 2S2t=pS2u2+(1-p)S2d2

3、-S2pu+(1-p)d2 整理,得到: 2t=pu2+(1-p) d2- pu+(1-p)d2 (公式6-2) 假设u的d满足如下的关系:u=1/d (公式6-3) 出以解出:,(公式6-4),et=pu+(1-p)d (公式6-1),如果是外汇期权, (公式6-4),r表示国内利率,r*表示国外利率,(公式6-5),(公式6-6),对于本例中的参数:,(公式6-4),第二步: 二叉树构建各期资产价格.,当时间为0时,证券价格为S,经过t时间后,证券价格可能上升到Su,也可能下降到Sd;从t到2t时,证券Su可能上升到Suu,也可能下降到Sud,而Sd可能上升到Sdu(=Sud),也可能下降

4、到Sdd, 如图所示.以此类推.,t0,t,2t,3t,S,Su,Sd,Su2,Sud,Sd2,Su3,Su2d,Sud2,Sd3,资产价格二叉树,在时间it,资产价格有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中计算,我们把上图的图形变形成下面的形状,例14:接上例,资产初始价格为52,请画出五步二叉树的各期资产价格图. 解:可以用excel计算出各期价格:,利用excel计算出

5、的各期资产价格,股票价格为52,无风险收益率为10%,期权距离到期日为5个月,股票波动率的标准差为0.4,欧式看跌期权执行价为52.假设将时间离散为5个相等的时间段,利用二叉树模型估计看跌期权的价格.,实际上是个三角矩阵,可以把上面的表格写成下面的形式,就可以看出二叉树变成了上三角矩阵,整理成二叉树形式,第三步:根据各期资产价格二叉树倒推出期权定价,对于第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列以前的所

6、有列,如其中的一个节点(i,j),从节点(i,j)移动到(i+1,j+1)的概率为p,移动到(i+1,j+2)的概率为(1-p),在风险中性的情况下,节点(i,j)的价值f(i,j)为: f(i,j)=e-rt * p*f(i+1,j+1)+(1-p)f(i+1,j), 0iN,0ji (公式6-7) 按上面的方法,从第N+1列开始到第1列遍历二叉树,得到的第(1,1)个节点的值就是期权的价格. 可以理解的是,如果选择的时间间隔足够小时,就可以求出欧式期权的精确值.,上面是用excel求出例13或例14中的期权价格.这里就不再画树形图了.具体过程,见文件:二叉树求欧式期权.xls,注意:在上面

7、求p及f(i,j)等公式中,用到无风险利率r是连续复利,如果给出的是单利,则应用(1+r*t)代替ert, 用1/(1+r*t)代替e-rt. 例15 有一份欧式股票看涨期权,其执行价格为21美元,存续期为3个月.资产现价为20美元,在未来3个月内其价格可能上涨到22美元或下降到18美元.无风险利率为12%(单利).请用单步二叉树模型求出该看涨期权的价值和看跌期权的价值. 解:由题设知,S=20, Su=22, Sd=18, r=0.12, t=0.25,这时计算资产上涨的概率p的公式应改为:,注 意,u=22/20=1.1, d=18/12=0.9,所以 f(1,0)=max(0,22-21

8、), f(0,1)=max(0,18-21)=0 所以该欧式看涨期权的价格为: 所以该欧式看跌期权的价格为:,22,c,f涨(1,0)=max(0, 22-21)=1,18,f涨(0,1)=max(0, 18-21)=0,f跌(1,0)=max(0, 21-22)=0,f跌(1,0)=max(0, 21-18)=3,(i+1,j+1),(i+1,j+2),(i+2,j+2),作 业,把例15用二步二叉树和三步二叉树分别计算其看涨与看跌期权的价格.还是按单利算.可以用excel计算.,(2)matlab计算期权的二叉树方法, 调用现有函数 Matlab中计算欧式期权的CRR二叉树模型函数为bin

9、price. 调用方式: AssetPrice, OptionValue = binprice(Price, Strike, Rate, Time, Increment, Volatility, Flag, DividendRate, Dividend, ExDiv) 输入参数: Increment:时间的增量,即t,即步长 Flag:期权的种类,Flag=1表示看涨,0表示看跌 DividentRate:(optional)红利发放率,默认值为0,表示没有红利,如果给出了红利率,则Dividend值为0 Dividend(optional)标的资产价外的红利金额,默认值是0,如果Divide

10、nd不为0,则DividendRate=0 ExDiv(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,

11、 0.1, 5/12, 1/12, 0.4, 0, 0, 2.06, 3.5) Price = 52.0000 58.1367 65.0226 72.7494 79.3515 89.0642 0 46.5642 52.0336 58.1706 62.9882 70.6980 0 0 41.7231 46.5981 49.9992 56.1192 0 0 0 37.4120 39.6887 44.5467 0 0 0 0 31.5044 35.3606 0 0 0 0 0 28.0688,Price = 52.0000 58.1367 65.0226 72.7494 79.3515 89.064

12、2 0 46.5642 52.0336 58.1706 62.9882 70.6980 0 0 41.7231 46.5981 49.9992 56.1192 0 0 0 37.4120 39.6887 44.5467 0 0 0 0 31.5044 35.3606 0 0 0 0 0 28.0688 Option = 4.4404 2.1627 0.6361 0 0 0 0 6.8611 3.7715 1.3018 0 0 0 0 10.1591 6.3785 2.6645 0 0 0 0 14.2245 10.3113 5.4533 0 0 0 0 18.4956 14.6394 0 0

13、0 0 0 21.9312 所以该看跌期权的价格为4.4404元.,?一个有趣的发现,可以看出Price矩阵与excel算出来的是一样的,但是option矩阵就与excel有很大的不同.这是为什么? 经过N次编程计算,我终于搞明白了,原来:默认情况下,matlab是保留四位小数计算出结果的,而excel则保留了一切小数.所以实际上excel计算更为精确,但是在金融界人们用matlab更多更容易,反而以matlab为准了., 编程计算欧式期权的价格,例18:已知股票当前价格为52,欧式看涨期权的执行价为50,无风险利率为0.1,股票波动的标准差为0.2,请自编一个函数计算该期权的价格. 解:总的

14、思路是先编写一个二叉树方法欧式看涨期权定价的函数,然后在命令行调用该函数即可. 具体说来: Step 1:在获得输入的各种参数(如现价S0,协议价K,无风险利率r,存续期T,波动率sigma,二叉树的步数等)之后,首先要求出t,上升比率及概率u和p,下降比率d和(1-p).由于二叉树在程序中实际上是上(n+1)*(n+1)三角矩阵,所以要用一个(n+1)*(n+1)零矩阵初始化期权各节点价值的二叉树矩阵(假设为lattic),Step 2: 由于二叉树的定价是从矩阵的最后一列,即第N+1列倒推到第1列,所以我们要把刚才初始化的矩阵的第N+1列的节点价值求出来,可以用公式max(0, SuN-j

15、dj-K) (j=0,1,2.N) 表示这一列.可以利用这个公式对期权价格矩阵的最后一列赋值. Step 3: 用两层循环求出期权价格矩阵.外循环(j循环)控制列,当然是从第N行开始到第1行,内循环(i循环)利用公式6-7计算出第j列各行的价值. Step 4: 写出输入变量.期权价格price就是lattic(1,1). 具体细节见程序.,functionPrice,Lattice = eucall_lattice(S,K,r,T,sigma,N) %看涨期权二叉树定价自编函数 %输入参数 %S0股票/资产当前价格 %K看涨期权执行价格 %r无风险利率 %sigma股票/资产的年波动率标准差

16、 %N时间离散的步数 %输出参数 %Price期权的价格 %Lattice期权价格二叉树 %吴义能 2011-03-06重新修订 %,dt=T/N; u=exp(sigma*sqrt(dt); d=1/u;(i+1,j+1)(i+1,j+2)(i+2,j+2) p=(exp(r*dt)-d)/(u-d); lattic=zeros(N+1,N+1); j=0:N; lattic(:,N+1) = max(0,S*u.(N-j).*d.j -K); for j=N-1:-1:0 for i=0:j lattic(i+1,j+1) =exp(-r*dt)*(p*lattic(i+1,j+2)+(1

17、-p)*lattic(i+2,j+2); end end Price=lattic(1,1); Lattice=lattic;,(3)三叉树模型及matlab编程,在三叉树模型中,资产价格在每个结点有三种变化形式,即上升,不变和下降(上、中、下)三种形式. 相应的概率为:,m=1,pm=2/3,由图可见三叉树第N+1列的各节点可以表示为:SuN-i, (i=0,1, 2n)三叉树从第1列到第N+1列的节点的个数为:1,3,5,7,.(2n+1)可知三叉树矩阵有2n+1行,n+1列.如果按矩阵中的三叉树,各节的点的价值为:,S,S,S,S,Sd,Sd,Sd=Su-1,Su,Su,Su,Su2,S

18、u2,Sd2,Sd2=Su-2,Sd3=Su-3,Su3,三步三叉树示意图,例18 请编写三叉树欧式期权价格函数,并以例17的数据试运行. functionPrice,Lattice = TriEuOp_lattice(S,K,r,T,sigma,N,Flag) %三叉树求解欧式期权 %输入参数 %S 股票/资产当前价格 %K 看涨期权执行价格 %r 无风险利率 % T 期权存续期 %sigma 股票/资产的年波动率标准差 %N 时间离散的步数 % Flag 期权类型, 0表示欧式看涨期权,1表示欧式看跌期权 %输出参数 %Price期权的价格 %Lattice期权价格二叉树 %吴义能 201

19、1-03-06重新修订 %,dt=T/N; u=exp(sigma*sqrt(3*dt); d=1/u; pu=sqrt(dt/(12*sigma2)*(r-sigma2/2)+1/6; pm=2/3; pd=-sqrt(dt/(12*sigma2)*(r-sigma2/2)+1/6; lattic=zeros(2*N+1,N+1); % 下面计算第N+1列(最后一列的资产价格) j=0:2*N; if Flag=0 % 如果是看涨期权,节点价值用max(0, ST-K),节点通式为Su(N-j), (j=0,1, 2n) lattic(:,N+1) = max(0,S*u.(N-j) -K)

20、; elseif Flag=1 lattic(:,N+1) = max(0,K-S*u.(N-j);% 如果是看跌期权,节点价值用max(0, K-ST) end,% 下面遍历三叉树 for j=N-1:-1:0 for i=0:2*j lattic(i+1,j+1) =exp(-r*dt)*pu*lattic(i+1,j+2)+pm*lattic(i+2,j+2)+pd*lattic(i+3,j+2); end end Price=lattic(1,1); Lattice=lattic;,运行:看涨期权的价格: Price, Lattice=TriEuOp_lattice(52,50, 0.

21、1, 0.5, 0.2,5,0) Price = 5.5726 Lattice = 5.5726 10.1763 16.2158 23.2170 31.0887 39.9241 0 4.9939 9.6215 15.7229 22.7268 30.5938 0 1.7804 4.3761 9.0628 15.2324 22.2316 0 0 1.3197 3.7010 8.5157 14.7370 0 0 0.2255 0.8556 2.9334 8.0200 0 0 0 0.0809 0.4023 2.0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

22、0 0 0 0 0 0 0 0 0 0,看跌期权的价格: Price, Lattice=TriEuOp_lattice(52,50, 0.1, 0.5, 0.2,5,1) Price = 1.1423 Lattice = 1.1423 0.2032 0.0073 0 0 0 0 1.0400 0.1292 0 0 0 0 3.2212 0.9033 0.0564 0 0 0 0 3.2418 0.7142 0 0 0 0 6.9828 3.2639 0.4375 0 0 0 0 7.3245 3.3017 0 0 0 0 11.5772 7.7348 3.3954 0 0 0 0 12.068

23、5 8.2310 0 0 0 0 15.9526 12.5648 0 0 0 0 0 16.4490 0 0 0 0 0 19.9302,二叉树,三叉树及Black-Scholes模型的计算结果进行比较:,(4)美式期权二叉树模型,假设在节点第N列以前的一个节点(i,j),首先我们看期权不提前执行的价值,不提前执行的价值和欧式期权相等,可以记作fu(i,j), fu (i,j)还是可以由后面两个节点期望值的贴现而来;然后看提前执行的价值f(i,j),如果是看涨期权f(i,j)=S-K,如果是看跌期权f(i,j)= K-S.最后,美式期权在节点(i,j)的价值为: f(i,j)=max(S-K)

24、, fu(i,j),例19:一只不分红的股票的现价为37美元.在接下来的两年里,每年股份要么上升5%,要么下降5%.连续无风险收益率为7%.请用三步二叉树方法计算期限为两年,执行价格为38美元的美式看跌期权的价值.,解:注意本题说股价要和上涨5%,要么下降 5%. 表示u=1+5%,d=1-5%.并不满足ud=1 三步二叉树的各节点如图:ert=e0.070.25=1.0177 资产上升概率p为: 先求节点(2,1)的价值,节点(2,1)的股票价格大于38,故执行看跌期权的收益为0,因为不应提前执行.所以该节点的价值f (2,1)为: f (2,1)u(2,1)=0.3473 再求节点(2,2

25、)的价值: 节点(2,2)提前执行的价值f(2,2)为:f(2,2)=2.85 f(2,2) fu(2,2), f(2,2)= f(2,2)=2.85 最后求出t0时刻的期权价格为: P=e-rtp*f(2,1)+(1-p)*f(2,2) =0.67654*0.3473+(1-0.67654)*2.85/1.0177=1.1368(美元) 即该美式看跌期权的价格约为1.1368美元.,例20:考虑一个外汇平值看涨期权,即期价为100美元,执行价格也为100美元.存续期为6个月,年波动率为=20%,国内利率r=5%,国外利率r*=8%. 请用excel计算该情况下,美式看涨期权与欧式看涨期权的价

26、格.请用四步二叉树. 解:如下表所示,例21 无收益美式期权二叉树自编函数. functionPrice,Lattice = BinAmOp_lattice(S,K,r,T,sigma,N,Flag) %无收益美式看涨期权二叉树定价自编函数 %输入参数 %S0 股票/资产当前价格 %K 看涨期权执行价格 %r 无风险利率 %sigma股票/资产的年波动率标准差 %N 时间离散的步数 % Flag 期权的标志,0表示看涨,1表示看跌 %输出参数 %Price期权的价格 %Lattice期权价格二叉树,dt=T/N; u=exp(sigma*sqrt(dt); d=1/u; p=(exp(r*dt

27、)-d)/(u-d); asset=zeros(N+1,N+1); % 资产价格矩阵 carry=zeros(N+1,N+1); % 美式期权提前执行所获收益 lattic=zeros(N+1,N+1); % 各节点的期权价值的矩阵 % 下面算出各节点资产价格 for i=1:N+1 for j=1:i asset(j,i)= S*u.(i-j).*d.(j-1 ); end end % asset是资产价格矩阵,% 下面计算提前执行收益矩阵 if Flag=0 % 如果是看涨期权 carry=max(0,asset-K); elseif Flag=1 % 如果是看跌期权 for i=1:N+1 % 注意不能简单地用carry=max(0,K-asset),因为矩阵中有些节点的值是0,就

温馨提示

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

评论

0/150

提交评论