Skip to content

11.2 波动率曲面与套利

概念详解

Black-Scholes 模型假设波动率为常数,但实际市场报价反推得到的隐含波动率(IV)在不同行权价、不同到期日下都不同。把 IV 看作行权价和到期时间的函数,就形成了隐含波动率曲面(Implied Volatility Surface)

波动率曲面有三个核心维度:

  1. 行权价维度(Moneyness): 通常以 moneyness K/S 或 log-moneyness ln(K/F) 表示
  2. 到期时间维度(Tenor): 从 1 周到 2 年不等
  3. 日历维度: 同一行权价、不同到期日的 IV 路径

曲面之所以"非平",根源于 BS 模型的局限性——它无法刻画跳跃、波动率聚集、跳跃风险溢价等真实市场特征。本章讲解曲面的几何规律、套利约束,以及业界主流的参数化方法(SVI/SABR)。

名词解释:SVI(Stochastic Volatility Inspired)

Gatheral (2004) 提出的波动率曲面参数化方法,用 5 个参数 (a,b,ρ,m,σ) 描述一条 vol smile 的总方差-对数行权价的函数关系。在交易中,SVI 用于校准整条曲线,实现"插值快速、套利约束自动满足"。

名词解释:随机波动率(Stochastic Volatility, SV)

允许波动率本身也是随机过程的模型(如 Heston、SABR)。SV 模型相比 BS 模型具有更强的解释力——可以拟合 vol smile、波动率聚集、波动率均值回归等特征。代价是定价速度较慢、需要校准。

波动率微笑与偏斜

波动率微笑(Volatility Smile)是指当以行权价为横轴、隐含波动率为纵轴时,曲线呈现两端高、中间低的"微笑"形态。但在实际市场中,特别是在股票指数期权市场,更常见的形态是波动率偏斜(Volatility Skew)——低行权价的IV显著高于高行权价。

名词解释:隐含波动率(Implied Volatility, IV)

将期权的市场价格代入 Black-Scholes 公式,反向求解出的波动率参数。IV 是市场对未来波动的"预期",而非对历史的统计。

波动率偏斜的成因

  1. 杠杆效应(Leverage Effect):股价下跌导致杠杆率上升,波动率自然增大;该效应由 Black (1976) 最早提出
  2. 崩盘恐惧溢价(Crashophobia):投资者愿意为下行保护支付更高的溢价,尤其是在1987年股灾之后
  3. 供需结构失衡:机构投资者大量买入OTM看跌期权进行组合保险,推高了左尾IV
PYTHON16 行 · 507 B
📄此处有展示代码16 行 · 507 B展开 ▼
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最高,反映特定事件风险(如大选、财报季后)
PYTHON18 行 · 521 B
📄此处有展示代码18 行 · 521 B展开 ▼
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$$

其中 f(K) 是风险中性概率密度函数。如果出现负值,说明存在蝶式套利机会。

PYTHON20 行 · 752 B
📄此处有展示代码20 行 · 752 B展开 ▼
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)$$

其中 w(k)=σIV2(k)T 为总方差,k=log(K/S0) 为对数行权价。

PYTHON11 行 · 323 B
📄此处有展示代码11 行 · 323 B展开 ▼
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}$$

四个核心参数:α(初始波动率)、β(CEV弹性)、ρ(资产-波动率相关性)、ν(波动率之波动率)。Hagan 等人提供了近似解析公式,使得 SABR 在实务中计算效率极高。

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$$

波动率交易的核心策略

PYTHON28 行 · 728 B
📄此处有展示代码28 行 · 728 B展开 ▼
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)的根本原因之一?
  • 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 用 (a,b,ρ,m,σ) 拟合总方差,校准须优先保证无套利:calendar 要求总方差对 T 单调递增,butterfly 要求 2C/K2=erTf(K)0,插值点与边界仍需复查。A 错,SVI 是静态参数化;C 错,参数恰为 5 个;D 错,SABR 是另一套模型。

实战练习

  1. IV 曲线绘制: 获取 50ETF 某月合约的全部 OTM Put/Call 报价(用 akshare),反推 IV,绘制以 log-moneyness 为横轴、IV 为纵轴的曲线。观察是否呈现典型的左偏形态(SKEW < 0)。

  2. SVI 校准实现: 使用 scipy.optimize 对某天的 50ETF 30 天到期合约的全部 OTM 报价做 SVI 拟合(优化 5 个参数 (a,b,ρ,m,σ))。绘制拟合曲线 vs 实际报价,以及无套利约束的"安全区"。

  3. Calendar Spread 套利: 编写代码检测同一行权价、不同到期日的期权之间是否存在日历价差套利(违反 σ2(K,T)T 单调递增性)。当找到套利机会时,绘制理论套利 PnL。

  4. 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 将进入 奇异期权与结构化产品,讲解路径依赖期权、亚式期权、雪球等近年大热的产品结构与定价。