1、期权实验课实验报告学号姓名专业期权实验课实验报告一、实验目的利用excel实现期权的二叉树和B-S定价,利用MATLAB实现期权的二叉树定价,对三种方法进行比较。二、实验过程假设当前股价S0=13.57 ,无风险收益率(连续复利)r=0.0286,波动率标准差=0.4996距到期日时间T(年)=0.2521,起始时间为2015/6/1,期权到期时间为2015/9/1,股票分别在2015/7/1和2015/8/1发放2元股息。(一) 期权二叉树定价的excel实现本表可实现至多256步二叉树对有或无红利的欧式或美式的看涨或看跌期权的价格计算。1、基本数据输入区图1 基本数据输入区基本数据输入区包
2、含当前股价S0、无风险收益率r(连续复利)、距到期日时间T(年)、波动率标准差、执行价格K、计算步数(插入 -列表框(窗体控件),在F6:F10分别输入“US (NASD) 30/360”、“实际天数/实际天数”、“实际天数/360”、“实际天数/365”、“欧洲30/360”,右键列表框,点击设置控件格式,如图2所示,在数据源区域选择F6:F10,单元格链接选择G6,均使用绝对地址,下拉显示项数输入5,则选择控件设置完毕。在选择控件下拉选项中选择“US (NASD) 30/360”,发现G6显示为1,实际“US (NASD) 30/360”在YEARFRAC函数中对应0,故在E6中输入公式=
3、$G$6-1。为使界面整洁,将F6:F10、G6中的内容颜色设置为页面背景颜色,从而将内容隐藏。图2 选择控件设置(2)期权类型选择使用组合控件,设置方式与选择空间类似。最终结果链接至C8,点击看涨期权时,C8=1,点击看跌期权时C8=-1。2、风险中性定价参数上升因子,下降因子=1/u,风险中性概率,分别在B10:B12中输入公式:=EXP(C5*SQRT(C4/C7)、=1/C10、=(EXP(C3*C4/C7)-C11)/(C10-C11)。3、股息有红利时,在每个股息发放日将未来的股息折现到该时点,再将该折现值复利到直到下一个股息发放日之间的每一步,并将该值加到对应步数的无红利股价上,
4、得到有红利的总股价。表格设置至多4次股息。折现因子1,2,3,4分别表示将未来现金流折现到起始时期,第一个股息发放日,第二个股息发放日,第三个股息发放日。图3 股息如图3,C15=IF(C14=,YEARFRAC($E$4,C14,$E$6),表示如果C14为空,即期间不发放红利,此期权为无红利期权,则C15也为空,股息部分均为空;如果C14不为空,且日期在起始时间和到期时间之间(否则会提示“输入非日期或者输入日期超出期权有效期外!”,如图4所示),此期权为有红利期权,距离起始时间的期限为第一个股息发放日按E6输入的日期计算方式至期权起始日之间的年数,C16=IF(C$14=,EXP(-$C$
5、3*SUM($C$15:C$15),表示有红利时,以C3的无风险利率为折现率,第一个股息发放日到起始时间的折现因子。图4 日期错误提示在2015/8/1,D15=IF(D14=,YEARFRAC(C14,D14,$E$6),表示第二个股息发放日到第一个股息发放日之间的期限,D16=IF(D$14=,EXP(-$C$3*SUM($C$15:D$15)表示第二个股息发放日到起始日期的折现因子,D17=IF(D$14=,EXP(-$C$3*SUM($D$15:D$15)表示第二个股息发放日到第一个股息发放日的折现因子,以此类推可以得到第三个、第四个股息发放日对应各个时间点的折现因子。接下来计算折现值
6、:C21=IF(C14=,SUMPRODUCT(C16:F16,C$20:$F$20)表示未来各期现金流折现到起始日期,D21=IF(D14=,SUMPRODUCT(D17:F17,D$20:$F$20)表示未来各期现金流折现到第一个股息发放日,以此类推,可以得到第二个、第三个股息发放日的未来现金流折现值。4、股价矩阵图5 股价矩阵自动输出步数N,D23=IF(C23$C$7,C23+1,)表示当前一步小于预先设置的步数时,在前一步的基础上增加一步,否则为空。时间Ti等于步数乘以总时间除以总步数。(0,0)=C26=C2表示零时刻的股价,对于任一步(i,j)(i行j列,0i,jj时,(i,j)
7、为空,否则,(i,j)表示j步时的某一状态的股价,且当ij时,(i,j)=u*(i,j-1),当i=j时,(i,j)=d*(i-1,j-1),换成指数表示为(i,j)=S0*di*u(N-i),比如(1,2)=E27=IF(E$23=,IF($B27C$285,C$285=),C26+IF($C$14=,0,IF(C$286=SUM($C$15:$F$15),0,IF(C$286=SUM($C$15:$E$15),$F$21*EXP($C$3*(C$286-SUM($C$15:$E$15),IF(C$286=SUM($C$15:$D$15),$D$21*EXP($C$3*(C$286-SUM(
8、$C$15:$D$15),IF(C$286=$C$15,$D$21*EXP($C$3*(C$286-$C$15),$C$21*EXP($C$3*C$286),函数可通过图7分解。注:每步左边的条件不满足时即进入右边。图7 总股价矩阵函数图解1 确保总股价矩阵图是上三角,以及将股价限制到最大步数列;2 排除空格后,用无红利股价加上换算后的股息,当第一个股息发放日的日期为空时,即为无红利期权,股息为零,总股价等于无红利股价;3 存在红利时,如果该步的时间Ti大于第四个股息发放日(如果没有第四个股息发放日,则期限为零,对结果没有影响)到期权起始日期之间的时间,则该步对应的应计股息为零;4 如果该步的
9、时间Ti大于第三个股息发放日到期权起始日期之间的时间,则该步的应计股息为3中股息中第三个股息发放日的未来股息折现值按照无风险利率从第三个股息日复利到该步(期限即为该步到第三个股息发放日之间的时间);5 类似第步,如果该步的时间Ti大于第二个股息发放日到期权起始日期之间的时间,则该步的应计股息为3中股息中第二个股息发放日的未来股息折现值按照无风险利率从第二个股息日复利到该步(期限即为该步到第二个股息发放日之间的时间);6 类似第步,如果该步的时间Ti大于第一个股息发放日到期权起始日期之间的时间,则该步的应计股息为3中股息中第一个股息发放日的未来股息折现值按照无风险利率从第一个股息日复利到该步(期
10、限即为该步到第一个股息发放日之间的时间);否则,该步的应计股息为3中股息中期权起始日的未来股息折现值按照无风险利率从期权起始日复利到该步。6、欧式期权价格图8 欧式期权价格C5=IF($B5C$2,IF(C$2=,IF(D$2=,MAX(股价矩阵!$C$8*(股价矩阵!C288-股价矩阵!$C$6),0),EXP(-股价矩阵!$C$3*股价矩阵!$D$24)*(股价矩阵!$C$12*欧式期权价格!D5+(1-股价矩阵!$C$12)*D6),该函数用于计算欧式期权价格,意思是排除空格后,如果是最后一步,则期权价格等于对应的总股价减执行价格的差乘以期权类型的系数与零相比的较大者,看涨期权为1,看跌
11、期权为-1,如果不是最后一步,则每步的期权价格等于下一步的期权价格与风险中性概率乘积的和的贴现值。将0时刻的期权价格链接至第一张表格(股价矩阵)相应位置(I2)。7、美式期权价格图9 美式期权价格C5=IF($B5C$2,IF(C$2=,IF(D$2=,MAX(股价矩阵!$C$8*(股价矩阵!C288-股价矩阵!$C$6),0),MAX(股价矩阵!$C$8*(股价矩阵!C288-股价矩阵!$C$6),EXP(-股价矩阵!$C$3*股价矩阵!$D$24)*(股价矩阵!$C$12*D5+(1-股价矩阵!$C$12)*D6),美式期权价格与欧式期权价格的不同点在于美式期权最后的价格等于按照欧式期权价
12、格计算的结果与提前行权的收益的较大者。将0时刻的期权价格链接至第一张表格(股价矩阵)相应位置(I3)。图10 二叉树的EXCEL实现总图(二)期权B-S定价的excel实现期权B-S定价只需要按照公式计算即可,如图11,在输入区分别输入起初股价S、执行价格K、无风险利率r、波动率、期限T,按照下列公式先计算d1、d2,然后计算得欧式看涨期权和欧式看跌期权的价格。F6=(LN(B4/C4)+(D4+E42/2)*F4)/E4/SQRT(F4)F7=(LN(B4/C4)+(D4-E42/2)*F4)/E4/SQRT(F4)C9=B4*NORM.DIST(F6,0,1,TRUE)-C4*EXP(-D
13、4*F4)*NORM.DIST(F7,0,1,TRUE)C10=B4*(NORM.DIST(F6,0,1,TRUE)-1)-C4*EXP(-D4*F4)*(NORM.DIST(F7,0,1,TRUE)-1)图11 欧式期权B-S的excel实现(三)期权二叉树定价的MATLAB实现通过自编函数实现有红利和无红利的欧式或者美式的看涨或者看跌的期权价格,函数代码如下:function option,price = opt_price(S,K,r,T,sigma,N,opt,flag,T_bonus,bonus) %看涨期权二叉树定价% 输入参数% S 股票/资产当前价格% K 期权执行价格% r
14、无风险利率% sigma 股票/资产的年波动率标准差% N 二叉树的步数% opt 期权的类型,欧式期权opt=1,美式期权opt=0% flag 可选参数,期权类型,看涨期权flag=1,看跌期权flag=-1,默认为1% T_bonus 可选参数,红利发放的时间矩阵,1*n% bonus 可选参数,红利的值,1*n% 输出参数% Price 期权的价格二叉树矩阵% option 期权价格% 江波 2015-06-27 第一次编辑,时间仓促,函数还不甚完善%if nargin 7 error(message(输入参数不足) elseif nargin 1 for i=1:B-1 f(1)=d
15、ot(exp(-r.*T_bonus),bonus); f(i+1)=dot(exp(-r.*(T_bonus(i+1:B)-(T_bonus(i),bonus(i+1:B); endendfor j=1:B k=1; tt=0,T_bonus(1:B-1); for i=k:N+1 if i*dtT_bonus(j) bon(i)=f(j)*exp(r*(i*dt)-tt(j);%红利矩阵 k=i; else break end endend%股价矩阵计算%j=0:N; price(:,N+1) = max(0,flag*(S*u.(N-j).*d.j -K);stock=zeros(N,N
16、);for j=1:N for i=1:N if i=j stock(i,j)=S*u(j-i)*d(i-1)+bon(j); end endend%期权价格二叉树% for j=N-1:-1:0 for i=0:j if opt=1 price(i+1,j+1) =exp(-r*dt)*(p*price(i+1,j+2)+(1-p)*price(i+2,j+2);%欧式期权 elseif opt=0price(i+1,j+1)=max(exp(-r*dt)*(p*price(i+1,j+2)+(1-p)*price(i+2,j+2),flag*(stock(i+1,j+1) -K);%美式期
17、权 end end end option=price(1,1); if nargout=2 price; option;else option;end%在MATLAB中运行命令:opt1=opt_price(13.57,20,0.0286,0.2521,0.4596,16,1,1)opt2=opt_price(13.57,20,0.0286,0.2521,0.4596,16,1,-1)opt3=opt_price(13.57,20,0.0286,0.2521,0.4596,16,0,1)opt4=opt_price(13.57,20,0.0286,0.2521,0.4596,16,0,-1)o
18、pt11=opt_price(13.57,20,0.0286,0.2521,0.4596,16,1,1,0.08219,0.16712,2,2)opt22=opt_price(13.57,20,0.0286,0.2521,0.4596,16,1,-1,0.08219,0.16712,2,2)opt33=opt_price(13.57,20,0.0286,0.2521,0.4596,16,0,1,0.08219,0.16712,2,2)opt44=opt_price(13.57,20,0.0286,0.2521,0.4596,16,0,-1,0.08219,0.16712,2,2)得到结果:op
19、t1 = 0.0761opt2 = 6.3624opt3 = 0.0761opt4 = 6.4475opt11 = 0.0761opt22 = 6.3624opt33 = 0.0915opt44 = 6.4070分别表示无红利欧式看涨看跌,无红利美式看涨看跌,有红利欧式看涨看跌,有红利美式看涨看跌。三、实验结果分析表1 二叉树EXCEL与MATLAB实现对比EXCELMATLAB有红利看涨欧式期权0.032840.0761美式期权0.068190.0915看跌欧式期权6.319186.3624美式期权6.436.4070无红利看涨欧式期权0.032840.0761美式期权0.032840.07
20、61看跌欧式期权6.319186.3624美式期权6.436.4475从表1可以明显看出无红利的欧式看涨期权与美式看涨期权的价格是一致的,验证了无红利美式看涨期权不会提前行权的结论。EXCEL和MATLAB均采取的是16步计算,可以看到两者的计算结果存在差异,一方面MATLAB中的输入参数在EXCEL基础上进行了小数位数的选取,另一方面两者的计算中的精确度不同,导致两者计算结果的差异。(注:由于时间仓促,MATLAB编程的函数可能存在一定缺陷,导致计算结果存在较大偏差。)表2 EXCEL实现的二叉树与B-S对比步数163264128256B-S欧式看涨期权0.0328416850.036101
21、5760.0362157320.0360026730.0366508910.115281386欧式看跌期权6.3191847606.3224446506.3225588076.3223457476.3229939656.401598788表2显示,EXCEL实现的二叉树期权定价与EXCEL实现的B-S期权定价的结果存在差异,但随着二叉树的步数的增加,其结果越来越接近B-S定价的结果,可以猜想当二叉树的步数无限增大时,即得到B-S定价公式。对比三者计算得到的无红利欧式看涨期权和看跌期权的价格,可以发现B-S公式计算结果更为准确,MATLAB由于变量输入时存在一定偏差导致计算结果偏差较大。进一步分析,B-S公式实际上二叉树的推广,因而其计算结果是精确值。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1