欧式看涨期权二叉树定价(含matlab代码和结果图)
实验概述
本实验首先介绍了二叉树方法的来源和主要理论基础,然后给出期权的二叉
树定价方法的基本过程和MATLAB7. 0实现的过程。
19. 2 实验目的
(1)了解二叉树的定价机理;
(2)掌握用MATLAB7. 0生成股票价格的二叉树格子方法;
(3)掌握欧式期权和美式期权的二叉树定价方法。
19. 3 实验工具
MATLAB 7. 0。
19. 4 理论要点
构造二叉树图(Binomial Tree)是期权定价方法中最为常见的一种。这个树图
表示了在期权有效期内股票价格可能遵循的路径。二叉树定价方法与风险中性定价理论是紧密联系的。Cox, Ross & Rubinstein (1979)首次提出了构造离散的风险
中性概率可以给期权定价,在此基础上他们给出了二叉树定价方法。
1)一个简单的例子
假设当前(3月份)股票的价格So =50元,月利率是25%。 4月份股票价格有两种可能:S高=100元,S低=25元。有一份看涨期权合约,合约约定在4月份可以以50元价格买进一股股票。现在考虑一个投资组合,进行几项操作:以价格C卖出3份看涨期权合约;以50元购入2股股票;以25%的月利率借人40元现金,
学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹
阅读使人充实,会谈使人敏捷,写作使人精确。——培根
借期为一个月。
根据上述组合,我们可以得到以下到期收益分布表,如表19. 1所示。
表19.1 投资组合的到期收益分布表
四月份
三月份 S低=25元 S高=100元 卖出3份看涨期权合约 3C 0 -150 买人两股股票 -100 50 200 借人现金 40 -50 -50 总计 0 0 0
由一价定律3C-100+40=0,可得C= 20元,即为期权的价格。这个例子说明,可以用一个相当简单的方法为期权定价,唯一需要做的是假设对投资者而言不存在套利机会。我们可以通过某种方式构造一个股票和期权的组合,使得在4月份该组合的价值是确定的。于是我们可以说该组合无风险,它的收益率一定等于无风险收益率。二叉树方法正是基于上述思想构造了二项分布下的风险中性概率。
2)二叉树模型
考虑一个不支付红利的股票期权价格估值。我们把期权的有效期分为很多很小的时间间隔 Δt。假设在每一个时间段内股票价格从开始的价格S以概率p上升到Su,以概率1-p下降到Sd,其中,u>1,O Su4 Su Su3 p Su2 Su2 Su Su S S S S Sd Sd 1-p Sd2 Sd2 Sd Sd3 Sd4 学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹 阅读使人充实,会谈使人敏捷,写作使人精确。——培根 图19. 1股票价值变化的可能性 图19. 2 二叉树模型 例如,我们假定将期权的有效期分成4个时期,在任何一个时期,股票都有两种可能的价值,即每个时间段都假定是一个两状态过程。当N=4时,我们有 以下结点图19. 2。 ertd在风险中性概率Q下,P= ud且有,f0=ert[pfu+(1-p)fd] 其中fu和fd是在△t期后的期权可能的价格分布,分别为期权价格高点和 低点。 令u=1/d,根据股票回报率的方差2t,我们有u=et和d=et 若每个股票价格路径的样本点个数为N+1,那么欧式看涨期权的到期收益的 样本路径为:f N, = max [0,SujdN-j-X], j=0,1,…,N 向后递归可得:fij=et[pfi+1,j+1+(1-p)fi+1,j] 相应欧式看跌期权的到期收益表示:fN,j =max[0,X-SujdN-j], j=0,1,…,N 美式看涨期权的到期收益与欧式看涨期权是一致的,因此我们下面仅考虑美式看跌期权的格子(Lattice): fN,j =max[0,X-SujdN-j], j=0,1,…,N 向后递归可得: max{X-Sujdi-j,et[pfi+1,j+1+(1-p)fi+1,j]}。 i=N-1,N-2,…,0;j=0,1,…i 19. 5 实验过程 我们首先给出欧式期权的二叉树定价的MATLAB代码,然后给出美式期权 的二叉树定价的代码。 19. 5. 1 欧式看涨期权 1)欧式看涨期权的二叉树定价 学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹 阅读使人充实,会谈使人敏捷,写作使人精确。——培根 下面的函数LatticeEurCall( )给出了利用二叉树的方法给欧式看涨期权定 %欧式看涨期权的二叉树定价价: %LatticeEurCall.m function [price, lattice]=LattceEurCall(SO,E,r,T,sigma, N) %S0:股票现价,E:执行价格,r:利率,T:期权的有效期限,sigma:波动率,N: 结点数 deltaT=T/N; %日期步长 u=exp(sigma*sqrt(deltaT); d=1/u; p=(exp(r*deltaT)/(u-d); %凤险中性概率 lattice=zeros(N+ 1, N+1) for j=0,N lattice(N+1,j+1)=max(0,S0*(u^j)*(d^(N-j))-E); end for i=N-1:-1:0 for j=0:i lattice(i+1,j+1)=exp(-r*deltaT)*… 学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹 阅读使人充实,会谈使人敏捷,写作使人精确。——培根 (p* lattice(i+2,j+2)+(1-p)* lattice(i+2,j+1)); end end price= lattice1,1); 假设存在有效期为1年的欧式看涨期权,股票初始价格为50,利率为0. 03,波动率为0. 2,执行价格为40,且令结点数N为10,在命令窗口中输人: [price, lattice]=LatticeEurCall(50,40,0. 03,1,0. 2,10) 就可以得到一个以下三角矩阵表示二叉树的格子以及欧式看涨期权的价格 11. 614 5,如图19. 3所示。 2)欧式看涨期权的二叉树的收敛性质 Gox, Ross & Rubinstein (1979)证明了二叉树收敛于Black-Scholes期权定价 公式。 取当前时刻为t一△t,在给定参数p, u和d的条件下将二叉树公式: f(S,t一△t)=[pf(Su,t)+(1-p)f(Sd,t)]ert 在(S, t)处进行泰勒展开,可以得到: ff1222f(S,t)rS(S,t)S(S,t)(t)0 2tS2S当△t→0时,二叉树模型收敛于Black-Scholes偏微分方程。下面给出一个 二叉树收敛的直观结果,给出代码CompLatticeBls. m。 学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹 阅读使人充实,会谈使人敏捷,写作使人精确。——培根 %二叉树期权定价的收敛性质 %CompLatticeBls. m S0=50; E=50; %执行价格 r=0.1; %年利率 sigma=0.4; %波动率 T=5/12; %有效期限为5个月 N=50; BlasC=blsprice(S0,E,r,T,sigma); LatticeC=zeros)1,N); for i=1:N LatticeC(i)=LatticeEurCall(S0,E,r,T,sigma,i); end plot(1:N,ones(1,N)*BlsC); hold on; plot(1:N,LatticeC); xlabel('N') ylabel('二叉树价格') 学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹 阅读使人充实,会谈使人敏捷,写作使人精确。——培根 运行CompLatticeBls.m,可以得到图19. 4。 从图19. 4可以看出,随着区间长度的缩小,二叉树定价收敛于B一S公式 确定的价格。 19. 5. 2 欧式看跌期权 与欧式看涨期权类似,我们只需将欧式看涨期权的代码稍做改动即可。 学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹 阅读使人充实,会谈使人敏捷,写作使人精确。——培根 %欧式看跌期权的二叉树定价 %LatticeEurPut.m function[price,lattice]=LatticeEurPut(S0,E,r,T,sigma,N) %S0:股票现价,E:执行价格,r:年率,T:期权的有效期限,sigma:波 动率,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 j= 0:N lattice(N+1,j+1)=max(0,E-S0*(u^j)*(d^(N-j))); end for i=N-1:-1:0 for j =0:i lattice (i+1,j+1)=exp(-r*deltaT)*… (p*lattice(i+2,j+2)+(1-p)*lattice(i+2,j+1)); end 学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹 阅读使人充实,会谈使人敏捷,写作使人精确。——培根 end price=lattice(1,1); 19. 5. 3 美式看跌期权的二叉树定价 根据美式看跌期权的递归公式: fij = max{X-Sujdi-j,ert[pfi+1,j+1+(1-p)fi+1,j]} i= N-1,N-2,…,0;j=0,1,…,i 可以编写一下代码: %美式看跌期权的二叉树定价 %LatticeAmPut.m Function[price,lattice]=LatticeAmPut(S0,E,r,T,sigma,N0 %S0股票现价,E:执行价格,r:利率期权的有效期限,sigma:波动率, 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 j= 0;N; Lattice(N+1,j+1)= max(0,E-S0*u^j)*(d^(N-j))); end for i=N-1:-1:0 for j =0:i lattice (i+1,j+1)=max(E-S0*u^j*d^(i-j),exp(-r*deltaT)*… (p*lattice(i+2,j+2)+(1-p)*lattice(i+2,j+1)); end end Price=lattice(1,1); 假设存在有效期为1年的美式看跌期权,股票初始价格为50,利率为0. 03,波动率为0. 2,执行价格为60,且令结点数N为100,在命令窗口中输人: LatticeAmPut ( 50,60,0. 03,1,0. 2,100), 得到美式看跌期权的价格为10. 3056。比较标准Black-Scholes欧式期权定价 公式的结果9. 610 0,显然美式期权的价格要大。 此外,MATLAB7.0金融工具箱还提供了为美式期权二叉树定价的binprice() 函数: [Stockprice, Optionprice]=binprice(S0,E, r, T, dt, sigma, FLAG, q) 其中,FLAG取1时为看涨期权,取0时为看跌期权。q为红利率,可缺省。运行binprice,返回的是股票和期权在每个节点的价值的矩阵。在命令窗口输人: [Stockprice, Optionprice]= binprice( 50,60,0. 03,1,0.01,0.2,0); 和 Optionprice(-1,1) 得到美式看跌期权的价格为10. 305 6。这与我们用LatticeAmPut ( )运行的结 果是一致的。 19. 6 实验报告 学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹 阅读使人充实,会谈使人敏捷,写作使人精确。——培根 在实验报告的撰写上,建议按照标准的实验参考格式。主要应包括:实验室名称、实验项目名称、实验原理、实验目的、实验内容、实验器材、实验步骤、实验数据及结果分析、实验结论等方面,可根据实际需要进行灵活调整。要求实 验结论严谨、可靠、可验证,格式规范、工整。 19. 7 习题 (1)考虑如何编写百慕大期权定价的二叉树代码。 (2)利用二叉树方法计算美式看跌期权的价格,其中期权所依附的股票价格为50元,波动率为30%,无风险利率为10%,期权有效期限为14个月,执行 价格为66元。 学问是异常珍贵的东西,从任何源泉吸收都不可耻。——阿卜·日·法拉兹 因篇幅问题不能全部显示,请点此查看更多更全内容