主题切换
11.2 波动率曲面与套利
概念详解
Black-Scholes 模型假设波动率为常数,但实际市场报价反推得到的隐含波动率(IV)在不同行权价、不同到期日下都不同。把 IV 看作行权价和到期时间的函数,就形成了隐含波动率曲面(Implied Volatility Surface)。
波动率曲面有三个核心维度:
- 行权价维度(Moneyness): 通常以 moneyness
或 log-moneyness 表示 - 到期时间维度(Tenor): 从 1 周到 2 年不等
- 日历维度: 同一行权价、不同到期日的 IV 路径
曲面之所以"非平",根源于 BS 模型的局限性——它无法刻画跳跃、波动率聚集、跳跃风险溢价等真实市场特征。本章讲解曲面的几何规律、套利约束,以及业界主流的参数化方法(SVI/SABR)。
名词解释:SVI(Stochastic Volatility Inspired)
Gatheral (2004) 提出的波动率曲面参数化方法,用 5 个参数
名词解释:随机波动率(Stochastic Volatility, SV)
允许波动率本身也是随机过程的模型(如 Heston、SABR)。SV 模型相比 BS 模型具有更强的解释力——可以拟合 vol smile、波动率聚集、波动率均值回归等特征。代价是定价速度较慢、需要校准。
波动率微笑与偏斜
波动率微笑(Volatility Smile)是指当以行权价为横轴、隐含波动率为纵轴时,曲线呈现两端高、中间低的"微笑"形态。但在实际市场中,特别是在股票指数期权市场,更常见的形态是波动率偏斜(Volatility Skew)——低行权价的IV显著高于高行权价。
名词解释:隐含波动率(Implied Volatility, IV)
将期权的市场价格代入 Black-Scholes 公式,反向求解出的波动率参数。IV 是市场对未来波动的"预期",而非对历史的统计。
波动率偏斜的成因:
- 杠杆效应(Leverage Effect):股价下跌导致杠杆率上升,波动率自然增大;该效应由 Black (1976) 最早提出
- 崩盘恐惧溢价(Crashophobia):投资者愿意为下行保护支付更高的溢价,尤其是在1987年股灾之后
- 供需结构失衡:机构投资者大量买入OTM看跌期权进行组合保险,推高了左尾IV
此处有展示代码展开 ▼
python
import numpy as np
import matplotlib.pyplot as plt
# 模拟典型的波动率偏斜(指数期权)
strikes = np.linspace(80, 120, 50)
S0 = 100
# 偏斜模型:IV与moneyness呈负相关
atm_vol = 0.20
skew = -0.15 # 偏斜系数,负值表示左尾更高
iv = atm_vol + skew * (strikes - S0) / S0
plt.plot(strikes, iv * 100, 'b-', linewidth=2)
plt.axvline(x=S0, color='gray', linestyle='--')
plt.xlabel('行权价 K')
plt.ylabel('隐含波动率 (%)')
plt.title('波动率偏斜 (Volatility Skew)')点击展开可浏览运行结果
--- S0 (int) --- 100 --- atm_vol (float) --- 0.2 --- iv (ndarray) --- ndarray shape=(50,) dtype=float64 head10=[np.float64(0.23), np.float64(0.22877551020408166), np.float64(0.22755102040816327), np.float64(0.22632653061224492), np.float64(0.22510204081632654), np.float64(0.22387755102040818), np.float64(0.2226530612244898), np.float64(0.22142857142857145), np.float64(0.2202040816326531), np.float64(0.2189795918367347)] --- skew (float) --- -0.15 --- strikes (ndarray) --- ndarray shape=(50,) dtype=float64 head10=[np.float64(80.0), np.float64(80.81632653061224), np.float64(81.63265306122449), np.float64(82.44897959183673), np.float64(83.26530612244898), np.float64(84.08163265306122), np.float64(84.89795918367346), np.float64(85.71428571428571), np.float64(86.53061224489795), np.float64(87.34693877551021)]
波动率期限结构
波动率期限结构(Volatility Term Structure)描述的是同一标的、不同到期日期权的隐含波动率之间的关系。
典型的期限结构形态:
- 向上倾斜(Contango):远期IV > 近期IV,通常出现在市场平静期,反映不确定性随时间累积
- 向下倾斜(Backwardation):近期IV > 远期IV,通常出现在危机期间,市场预期短期风险会消退
- 驼峰形:中期IV最高,反映特定事件风险(如大选、财报季后)
此处有展示代码展开 ▼
python
# VIX 期限结构分析
# VIX 期货价格反映市场对未来波动率的预期
vix_spot = 18.5
vix_futures = {
'1M': 19.2,
'2M': 19.8,
'3M': 20.1,
'6M': 20.5,
'9M': 20.3,
}
# 计算期限结构斜率
months = [1, 2, 3, 6, 9]
futures_vals = [19.2, 19.8, 20.1, 20.5, 20.3]
# contango 程度:远期 vs 即期
contango = futures_vals[-1] - vix_spot
print(f"期限结构为: {'Contango' if contango > 0 else 'Backwardation'}")
print(f"Contango/Backwardation 程度: {contango:.1f} 个波动率点")点击展开可浏览运行结果
期限结构为: Contango Contango/Backwardation 程度: 1.8 个波动率点
波动率曲面套利约束
一个无套利的波动率曲面必须同时满足以下约束。
无日历套利(No Calendar Arbitrage)
对于同一行权价、不同到期日的期权,总方差必须随到期时间单调递增:
$$\sigma^2(K, T_1) \cdot T_1 \leq \sigma^2(K, T_2) \cdot T_2 \quad \text{当} \; T_1 < T_2$$
违反此约束意味着可以构建一个"零成本正收益"的日历价差组合。
无蝶式套利(No Butterfly Arbitrage)
对于同一到期日、不同行权价的期权,隐含概率密度函数必须非负:
$$\frac{\partial^2 C(K, T)}{\partial K^2} = e^{-rT} \cdot f(K) \geq 0$$
其中
此处有展示代码展开 ▼
python
# 蝶式套利检测
def check_butterfly_arbitrage(strikes, ivs, T, r, S0):
"""
检测波动率曲面上的蝶式套利
strikes: 行权价序列(已排序)
ivs: 对应的隐含波动率序列
"""
n = len(strikes)
arbitrage_flags = []
for i in range(1, n-1):
K1, K2, K3 = strikes[i-1], strikes[i], strikes[i+1]
# 构建蝶式:买入K1和K3的一份,卖出K2的两份
w = (K3 - K1) / (K3 - K2) # 权重
# 简化价格比较(实际需用BS公式计算精确价格)
butterfly_cost = ivs[i-1] + (1-w)*ivs[i+1] - (1+(1-w))*ivs[i]
if butterfly_cost < -0.001: # 容忍度
arbitrage_flags.append((K1, K2, K3, butterfly_cost))
return arbitrage_flags点击展开可浏览运行结果
📘 本段代码定义了 1 个函数/类:函数 `check_butterfly_arbitrage`(检测波动率曲面上的蝶式套利)。该片段为教学展示(未包含独立运行的输入数据),可在实战练习中结合真实数据调用。
SVI / SABR 参数化
SVI(Stochastic Volatility Inspired)
Gatheral 的 SVI 参数化用5个参数来描述整条波动率微笑:
$$w(k) = a + b\left(\rho(k-m) + \sqrt{(k-m)^2 + \sigma^2}\right)$$
其中
此处有展示代码展开 ▼
python
def svi_variance(k, a, b, rho, m, sigma):
"""
SVI 参数化——总方差关于 log-moneyness 的函数
k: 对数行权价 = log(K/S)
a: 整体水平
b: 微笑角度
rho: 偏斜
m: 水平平移
sigma: 微笑曲率
"""
return a + b * (rho * (k - m) + np.sqrt((k - m)**2 + sigma**2))点击展开可浏览运行结果
📘 本段代码定义了 1 个函数/类:函数 `svi_variance`(SVI 参数化——总方差关于 log-moneyness 的函数)。该片段为教学展示(未包含独立运行的输入数据),可在实战练习中结合真实数据调用。
SABR 模型
SABR(Stochastic Alpha, Beta, Rho)模型在利率期权和外汇期权市场应用广泛。其动态方程为:
$$\begin{aligned} dF_t &= \alpha_t F_t^\beta dW_t^1 \\ d\alpha_t &= \nu \alpha_t dW_t^2 \end{aligned}$$
四个核心参数:
VIX 指数与波动率交易
VIX(恐慌指数)的计算基于 S&P 500 指数期权的市场价格,反映了未来30天的预期波动率。其构建原理是将一系列虚值期权加总:
$$VIX^2 = \frac{2}{T}\sum_i \frac{\Delta K_i}{K_i^2} e^{rT} Q(K_i) - \frac{1}{T}\left(\frac{F}{K_0} - 1\right)^2$$
波动率交易的核心策略:
此处有展示代码展开 ▼
python
# VIX 均值回归策略框架
import pandas as pd
def vix_mean_reversion_signal(vix_current, lookback=20):
"""
VIX 均值回归信号:
- VIX 长期均值约为 19-20
- 超过 30 通常为恐慌状态,适合做多波动率回归
"""
vix_long_term_mean = 19.5
vix_std = 8.0
z_score = (vix_current - vix_long_term_mean) / vix_std
if z_score > 2.0:
signal = "SHORT_VOL" # VIX 极高水平,预期回落
elif z_score < -1.0:
signal = "LONG_VOL" # VIX 极低水平,预期上升
else:
signal = "NEUTRAL"
return {
'vix': vix_current,
'z_score': z_score,
'signal': signal
}
# 示例
print(vix_mean_reversion_signal(28.5))点击展开可浏览运行结果
{'vix': 28.5, 'z_score': 1.125, 'signal': 'NEUTRAL'}关键风险提示:波动率交易具有高度杠杆性。做空波动率(如卖出跨式)在"正常"市况下稳定盈利,但在尾部事件中可能面临灾难性损失——2018年2月的"Volmageddon"事件中,XIV(反向VIX ETN)在一天内暴跌超过90%并被强制清盘。风险管理必须考虑这种极端情景。
常见误区
误区 1:"IV 是常数,所以整个曲面是平的"
实际上,即使在同一交易日,ATM 期权、OTM Call、深度 OTM Put 的 IV 可以相差 5-10 个百分点(20% vs 30%)。把 IV 当常数会直接导致套利或风控失误。
误区 2:"Skew 永远是负的(左尾高)"
A 股 50ETF 的确长期左偏,但特定品种、特定时段也可能出现右偏。例如 2020 年牛市初期,商品期权(Iron Ore、Copper)曾出现明显右偏(右尾 IV > 左尾)。Skew 不是"永远单向"的。
误区 3:"用 SVI 拟合的曲面就无套利"
不一定。SVI 拟合的曲面在校准样本点附近是 arbitrage-free 的,但在边界和插值点外可能违反凸性约束。专业做法:校准后再次对曲面上的每个网格点检查 butterfly arbitrage。
误区 4:"VIX 高就做空波动率,VIX 低就做多"
VIX 长期均值 ≈ 19-20。但简单按"高于均值做空、低于均值做多"是个危险策略——因为 VIX 的分布严重右偏,大多数时间在 10-25 区间,真正触及 30+ 是相对罕见的事件。如果机械按 z-score 信号操作,会在 2008、2018、2020 这种 VIX 长期维持高位的时段反复做空反向,造成连续亏损。
误区 5:"SABR/SVI 参数校准就是最小化误差"
最优校准不是简单最小化样本点误差。正确做法:优先保证 no-arbitrage 约束,其次才考虑数据拟合度。如果为了降低样本点误差而引入违反 calendar arbitrage 的参数,反而得不偿失。
题目 1
小测验
题目 1:波动率偏斜(Volatility Skew)的根本原因之一?
题目 1:波动率偏斜(Volatility Skew)的根本原因之一?
- AA. 投资者偏好看涨期权
- BB. BS 模型过高估计 OTM Call 价格
- CC. 杠杆效应 + 崩盘恐惧溢价 + 投资者大量买入 OTM Put 造成左尾 IV 升高
- DD. 随机过程的几何特征
查看答案与解析展开 ▼
正确答案:C
负偏斜来自三股需求侧力量:杠杆效应(股价跌则杠杆升、波动变大)、崩盘恐惧溢价,以及机构持续买入 OTM Put 做保险推高左尾 IV。A 方向反了,偏好看涨会抬高右尾;B 错,BS 假设波动率为常数,曲面非平正是 BS 失效的证据;D 错,几何布朗运动只给出平曲面。
题目 2
关于 VIX 期限结构,以下哪个说法错误?
- AA. Contango 表示远期 IV > 近期 IV
- BB. Backwardation 表示近期 IV > 远期 IV
- CC. Backwardation 必然意味着危机正在进行
- DD. VIX 期货期限结构反映了市场对未来波动的预期
查看答案与解析展开 ▼
正确答案:C
A、B 是两种形态的定义,D 也对。错在 C 的“必然”:Backwardation 只说明近期 IV 高于远期,财报、大选、议息等短窗口事件同样顶高近端 IV,事件过后即回落,市场并非危机中。把形态等同危机,会在 2008、2020 这类高波动区间反复误判。
题目 3
SVI 参数化的核心约束之一是?
- AA. 必须满足维纳过程
- BB. 必须不存在 butterfly / calendar arbitrage
- CC. 参数必须小于 5
- DD. 与 SABR 一致
查看答案与解析展开 ▼
正确答案:B
SVI 用 拟合总方差,校准须优先保证无套利:calendar 要求总方差对 单调递增,butterfly 要求 ,插值点与边界仍需复查。A 错,SVI 是静态参数化;C 错,参数恰为 5 个;D 错,SABR 是另一套模型。
实战练习
IV 曲线绘制: 获取 50ETF 某月合约的全部 OTM Put/Call 报价(用 akshare),反推 IV,绘制以 log-moneyness 为横轴、IV 为纵轴的曲线。观察是否呈现典型的左偏形态(SKEW < 0)。
SVI 校准实现: 使用
scipy.optimize对某天的 50ETF 30 天到期合约的全部 OTM 报价做 SVI 拟合(优化 5 个参数)。绘制拟合曲线 vs 实际报价,以及无套利约束的"安全区"。 Calendar Spread 套利: 编写代码检测同一行权价、不同到期日的期权之间是否存在日历价差套利(违反
单调递增性)。当找到套利机会时,绘制理论套利 PnL。 VIX 期限结构分析: 下载 VIX/VXV(3 个月 VIX)/VVIX(VIX 自身的 IV)历史数据,绘制近 5 年的期限结构散点图,识别Backwardation 与 Contango 的转换点,结合 SPX 走势标记重要事件。
延伸阅读
- Gatheral, J. (2006). The Volatility Surface. Wiley. 波动率曲面参数化的经典教材。
- Hagan, P. et al. (2002). "Managing Smile Risk." Willmott Magazine. SABR 模型的原始论文。
- Cont, R. & Fonseca, J. (2002). "Dynamics of Implied Volatility Surfaces." Quantitative Finance. 关于曲面动态的经验研究。
- Bergomi, L. (2016). Smile Dynamics III. 关于 volatility-of-volatility 风险的综述。
- 上交所股票期权市场月度报告(http://www.sse.com.cn/market/options/monthlyReport/)。A 股市场 50ETF 期权曲面结构。
- Guyon, J. & Roukny, M. (2018). "Implied Volatility Surface Simplicity." 关于曲面参数化复杂度的讨论。
本章要点
- 波动率曲面由 行权价、到期日两个维度共同决定,IV 在每个 (K, T) 网格上都可能不同。
- 波动率偏斜(Skew) 在股票指数期权中通常是负的(左尾 IV > 右尾 IV),源于杠杆效应 + 崩盘恐惧溢价 + 保险需求。
- 波动率期限结构存在 Contango 与 Backwardation 两种形态,反映市场对未来波动的预期。
- 无套利约束包括:no calendar arbitrage(总方差单调递增)、no butterfly arbitrage(隐含概率密度非负)。
- SVI 是 5 参数参数化方法,在校准速度和套利约束上表现优异;SABR 在利率/外汇期权更常用,Hagan 近似解析。
- 波动率交易策略包括 VIX 均值回归、做多波动率、做空波动率;但做空波动率在尾部事件中风险巨大。
- A 股 50ETF 曲面具有较强的左偏特征(SKEW 通常 -3 ~ -8),与 S&P 500 类似但更极端。
下一章 11.3 将进入 奇异期权与结构化产品,讲解路径依赖期权、亚式期权、雪球等近年大热的产品结构与定价。