2. 波动率基础回顾
在进入 Local Vol 与 Dupire 方程之前,必须先把“波动率”这个看似熟悉的概念拆开。很多实战误区的根源,不是公式不会推,而是把不同口径的波动率混为一谈:用历史波动率去定价期权,用隐含波动率去预测未来,或者看到微笑曲线就以为市场“错了”。本节把四个基础对象——历史波动率、隐含波动率、波动率微笑与偏斜、期限结构——放在同一张地图上,建立后续局部波动率建模的参照系。
一、核心原理:两种波动率,两种世界观
历史波动率(Historical Volatility, HV)是对已实现价格变动的统计度量,回答“过去有多颠簸”。它由收益率序列计算,常见口径包括 close-to-close、Parkinson、Garman-Klass、Yang-Zhang 等。HV 是回望的、可观测的、唯一的(给定窗口与频率)。
隐含波动率(Implied Volatility, IV)是把市场价格代入 Black-Scholes 公式反解出来的波动率参数,回答“市场当前为未来定价了多少波动”。IV 是前瞻的、不可直接观测的、且依赖模型假设。同一到期日、不同行权价的 IV 连成一条曲线,就是波动率微笑/偏斜;不同到期日的 IV 连成一条曲线,就是期限结构。
二、波动率微笑与偏斜:市场为什么不再相信常数波动率
Black-Scholes 假设波动率为常数,但真实市场中,平值期权 IV 最低、虚值看跌与虚值看涨 IV 抬升,形成“微笑”;在股指等市场,低行权价(虚值看跌)IV 显著高于高行权价,曲线向左上方倾斜,称为“偏斜(Skew)”。偏斜反映了市场对下行风险的定价:暴跌概率被系统性高估,或说尾部风险被定价进去。
常见观察维度:
- 水平(Level):平值 IV 的高低,反映整体波动预期。
- 偏斜(Skew):25Δ Put IV 减 25Δ Call IV,衡量左右不对称。
- 曲率(Curvature / Butterfly):两翼相对平值的抬升幅度,反映尾部厚度。
- 期限结构(Term Structure):近月 IV 与远月 IV 的差,反映事件与均值回复。
下面这张图把同一标的、同一到期日的 IV 曲线与 HV 水平放在一起,直观展示“微笑+偏斜”以及 IV 相对 HV 的溢价:
三、期限结构:波动率的时间维度
把不同到期日的平值 IV 连起来,就得到期限结构。常见形态有三类:
- 向上倾斜:远月 IV 高于近月,通常出现在市场平静、预期未来不确定性上升时。
- 向下倾斜(倒挂):近月 IV 高于远月,常见于重大事件(财报、议息、公投)临近,事件过后 IV 回落。
- 驼峰/波动:中间某到期日因特定事件被抬高,形成局部峰值。
期限结构对 Local Vol 至关重要:Dupire 方程要求输入的是整张 IV 曲面,而期限结构决定了 σ(S,t) 在时间方向上的变化。如果只取单一到期日建模,得到的局部波动率在时间维度上是失真的。
四、方法流程:从市场数据到波动率曲面
实战中构建 IV 曲面的典型流程如下:
- 采集同一标的、多个到期日、多个行权价的期权报价(买价/卖价/中间价)。
- 剔除流动性差、价差过宽、明显套利的报价。
- 用 Black-Scholes 或更合适的模型反解每个报价的 IV。
- 对每个到期日做行权价方向的平滑插值,得到微笑/偏斜曲线。
- 在到期日方向做时间插值(注意方差插值优于 IV 线性插值)。
- 检查无套利约束:蝶式价差非负、日历价差非负、总方差单调不减。
五、案例与场景:一次典型的 IV 曲面观察
假设某股指当前点位 3000,近月平值 IV 为 18%,远月为 20%,25Δ Put IV 比 25Δ Call IV 高 6 个波动率点。可以读出:
- 整体波动预期温和,远月略高于近月,期限结构向上倾斜。
- 偏斜明显,市场对下行保护需求强,虚值看跌被买贵。
- 若此时 HV 只有 12%,说明 IV 相对 HV 有约 6 个点的溢价,市场在为潜在风险付费。
用 Python 快速计算 HV 与简单 IV 对比的示意代码:
import numpy as np
# 历史波动率:close-to-close,年化
def hist_vol(prices, window=20, ann=252):
ret = np.diff(np.log(prices))
return np.std(ret[-window:], ddof=1) * np.sqrt(ann)
# 示例:近 20 日收盘价
prices = np.array([3000, 3012, 2995, 2980, 3005, 3020,
3010, 2998, 2975, 2960, 2985, 3000,
3015, 3030, 3022, 3008, 2990, 2978,
2995, 3010, 3025])
hv = hist_vol(prices)
print(f"20日历史波动率 = {hv:.2%}")
# 输出示例:20日历史波动率 = 14.87%
六、误区与复盘
| 误区 | 表现 | 正确做法 |
|---|---|---|
| 用 HV 直接定价期权 | 忽略风险溢价与微笑 | 定价用 IV 曲面,HV 仅作参照 |
| 把 IV 当作未来已实现波动预测 | IV 含风险溢价与供需 | 区分风险中性测度与现实测度 |
| 忽略偏斜只取平值 IV | 虚值期权定价严重偏差 | 建模整条微笑曲线 |
| 时间方向直接插 IV | 破坏日历套利 | 对总方差 σ²T 插值 |
| 用单一到期日推 Local Vol | 时间维度失真 | 使用完整 IV 曲面 |
掌握这四个基础对象后,下一步才能理解 Dupire 方程如何把整张 IV 曲面“翻译”成瞬时局部波动率 σ(S,t),以及为什么局部波动率能同时拟合所有行权价与到期日。在此之前,请确保你能独立画出并解释一张真实的 IV 曲面。