技术博客

波动率曲面:从报价到插值

第 129 / 141 篇 · 2025-11-26 · secfin · 期权波动率数值方法

BS 模型假设波动率是常数,市场上没有这个数。把同一到期日、不同行权价的期权隐含波动率画出来,得到一条微笑曲线(smile/skew);把不同到期日叠起来,得到一张波动率曲面 $\sigma(K, T)$。做市商的每个理论价(《做市报价引擎》篇)、风控的每次希腊字母计算(《希腊字母的实时计算链》篇),都是从这张曲面上取数。本篇讲这张曲面在系统里怎么构建和维护。

从离散报价到曲面:问题的形式化

输入是离散的:若干个到期日 $T_1 < T_2 < \cdots < T_n$,每个到期日上一组行权价的报价或成交(bid/ask 或 last),反解出离散点 $\{K_i, \sigma_i\}$。输出要求是连续的:对任意 $(K, T)$ 查询,返回 $\sigma$ 和它对各参数的偏导(计算 Greeks 时需要)。

无套利约束是曲面的"物理定律",违反它就能构造套利组合,所以构建方法必须内建这些约束:

  1. 单调性:对任意 $T$,$K \cdot \sigma(K,T)$ 关于行权价单调(在当前利率水平下,更精确的表述是行权价域上不允许蝶式套利机会);
  2. 日历约束:固定行权价,近月方差不能超过远月方差太多——总方差 $w = \sigma^2 T$ 随 $T$ 单调不减(日历套利约束);
  3. 边界:深虚值/深实值的渐进行为平滑,不出现异常凸起。

SVI:参数化一族翅膀

Gatheral 提出的 SVI(Stochastic Volatility Inspired)是实务中最常用的参数化,对每个到期日,把总方差写成 log-moneyness $k = \ln(K/F)$ 的函数:

$$ w(k) = a + b\left[\rho(k-m) + \sqrt{(k-m)^2 + \sigma_{svi}^2}\right] $$

五个参数 $(a, b, \rho, m, \sigma_{svi})$ 各管一件事:$a$ 控制整体水平,$b$ 控制两翼张开程度,$\rho$ 控制偏斜方向(负 $\rho$ 对应股票期权的下行偏斜),$m$ 是谷底位置,$\sigma_{svi}$ 是谷底曲率。参数化之后,每个到期日的拟合变成五维优化:

$$ \min_{\theta} \sum_i \omega_i \left( \sigma^{SVI}_{\theta}(K_i) - \sigma^{mkt}_i \right)^2 + \lambda \cdot \text{Penalty}(\theta) $$

$\omega_i$ 是权重——近价的点权重大(做市主要在这附近成交),无流动性的深虚值点权重小;Penalty 项把解拉向无套利区域。SVI 的好处是参数有解析的 arbitrage 检查条件(翅膀不交叉、日历约束可以用参数不等式表达),比样条插值事后检查便宜得多。

样条与插值:期限维的处理

固定行权价的期限方向,常用的是对总方差 $w(k, T)$ 在 $T$ 方向做单调插值(cubic spline 加单调性约束,或干脆分段线性)。期限方向比行权价方向温和——近月陡、远月平是常态,插值平滑度要求低,但对日历无套利敏感:一次近月跳价后,若插值没守住 $w(T)$ 单调,远月价就会瞬时失真,风险系统的 Vega 会集体报错。

行权价 × 期限两个方向合成后的查询,工程上拆成两步:先按 $T$ 找到相邻两个到期日的切片,各自在行权价方向插值得到 $\sigma(k, T_1)$、$\sigma(k, T_2)$,再在期限方向对 $\sigma$(或 $w$)插值。两步各自保证约束,合成结果近似满足——严格的跨期蝶式检查要在每次曲面更新后跑一次扫检,违规点报警人工处理。

曲面维护的实时流水线

曲面的生命周期是分钟级的。标的价格大幅移动或近月合约成交活跃时,触发增量重建:

  1. 采集增量:新成交、新报价、标的现价,进入原始点缓存;
  2. 重拟合受影响到期日(通常只有近月):带权重的 SVI 优化,热启动(以上次参数为初值)通常几十毫秒收敛;
  3. 全曲面仲裁检查:日历约束 + 蝶式约束扫描;
  4. 版本发布:曲面带时间戳和版本号,下游(报价引擎、风控)按版本消费。

第 4 步的一个细节:报价引擎和风控必须消费同一版本的曲面,否则理论价和 Greeks 来自不同曲面,对冲(《Delta 对冲的执行》篇)的 $E$ 计算就是错的。做法是把曲面版本号挂进每笔计算的审计记录,对账时能回放"当时算这笔用的是哪张曲面"。

波动率曲面构建流水线 原始点采集 成交 / 报价 / 现价 分期限拟合 SVI 加权优化 跨期限插值 w(T) 单调样条 版本化发布 时间戳 + 版本号 无套利仲裁 蝶式 + 日历扫描 违规处理 报警 / 人工 下游一致性:报价引擎与风控消费同一版本,Δ/Vega 才可对账

校准的数据质量陷阱

曲面质量上限由输入数据决定。三个常见坑:一是用 last 价反解——流动性差的合约 last 可能是十分钟前的,反解出来的 $\sigma$ 和当前盘面脱节,要用报价中价(bid/ask 均值)且限定时效;二是权重设计忽视交易量分布——深度虚值点几乎不成交,但 wings 的拟合形态由它们决定,权重全压近价会让 wings 外推失真,典型处理是给 wings 点最小权重保障,同时用 SVI 参数先验约束外推行为;三是停牌和涨跌停——标的涨跌停时虚值期权的 $\sigma$ 会出现不可能的跳跃,涨跌停时段的原始点要打标记并在拟合时降权或剔除。

曲面系统的验收标准很朴素:随机抽 100 个 $(K, T)$ 查询点,同时用 BS 反解最近成交价验证,误差在可解释范围内;扫一遍全曲面的蝶式和日历约束,零违规。两条都过,这张曲面才配被报价引擎和风控共用。