波动率微笑
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
波动率微笑及曲面测试
周杨汪灏
实验目的
1、描绘期权隐含波动率与执行价格之间函数关系的图形。
实验原理
1、隐含波动率是将市场上的期权交易价格代入权证理论价格 Black-Scholes模型,反推
出来的波动率数值。由于期权定价BS模型给出了期权价格与五个基本参数之间的定量关系,只要将其中前4个基本参数及期权的实际市场价格作为已知量代入定价公式,就可以从中解出惟一的未知量,其大小就是隐含波动率。
验证过程
1、以上证50etf 4月、6月到期期权为例
2、利用b-s公式,反推出来隐含波动率,计算在不同K下的隐含波动率
3、画出不同k所对应的隐含波动率函数图像
代码
S0=2.789;
r=5/100;
T=[0.06];
K=[ 2.6 2.65 2.7 2.75 2.80 2.85];
c=[ 0.212 0.172 0.1366 0.1028 0.0797 0.0595];
IV=blsimpv(S0,K,r,T,c);
plot(K,IV);
>> S0=2.789;
r=5/100;
T=[0.23];
K=[2.6 2.65 2.7 2.75 2.80 2.85];
c=[ 0.2664 0.2331 0.2022 0.1758 0.1432 0.1261]; IV=blsimpv(S0,K,r,T,c);
plot(K,IV);
>> x=[2.6 2.65 2.7 2.75 2.80 2.85];
y=[0.48 0.23 0.06];
z=[0.2913 0.2915 0.2940 0.2846 0.2971 0.3022;
0.2509 0.2543 0.2565 0.2616 0.2493 0.2609;
0.2072 0.2034 0.2132 0.2175 0.2196 0.2386];
surf(x,y,z);
shading interp;
axis tight; grid on;
title('Implied Volatility Surface','Fontsize',24,'FontWeight','Bold','interpreter','latex'); xlabel('K','Fontsize',20,'FontWeight','Bold','interpreter','latex');
ylabel('T','Fontsize',20,'FontWeight','Bold','interpreter','latex');
zlabel('Implied Volatility ','Fontsize',20,'FontWeight','Bold','interpreter','latex');
set(gca,'Fontsize',16,'FontWeight','Bold','LineWidth',2);
结论与问题
1.描绘图形与基本假设一直,执行价格与隐含波动率函数关系图基本符合波动率微笑。
2.波动率微笑对看涨期权与看跌期权是一致的?存在的原因?期限增大时,波动变小?
附录:如何求解隐含波动率
Function ImpliedCallVolatility(UnderlyingPrice, ExercisePrice, Time, Interest, Target, Dividend) High = 5
Low = 0
Do While (High - Low) > 0.0001
If CallOption(UnderlyingPrice, ExercisePrice, Time, Interest, (High + Low) / 2, Dividend) > Target Then
High = (High + Low) / 2
Else: Low = (High + Low) / 2
End If
Loop
ImpliedCallVolatility = (High + Low) / 2
End Function
Function ImpliedPutVolatility(UnderlyingPrice, ExercisePrice, Time, Interest, Target, Dividend)
High = 5
Low = 0
Do While (High - Low) > 0.0001
If PutOption(UnderlyingPrice, ExercisePrice, Time, Interest, (High + Low) / 2, Dividend) > Target Then
High = (High + Low) / 2
Else: Low = (High + Low) / 2
End If
Loop
ImpliedPutVolatility = (High + Low) / 2
End Function