背景描述:
波动率微笑是指描述期权隐含波动率与执行价格函数关系的图形。隐含波动率既依赖于执行价格,又依赖于期限。当短期的历史波动率较低时,波动率往往是期限的递增函数,因为这时波动率预期会升高。类似地,当短期的历史波动率较高时,波动率往往是期限的递减函数,因为这时波动率预期会减小。波动率曲面是将波动率关于期限和行权价格的函数。
如何在QuantPlus中利用隐含波动率构造波动率曲面?
下面是在相应的行权价格和期限下,根据市场数据推出的外汇期权的波动率。然而这样的市场数据有限,我们如果想要得到行权价格为0.98、期限为2个月的期权的隐含波动率,那么我们就要用插值方法来构造波动率曲面,从而得到不同期限和行权价格下的波动率。
K |
1M |
3M |
6M |
1Y |
2Y |
5Y |
0.9 |
0.142 |
0.14 |
0.141 |
0.147 |
0.15 |
0.148 |
0.95 |
0.13 |
0.13 |
0.133 |
0.14 |
0.144 |
0.146 |
1 |
0.12 |
0.12 |
0.125 |
0.135 |
0.14 |
0.144 |
1.05 |
0.131 |
0.131 |
0.134 |
0.14 |
0.145 |
0.147 |
1.1 |
0.145 |
0.142 |
0.143 |
0.148 |
0.151 |
0.15 |
这里我们利用的两个函数为qpblackvariancesurface和qpBlackVolTermStructureBlackVol两个函数。qpblackvariancesurface函数是用来构造波动率曲象,qpBlackVolTermStructureBlackVol是通过插值方法对相应敲定价格和期限计算波动率。我们这里用的插值方法是二元线性(Bilinear)。
我们来了解一下如何用qpblackvariancesurface来构造波动率曲面对象。所需参数如下:
ObjectId:波动率曲面对象名称;
SettlementDate:期权到期日;
Calendar:交易日历;
Dates:期权到期时间(如1d,1m);
Strikes:行权价格;
Volatilities:相应到期时间和行权价格下的隐含波动率(已有的市场数据反推得出,一般财经网站如yahoo finance有直接推出的数据);
Daycounter:日期计数规则;
依次输入相应数据,即可构建一个波动率曲面对象。
构建完之后我们需要得到其他不同行权价格和到期时间下的隐含波动率,我们就要用插值,这里我们用的是二元插值里的线性插值法。我们首先自己设定插值所需的期权到期时间和行权价格范围,然后利用函数qpBlackVolTermStructureBlackVol进行插值,所需参数如下:
Objectid:构建的波动率曲面对象名;
OptionDate:期权到期时间(如1M);
Strike:期权行权价格;
AllowExtrapolation:输入True,表示允许插值。
当我们插值得到不同期限和行权价格下的波动率,即可绘制波动率曲面图形。
之前我们用的是2元线性插值,而其实QuantPlus支持多种2元插值方法。我们这里用到的函数有:qpInterpolation2D构造波动率曲面对象,qpInterpolation2DInterpolate用来插值。我们首先来了解qpInterpolation2D函数相关参数:
ObjectId:波动率曲面对象名称;
Interpolation Type:插值方法,可选择Bilinear和Bicubic方法,其中Bilinear方法结果和我们(1)中得到的结果一样;
XArray:期权到期时间,这里我们是用的天数(如30,60),和方法(1)中的1D,1M表示天数的方法不一样;
YArray:期权行权价格;
Zmatrix:相应行权价格和期限下的隐含波动率(市场数据得出);
构建完波动率曲面对象之后,我们使用qpInterpolation2DInterpolate函数来插值,所需插值参数如下:
Objectid:构建的波动率曲面对象名;
Xvalue:期权到期时间(天数,如30);
Yvalue:期权行权价格;
AllowExtrapolation:输入True,表示允许插值。
当我们插值得到不同期限和行权价格下的波动率,即可绘制波动率曲面图形。
下图是构建出来的波动率曲面图形,可以下载附件里的Excel示例文件进行浏览:
附录:Bilinear,Bicubic原理介绍
Bilinear:
我们有四个点Q11 = (x1, y1), Q12 =
(x1, y2), Q21 =
(x2, y1), Q22 =
(x2, y2)和对应f的值,可以将插值函数写成如下形式:
系数可以由以下矩阵得出:
[math]f(x, y_1) &\approx \frac{x_2-x}{x_2-x_1}
f(Q_{11}) + \frac{x-x_1}{x_2-x_1} f(Q_{21})[/math]
[math]f(x, y_2) &\approx \frac{x_2-x}{x_2-x_1}
f(Q_{12}) + \frac{x-x_1}{x_2-x_1} f(Q_{22})[/math]
Bicubic:
我们有[math]f[/math]和其导数[math]f_x[/math] ,[math]f_y[/math]
和[math]f_{xy}[/math] ,它在四个角落(0,0) ,(1,0) ,(0,1) ,(1,1) 和 的值已经知道,那么插值可以写成如下形式:
[math]p(x,y) = \sum\limits_{i=0}^3
\sum_{j=0}^3 a_{ij} x^i y^j[/math]
解出系数,即可进行相应的插值。
Attachments
- Interpolation2D_ (21 kB)