6、波动率偏斜:偏斜的定义与度量、偏斜的交易策略、偏斜的量化建模
波动率偏斜,这词听着挺唬人。说白了,就是同一个标的、不同行权价的期权,隐含波动率不一样。我刚开始做期权交易那会儿,总觉得这现象很奇怪——明明是一个股票,怎么换个行权价,波动率就变了?后来踩过几次坑才明白,这背后藏着市场对尾部风险的定价。
嗯,咱们今天就把这个事儿彻底聊透。
6.1 偏斜的定义与度量
先给个准确定义:波动率偏斜(Volatility Skew),指的是隐含波动率随行权价变化的曲线形态。你想想看,如果市场完全有效、没有黑天鹅,那所有行权价的隐含波动率应该一样,对吧?但现实不是这样。
我习惯把偏斜分成两种常见形态:
- 正向偏斜(Forward Skew):行权价越高,隐含波动率越大。常见于商品市场,比如原油、黄金。
- 反向偏斜(Reverse Skew):行权价越低,隐含波动率越大。这是股票市场的常态,尤其是美股。
为什么会这样?说白了,股票市场里大家更怕暴跌。你想想看,一个股票从100跌到50,跌幅50%;但从100涨到150,涨幅才50%。下跌的杀伤力更大,所以虚值看跌期权更贵,隐含波动率更高。
度量偏斜,我常用的指标有三个:
| 指标 | 定义 | 我的用法 |
|---|---|---|
| 25-delta 偏斜 | 25-delta 看跌期权与看涨期权的隐含波动率之差 | 最常用,反映尾部风险溢价 |
| 偏斜斜率 | 隐含波动率对行权价的一阶导数 | 判断偏斜变化方向 |
| 偏斜曲率 | 隐含波动率对行权价的二阶导数 | 捕捉偏斜的凸性特征 |
举个例子。假设某股票当前价格100元,ATM隐含波动率20%。25-delta看跌的隐含波动率是24%,25-delta看涨是18%。那25-delta偏斜就是24% - 18% = 6%。这个6%就是市场对左尾风险的定价。
核心观点:偏斜不是噪声,是信息。它告诉你市场在担心什么。
6.2 偏斜的交易策略
知道了偏斜怎么度量,接下来就是怎么用它赚钱。我做过不少偏斜交易,踩过坑也赚过钱。这里分享几个我常用的策略。
6.2.1 风险逆转(Risk Reversal)
这是最经典的偏斜交易策略。做法很简单:卖出虚值看跌期权,买入虚值看涨期权。如果偏斜过大(即虚值看跌太贵),这个组合可以赚偏斜回归的钱。
我曾经在2020年3月市场暴跌后做过一笔风险逆转。当时标普500的25-delta偏斜飙到了15%以上,历史均值才5%左右。我卖出了虚值看跌,买入了虚值看涨。结果一个月后偏斜回归到8%,这笔交易赚了不少。
避坑指南:我曾经犯过一个错误——在市场恐慌时做风险逆转,结果偏斜继续扩大,亏得很惨。后来我学乖了:偏斜交易一定要设止损,因为偏斜可以持续偏离很久。
6.2.2 偏斜套利(Skew Arbitrage)
这个策略更精细。它利用不同行权价之间的隐含波动率差异。比如,我发现25-delta看跌的隐含波动率比15-delta看跌低了2%。这明显不合理——更虚值的期权应该更贵才对。于是我做多25-delta看跌,做空15-delta看跌,赚这个价差回归的钱。
嗯,这里要注意:偏斜套利需要精确的Delta对冲,不然方向性风险会吃掉你的利润。
6.2.3 偏斜与期限结构结合
我个人觉得,这是最有意思的策略。把偏斜和期限结构结合起来看,能发现很多机会。比如,短期偏斜很大但长期偏斜正常,说明市场短期恐慌但长期理性。这时候可以卖出短期虚值看跌,买入长期虚值看跌,赚期限结构回归的钱。
你想想看,这种策略本质上是在赌恐慌情绪会消退。我做过几次,胜率还不错,但需要耐心。
6.3 偏斜的量化建模
交易策略讲完了,咱们来点硬核的——怎么用数学模型描述偏斜。说实话,这部分我花了不少时间才搞明白。
6.3.1 多项式拟合
最简单的办法,用多项式拟合隐含波动率曲线。我一般用二次多项式:
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
# 假设我们有行权价和对应的隐含波动率
strikes = np.array([90, 95, 100, 105, 110])
iv = np.array([0.25, 0.22, 0.20, 0.19, 0.18])
# 构造二次多项式特征
poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(strikes.reshape(-1, 1))
# 拟合模型
model = LinearRegression()
model.fit(X_poly, iv)
# 预测
strikes_new = np.linspace(85, 115, 100)
X_new = poly.transform(strikes_new.reshape(-1, 1))
iv_pred = model.predict(X_new)
# 偏斜斜率 = 一阶导数
# 偏斜曲率 = 二阶导数
# 系数在 model.coef_ 中
print(f"偏斜斜率(线性项): {model.coef_[1]:.4f}")
print(f"偏斜曲率(二次项): {model.coef_[2]:.4f}")
这个方法简单直观,但有个问题——多项式在边界处容易发散。我建议只用在ATM附近,别往太虚值的地方推。
6.3.2 SVI模型
如果多项式不够用,那就上SVI(Stochastic Volatility Inspired)模型。这是Gatheral在2004年提出的,专门用来拟合波动率偏斜。公式长这样:
def svi_model(k, a, b, rho, m, sigma):
"""
k: 对数行权价 ln(K/S)
a, b, rho, m, sigma: SVI参数
"""
term = np.sqrt((k - m)**2 + sigma**2)
return a + b * (rho * (k - m) + term)
五个参数各有含义:
- a:整体波动率水平
- b:偏斜的陡峭程度
- rho:偏斜的方向(正负)
- m:偏斜的偏移位置
- sigma:偏斜的曲率
我在项目中用SVI拟合过上千个交易日的数据。说实话,这模型拟合效果很好,但参数优化有点麻烦。我一般用Levenberg-Marquardt算法来求解。
注意:SVI模型对初始值很敏感。我建议先用多项式拟合的结果作为初始值,再跑优化。不然很容易陷入局部最优。
6.3.3 偏斜的统计建模
除了拟合曲线,我们还可以对偏斜本身做统计建模。比如,用ARIMA模型预测偏斜的变化:
from statsmodels.tsa.arima.model import ARIMA
# 假设 skew_series 是每日25-delta偏斜的时间序列
model = ARIMA(skew_series, order=(2, 1, 1))
results = model.fit()
# 预测未来5天的偏斜
forecast = results.forecast(steps=5)
print(f"未来5天偏斜预测: {forecast}")
我个人习惯把偏斜建模分成两步:第一步用SVI拟合当日曲线,第二步对SVI参数做时间序列建模。这样既能捕捉截面特征,又能预测时间变化。
6.4 偏斜的实战应用
最后,聊聊偏斜在实际交易中怎么用。我总结了三句话:
- 偏斜是情绪指标:偏斜扩大,说明市场恐慌;偏斜收窄,说明市场平静。
- 偏斜是定价基准:做期权组合时,一定要考虑偏斜对希腊字母的影响。比如,Vega在偏斜大的地方更敏感。
- 偏斜是交易信号:当偏斜偏离历史均值超过两个标准差时,往往意味着交易机会。
嗯,偏斜这东西,说难不难,说简单也不简单。关键是要理解它背后的市场逻辑,而不是死记硬背公式。我刚开始做量化时,总想着用最复杂的模型去拟合偏斜,结果过拟合得一塌糊涂。后来才明白,简单模型+正确逻辑,远胜于复杂模型+错误假设。
希望今天的分享对你有帮助。偏斜的世界很深,咱们慢慢探索。
公众号:蓝海资料掘金营,微信deep3321