波动率曲面构造:从报价到无套利曲面
隐含波动率曲面是伪装的概率分布,构造它的全部工作是让这个分布存在、平滑、贴住市场。套利约束、SVI/SSVI 参数化、生产校准流水线和它的失败模式。
报价有噪声。市场会收盘,行使价会重新挂牌,美联储下午 2 点发公告时买卖价差翻倍。定价库在下午 3 点读的那张隐含波动率曲面,跟数据供应商 3:01 推来的十万条报价,不是一回事——中间隔着一整套工程。这篇文章讲的就是这套工程。
最终目标是一个函数 ——或者等价地,总方差 ——要同时满足三件事:平滑、无套利、贴市场报价贴到剩余定价误差低于买卖价差。把这件事做好,是运行一个衍生品台的大部分日常;做坏了,对冲有偏、奇异定价飘离市场,最终在某个位置爆掉。贯穿全文的一个视角:曲面是伪装的概率分布。每一条套利约束,本质都是在要求这个分布真的存在。
三个套利条件
曲面无套利,意味着三类不等式跨全曲面成立,每类对应一种能白拿钱的期权组合(Hull, 2018, 第 18.6 节;Gatheral, 2006, 第 2 章)。
日历套利(同行使价、不同到期)。 对固定行使价,总方差 必须随 单调不减:
如果 随 下降,卖出便宜的方差、买入贵的,等长到期收敛到短到期时锁定利润——这就是同行使价的日历价差套利。
蝶式套利(同到期、不同行使价)。 对固定 ,看涨价格作为行使价的函数必须是凸的:
数值上等价于
对任意 (按间距加权)。违反了,就能搭出一个收益非负、价格为负的蝶式价差。凸性有个更深的读法——按 Breeden-Litzenberger (1978),它等价于风险中性密度非负:
对所有 。这正是”曲面是概率分布”的字面意思:二阶导为负的地方,你的”分布”在某处给了负概率。
垂直套利(看涨价差)。 对任意一对行使价 :
左边说看涨价格随行使价单调不增,右边说牛市价差的价值不能超过其最大收益的折现值——上界里的折现因子来自收益发生在 时刻。
三个条件必须联合检验:修好一个可能弄坏另一个。真实报价即使逐条干净,朴素插值也会在报价之间制造幻影套利——这就是为什么”从报价到曲面”是个工程问题而不是查表问题。
清洗:一切的第一步
校准流水线从清洗开始,顺序是固定的:
- 买卖价转中间价。 取简单平均;有盘口规模数据就按规模加权。中间价比任何单边都稳定。
- 过滤坏报价。 有 vol 的先验猜测时,丢掉 的点;没有就丢掉成交量可疑或被供应商标记的报价。
- 跨行使价和到期同步。 日内漂移、节假日效应、供应商分批更新都会让曲面不同步;不一致的报价用平滑值替换。
清洗完的曲面”与市场数据一致”,但不一定无套利。下一步才是让它无套利,而这里出现本文第一个真正的分岔。
参数 vs 非参数:两条路线
非参数平滑给数据拟合一个带正则化的平滑函数。这条路线的代表是 Andreasen & Huge (2010):在包含所有报价行使价和到期的离散网格上,通过保证每个离散点密度为正的有限差分构造插值,不经过 Dupire 公式,结果按构造无套利。方法在商业库里有实现,QuantLib 也提供,生产中广泛使用。代价有二:任意性从网格分辨率进来(太细过拟合,太粗漏结构);而且网格之外——深翼——你反正还是需要参数化外推。
参数形式选一个小参数族,配上恰当的约束让它按构造无套利,再把参数拟合到数据上。形状被限制在”你期望曲面长的样子”之内——这既是缺点(市场换状态时可能拟合不上两翼),也是优点(参数可解释、可跨日跟踪、毫秒级求值)。
实践中,欧式期权的曲面构造以参数形式为主。接下来两节讲这条路线的两代主角。
SVI:一次一个切片
Gatheral 的 SVI (2004) 参数化单个到期切片的隐含方差(年化约定;乘 得总方差):
约定 、,参数是 5 向量 ,每切片五个。它对股票微笑的形状表现力刚刚好:两翼渐近线性、平值附近由 控制曲率、 管偏度、 管平移。约束条件也是熟知的:
前两条保证方差为正;第三条限制两翼斜率——它来自 Lee 的矩公式对总方差翼部斜率的上界,拿住它,深翼才不会隐含出爆炸的矩(这是翼部/蝶式方向的约束,日历方向要跨切片另查)。
拟合 SVI 是非凸最小二乘。稳健的做法分两步:先在每切片选锚定行使价——ATM、10-delta 看跌、25-delta 看跌、25-delta 看涨、10-delta 看涨,五个点对五个参数,直接解出初值;再在切片内全部报价上做最小二乘精修。
SVI 的短板在切片之间:每片独立拟合,参数跨期限可以跳来跳去,ATM 总方差甚至可能随 下降——这就是日历套利。补丁式的办法是把 跨期限用低阶样条再平滑一遍;根治的办法是下一节。
SSVI:整张曲面一次成型
SSVI(Surface SVI) 用一个参数化同时覆盖所有到期(Gatheral & Jacquier, 2014):
其中 仍是对数实值度, 是到期 的 ATM 总方差(直接从市场读), 是跨期限共享的偏度参数, 是控制微笑曲率随期限衰减的形状函数——常用幂律 。结构上,ATM 处 自动成立,微笑形状由 统一驱动。
SSVI 的卖点是无套利条件能写成参数上的显式不等式: 随 单调不减(配合对 的温和条件)保证跨期限无日历套利;蝶式方向,充分条件是
校准时把这些当约束带着,拟出来的曲面就是干净的——这是”按构造无套利”的具体含义。
SSVI 用一个全局 换来了整张面的一致性,代价是偏度期限结构的表达力。生产级拟合因此常用扩展:eSSVI(Hendriks & Martini)放开 随期限变化,同时保持切片间无套利;更一般的无套利 SVI 曲面族见 Guo, Jacquier, Martini & Neufcourt (2016)。
实现草图
import numpy as np
from scipy.optimize import minimize
def ssvi_total_var(k, theta, rho, phi):
"""SSVI 总方差切片:w(k) = θ/2 · (1 + ρφk + sqrt((φk+ρ)² + 1−ρ²))。"""
return 0.5 * theta * (1 + rho * phi * k
+ np.sqrt((phi * k + rho)**2 + 1 - rho**2))
def ssvi_calibrate(strikes_by_tau, ivs_by_tau, taus, S0, r, eta=1.0, gamma=0.5):
"""跨期限拟合 SSVI:幂律 φ(θ) = η·θ^(−γ),逐切片精修 (θ_T, ρ)。"""
fits = []
for tau, K_arr, iv_arr in zip(taus, strikes_by_tau, ivs_by_tau):
F = S0 * np.exp(r * tau)
k = np.log(K_arr / F)
w_mkt = iv_arr**2 * tau
x0 = np.array([np.interp(0.0, k, w_mkt), -0.7]) # 初值:ATM 总方差、偏度
bounds = [(1e-4, None), (-0.95, 0.95)]
res = minimize(
lambda p: np.mean((ssvi_total_var(k, p[0], p[1],
eta * p[0]**(-gamma)) - w_mkt)**2),
x0, bounds=bounds, method='L-BFGS-B')
fits.append(res.x)
return fits
提示词
用 Python 写一个 SSVI 总方差函数和逐切片校准草图,幂律 phi,scipy 最小化,L-BFGS-B 带边界。
这不是获奖代码——它没带上一节的无套利约束,也没做坏拟合和离群点处理。生产级实现每个参数族大约 100-200 行,差出来的部分全是稳健性。
校准流水线:端到端
典型台上的完整流程:
- 快照。 在快照时间拉最新报价,通过看跌-看涨平价合并看涨和看跌,为每个 拿到 上的完整网格。
- 清洗。 前面那三步。
- 选模型。 按资产类别:股票指数用 (e)SSVI;FX 微笑接近对称,常用 附近的 SVI;单票可能另选参数族。
- 校准。 最小化 ,按买卖价差的倒数加权(价差窄的报价更可信),初值取前一天的参数。
- 验证无套利。 在拟合曲面上联合检查蝶式、日历、垂直三类约束;有失败就带惩罚项重拟(拉格朗日式处理)。
- 存储。 参数化曲面存给下游(定价引擎、风险系统)。
- 发布。 按需转换:经 Dupire 转局部 vol 曲面、为 Heston 转随机 vol 参数集,或直接用 SVI 参数。
总运行时间在现代机器上 5-30 秒。数字不大,但注意第 4 步那个”初值取前一天”——它既是加速手段,也是下面要讲的稳定性机制的一部分。
失败模式:校准是会坏的
典型校准团队预期日常校准有 1-5% 的失败率。失败不可耻,没有失败预案才可耻。三种模式反复出现:
NaN 行使价。 某个行使价在拟合中产出 NaN 或不可信值,通常是坏报价(供应商错误)或行使价远到参数化够不着。处理:丢掉重拟,或加平滑约束。
坏初值。 参数发散到无意义的区域。从零开始的 Levenberg-Marquardt 常见,从前一天参数暖启动的少见——这就是暖启动的价值。暖启动也失败时,退回全局优化器(差分进化)。
切片间摆动。 每个切片单看都好,连起来的曲面在期限之间振荡——说明逐切片参数化没捕捉到跨期限的平滑结构。根治办法就是换 SSVI/eSSVI 这类多切片参数化。
统一的恢复策略:回退到上一次好校准,记录事件,提醒工程师。生产系统给每次校准留诊断日志;盯风险仪表板的交易员能看见校准何时退化——典型征兆是 P&L explain 跟希腊字母对不上。
校准后的诊断
两个便宜又灵的健全性检查,值得挂在流水线末尾。
蝶式诊断图。 对拟合曲面,画
跨所有 。处处非负,曲面就没有同到期的蝶式套利;哪里为负,哪里就有拟合制造的幻影套利。
日历检查。 对每个行使价,画总方差 对 的曲线,应单调不减。数值上验
跨插值网格。违反即有幻影日历价差。
再加一个参数层面的观察:跨期限追踪拟合参数本身。偏度、曲率参数作为 的函数快速变化,说明曲面不平滑;SSVI 族还要顺手验 单调不减这条切片间约束。参数时间序列本身就是诊断数据——这也是为什么后面架构一节要求把每天的参数版本化存下来。
交易行使价之外:外推
市场只交易有限范围的行使价——SPX 的流动性报价大致覆盖到百分之几十 OTM 的看跌和更窄的看涨侧,具体随行情变化——而真实头寸会走到更远的翼上。外推有三种做法。
参数形式(SVI、SABR、Heston)自带定义到所有行使价的公式,外推平滑,这是参数路线的又一红利。渐近方法靠理论兜底:Lee 的矩公式给出总方差在深翼至多线性增长,、,即隐含波动率至多按 的速度增长——超线性外推等于隐含出不存在的矩。最粗的办法是逐切片在对数行使价上线性外推 IV,能用,但走远了会撞 Lee 上界,只适合应急。
对深度 OTM 的奇异头寸,外推选择实质影响定价:同样贴合校准区间的两种外推,在 5-delta 翼上给出的 vol 可以差出几十个基点的量级。别把外推当细节。
曲面会动:参数化没覆盖的动态
拟合好的曲面是一张快照,而市场关心快照怎么动。三层动态,参数化大多不管:
偏度的偏度。 偏度陡峭度随 vol 水平变化——vol 高时偏度更陡,vol 低时变平。SVI 对此表达力弱,SABR 强一些。
Vol-of-vol。 微笑的陡峭度本身是随机的。高 vol-of-vol 时期与高 VIX、压力市场重合;崩盘后微笑迅速变平。大多数参数形式漏掉这层。
前向偏度动态。 前向起始的微笑形状怎么随时间滚动,只有期限结构模型(多因子 Bergomi 一类)显式处理。
对交易员,这些动态不是学术问题——它们把你暴露给一阶希腊字母之外的二阶移动。例:30 天的空 vol 头寸带着 theta(多)、vega(空)、vomma(多);vol 反弹触发 vega 损失,横盘吃 theta,长期高实现 vol 吃 vomma。P&L 分布由微笑形状和它怎么动共同决定,而后者不在你拟合的那五个参数里。
生产架构与历史教训
如果你在为生产搭曲面库,几条结构性要求:用一个校准管理器类持有当前曲面、决定何时重校准、记着前一天参数、提供查找接口;支持多参数化并存(SVI 拟合、SABR 快查、Heston 半解析定价,运行时选);每天对市场数据跑校准、存参数、跟昨天比、跟踪退化;校准失败时回退到昨天参数并打标,而不是空手而归;把每天的参数当时间序列版本化——对回测和事后分析无价;再配上简单阈值告警(比如 触发调查)。
日常自检也简单:拿昨天的校准套今天的市场数据,看价格偏离。中位数偏离 5bp、最大 30bp,校准在正常工作;中位数到了 50bp,哪里坏了——多半是数据或陈旧先验。
要理解为什么”曲面库必须优雅处理状态变化”是硬要求,看历史就够了。1987 之前,股票微笑大致对称,Black Monday 之前的偏度估计非常平;1987 和 2008 之后,陡峭的负偏度成为常态,每次危机都把基线偏度”重置”到更高水平,微笑也更动态。2020 年 3 月,SPX 深翼隐含 vol 飙到极端水平,微笑陡到把无数校准器测到极限。每次状态切换都让前一天的参数失效——处理不好,你就是在用昨天的曲面跟今天的报价打架。
收在哪里
波动率曲面是衍生品业务里最重要的数据产品。参数形式(SVI/SSVI 一族)在拟合质量、平滑度、易处理性之间给出目前最好的平衡;无套利条件是让”曲面=概率分布”字面成立的一致性约束;而数据质量和运维纪律决定这一切每天早上还能不能用。学的时候,把一个参数族吃透胜过每个都碰一下——结构性的洞见(曲面是伪装的分布)比你具体拟合哪个形式更长寿。
下一篇讲方差互换和波动率互换——把整张波动率曲面变成单一可交易产品的那类工具。
阅读清单。 Hull, Options, Futures, and Other Derivatives, 第 10 版,第 18 章(2018)。Gatheral, The Volatility Surface, 第 4-5 章(2006)。Gatheral & Jacquier, “Arbitrage-free SVI volatility surfaces”(2014)。Andreasen & Huge, “Volatility Interpolation”(2010)。Zeliade Systems 关于 SVI 无套利校准的 whitepaper。