您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > Matlab中文论坛对此书提供有问必答服务
Matlab中文论坛对此书提供有问必答服务,该书作者长期在线《金融数量分析—基于MATLAB编程》,预定方式:第六章金融数量计算技巧与实例金融数量分析是充满变革与创新的世界,从上个世纪50年代的马克维茨模型,到70年代的BS期权定价公式,到90年代CDOs的定价模型等等,这些模型无在当时无处是创新的产物。在金融数量分析的学习与研究中,往往遇见没有现成求解工具的模型,需要我们利用基本数学原理或者数值计算软件根据实际的需要进行金融数量模型的建立、模型的求解、模型的验证等。在这个过程中,不仅需要数学原理,可能需要更多的数值处理技巧。或许只有在数学原理与数值技术有效的结合的前提先,才能更有效的求解金融数学模型。本章以BS公式的隐含波动率计算、KMV模型方程组的求解、移动平均hurst指数计算与基于优化方法的指追踪技术为例,展示在金融数量分析的步骤与技巧。6.1BS公式隐含波动率计算6.1.1隐含波动率概念如在第二章介绍的Black-Scholes期权定价公式,欧式买权解的表达式:()12()()rTtttcSNdXeNd−−=−()21[1()][1()]rTttpXeNdSNd−−=×−−×−其中,2121/221/221[ln()()()]2[()]()tSrTtXdTtddTtσσσ++−=−=−−Black-Scholes期权定价模型将股票期权价格的主要因素分为五个:tS:标的资产市场价格X:执行价格r:无风险利率σ:标的资产价格波动率Tt−:距离到期时间。一般情况下,已知上述五个参数即可计算出相对应的期权价格。期权可以在交易所进行交易的,但其交易价格不一定为根据历史波动率由BS公式计算出的理论价格。主要原因为投资者认为该期权标的证券的波动率与其历史波动率不一致所致。例如,期权标的证券代表的公司可能将发生合并重组、资产注入或者由于投资非理性投资造成。隐含波动率是将市场上的期权交易价格代入权证理论价格Black-Scholes模型,反推出来的波动率数值。由于期权定价BS模型给出了期权价格与五个基本参数之间的定量关系,只要将其中前4个基本参数及期权的实际市场价格作为已知量代入定价公式,就可以从中解出惟一的未知量,其大小就是隐含波动率。Matlab中文论坛对此书提供有问必答服务,该书作者长期在线《金融数量分析—基于MATLAB编程》,预定方式:隐含波动率是一个重要的风险指标。历史波动率反映标的期权标的证券在过去一段时间的波动幅度,期权发行商与投资者在期权发行初期只能利用历史波动率作参考。一般来说,期权的隐含波动率越高,其隐含的风险也就越大。期权投资者除了可以利用期权的正股价格变化方向来买卖权证外,还可以从股价的波动幅度的变化中获利。一般来说,波动率并不是可以无限上涨或下跌,而是在一个区间内来回震荡,投资者可以采取在隐含波动率较低时买入而在较高时卖出期权的方法来获利。如何判断一个期权的价格是否高估?主要应该看隐含波动率与其标的证券的历史波幅之间的关系。隐含波动率是市场对其标的证券未来一段时间内的波动预期,与期权价格是同方向变化。一般而言,隐含波动率不会与历史波幅相等,但在其标的证券的基本面保持稳健的条件下,应该相差不大。6.1.2隐含波动率计算方法隐含波动率是把权证的价格代入BS模型中反算出来的,它反映了投资者对未来标的证券波动率的预期。Black-Scholes期权定价公式中已知:tS:标的资产市场价格,X:执行价格,r:无风险利率,Tt−:距离到期时间,看涨期权tc或者看跌期权tp根据BS公式计算出与其相应的隐含波动率yinσ数学模型为:()12()()()0rTtcyinttfSNdXeNdcσ−−=−−=()21()[1()][1()]0rTtpyintfXeNdSNdpσ−−=×−−×−−=其中2121/221/221[ln()()()]2[()]()yintyinyinSrTtXdTtddTtσσσ++−=−=−−求解方程()0,()0cyinpyinffσσ==的根。6.1.3隐含波动率计算程序利用fsolve函数计算隐含波动率,fsolve是matlab最主要内置的求解方程组的函数,具体fsolve的使用方法可以参看AppendixB:相关函数说明。例6.1假设欧式股票期权,一年后,执行价格95元,现价为100元,无股利支付,股价年化波动率为50%,无风险利率为10%,则期权价格为:[Call,Put]=blsprice(100,95,0.1,0.25,0.5)Call=13.6953Put=6.3497假设目前其期权交易价格为Call=15.00,Put=7.00分别计算其相对应的隐含波动率。步骤1:建立方程函数看涨期权隐含波动率方程:M文件ImpliedVolatitityCallObj.MMatlab中文论坛对此书提供有问必答服务,该书作者长期在线《金融数量分析—基于MATLAB编程》,预定方式:=ImpliedVolatitityCallObj(Volatility,Price,Strike,Rate,Time,Callprice)输入参数:Volatility:标的资产价格波动率Price:标的资产市场价格Strike:执行价格Rate:无风险利率Time:距离到期时间Callprice:看涨期权价格输出函数:f:()cyinfσ的函数值程序源码:functionf=ImpliedVolatitityCallObj(Volatility,Price,Strike,Rate,Time,Callprice)%ImpliedVolatitityCallObj%codebyariszheng@gmail.com2009-8-3[Call,Put]=blsprice(Price,Strike,Rate,Time,Volatility);%fc(ImpliedVolatitity)=Call-Callprice=0f=Call-Callprice;看跌期权隐含波动率方程:M文件ImpliedVolatitityPutObj.Mf=ImpliedVolatitityPutObj(Volatility,Price,Strike,Rate,Time,Putprice)输入参数:Volatility:标的资产价格波动率Price:标的资产市场价格Strike:执行价格Rate:无风险利率Time:距离到期时间Putprice:看跌期权价格输出函数:f:()pyinfσ的函数值程序源码:functionf=ImpliedVolatitityPutObj(Volatility,Price,Strike,Rate,Time,Putprice)%ImpliedVolatitityCallObj%codebyariszheng@gmail.com2009-8-3[Call,Put]=blsprice(Price,Strike,Rate,Time,Volatility);%fp(ImpliedVolatitity)=Put-Putprice=0f=Put-Putprice;步骤2:求解方程函数:M文件ImpliedVolatility.m[Vc,Vp,Cfval,Pfval]=ImpliedVolatility(Price,Strike,Rate,Time,CallPrice,PutPrice)输入参数:Price:标的资产市场价格Strike:执行价格Matlab中文论坛对此书提供有问必答服务,该书作者长期在线《金融数量分析—基于MATLAB编程》,预定方式::无风险利率Time:距离到期时间Callprice:看涨期权价格Putprice:看跌期权价格输出函数:Vc:看涨期权的隐含波动率Vp:看跌期权的隐含波动率Cfval:()cyinfσ的函数值,若为0,则隐含波动率计算正确;Pfval:()pyinfσ的函数值,若为0,则隐含波动率计算正确;程序源码:function[Vc,Vp,Cfval,Pfval]=ImpliedVolatility(Price,Strike,Rate,Time,CallPrice,PutPrice)%ImpliedVolatility%codebyariszheng@gmail.com2009-8-3%优化算法初始迭代点;Volatility0=1.0;%CallPrice对应的隐含波动率[Vc,Cfval]=fsolve(@(Volatility)ImpliedVolatitityCallObj(Volatility,Price,Strike,...Rate,Time,CallPrice),Volatility0);%CallPrice对应的隐含波动率[Vp,Pfval]=fsolve(@(Volatility)ImpliedVolatitityPutObj(Volatility,Price,Strike,...Rate,Time,PutPrice),Volatility0);步骤3:函数求解:M文件TestImpliedVolatility.M%TestImpliedVolatilityPrice=100;Strike=95;Rate=0.10;Time=1.0;CallPrice=15.0;%看涨期权交易价格PutPrice=7.0;%看跌期权交易价格[Vc,Vp,Cfval,Pfval]=ImpliedVolatility(Price,Strike,Rate,Time,CallPrice,PutPrice)计算结果Optimizationterminated:first-orderoptimalityislessthanoptions.TolFun.Optimizationterminated:first-orderoptimalityislessthanoptions.TolFun.Vc=0.1417Vp=0.3479Cfval=3.7957e-011Pfval=7.1054e-015结果说明Cfval与Pfval函数值为0说明计算出Vc与Vp为方程的解,即期权交易价格Matlab中文论坛对此书提供有问必答服务,该书作者长期在线《金融数量分析—基于MATLAB编程》,预定方式:为Call=15.00,Put=7.00分别计算其相对应的隐含波动率为14.17%与34.79%。波动率与价格关系图像:图6.1波动率与价格关系图在其他条件不变的情况下,图6.2为期权价格与波动率关系图,横轴为波动率,纵轴为交易价格。画图程序M文件VolatilityPrice.mPrice=100;Strike=95;Rate=0.10;Time=1.0;Volatility=0:0.1:2.0;n=length(Volatility);Call=zeros(n,1);Put=zeros(n,1);fori=1:n[Call(i),Put(i)]=blsprice(Price,Strike,Rate,Time,Volatility(i));endsubplot(2,1,1)plot(Volatility,Call,'-*');legend('CallPrice')subplot(2,1,2)plot(Volatility,Put,'-o');le
本文标题:Matlab中文论坛对此书提供有问必答服务
链接地址:https://www.777doc.com/doc-1579760 .html