1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > matlab用arch模型算隐含波动率 金融数量分析8:Black-Scholes公式隐含波动率

matlab用arch模型算隐含波动率 金融数量分析8:Black-Scholes公式隐含波动率

时间:2020-08-02 12:09:58

相关推荐

matlab用arch模型算隐含波动率 金融数量分析8:Black-Scholes公式隐含波动率

Black-Scholes期权定价公式、欧式期权理论价格的表达式为

隐含波动率是将市场上的期权交易价格带入权证理论价格的Black-Scholes模型,反推出来的波动率数值。隐含波动率是一个重要的风险指标。历史波动率反映期权标的证券在过去一段时间的波动幅度,期权发行商与投资者在期权发行初期只能利用历史波动率作参考。一般来说,期权的隐含波动率越高,其隐含的风险也就越大。期权投资者除了可以利用期权的正股价格变化方向来买卖权证外,还可以从股价的波动幅度的变化中获利。一般来说,波动率并不是无限上涨或下跌,而是在一个区间来回振荡,投资者可以采取在隐含波动率较低时买入而在较高时卖出期权的方法来获利。

隐含波动率是把权证的价格代入BS模型中反算出来的,它反映了投资者对未来的证券波动率的预期。利用fsolve函数计算隐含波动率,fsolve是MATLAB最主要内置的解方程组的函数。

假设欧式股票期权现价为100元,一年后执行价格95元,无股利支付,股价年化波动率为50%,无风险利率为10%,则期权价格运算结果为

>>

[call,put]=blsprice(100,95,0.1,0.25,0.5)

call =13.6953

put = 6.3497

假设目前其期权交易价格为Call=15.00元,Put=7.00元,分别计算其相对应的隐含波动率。

Step1:建立方程函数。

看涨期权隐含波动率方程的代码:

function f=ImpliedVolatitityCallObj(Volatility, Price, Strike,

Rate, Time, Callprice)

[Call,Put] = blsprice(Price, Strike, Rate, Time, Volatility);

f=Call-Callprice;

看跌期权隐含波动率方程的代码:

function f=ImpliedVolatitityPutObj(Volatility, Price, Strike,

Rate, Time, Putprice)

[Call,Put] = blsprice(Price, Strike, Rate, Time, Volatility);

f=Put-Putprice;

Step2:求解方程函数

function

[Vc,Vp,Cfval,Pfval]=ImpliedVolatility(Price,Strike,Rate,Time,CallPrice,PutPrice)

Volatility0=1.0;

[Vc,Cfval] =fsolve(@(Volatility)

ImpliedVolatitityCallObj(Volatility, Price, Strike,...

Rate, Time,

CallPrice),Volatility0);

[Vp,Pfval] =fsolve(@(Volatility)

ImpliedVolatitityPutObj(Volatility, Price, Strike, ...

Rate, Time,

PutPrice),Volatility0);

Step3:函数求解

Price=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)

下图为期权价格与波动率关系图,横轴为波动率,纵轴为交易价格。

Price=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);

for i=1:n

[Call(i),Put(i)] = blsprice(Price, Strike, Rate, Time,

Volatility(i));

end

subplot(2,1,1)

plot(Volatility,Call,'-*');

legend('CallPrice')

subplot(2,1,2)

plot(Volatility,Put,'-o');

legend('PutPrice')

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。