5. 曲面构建实战:插值方法(SVI、SABR)、平滑处理

好了,咱们进入实战环节。前面聊了那么多理论,现在该动手了。曲面构建这事儿,说白了就是「用有限的点,猜出整张脸」。你手头只有几十个期权报价,却要推算出任意行权价、任意期限的隐含波动率——这就是插值的意义。

我个人习惯把插值分成两步走:先期限方向,再行权价方向。当然也有人一步到位做二维插值,但那样容易出幺蛾子。咱们一步步来。

5.1 为什么不能简单线性插值?

你想想看,波动率曲面是有「微笑」的。线性插值就像拿直尺画曲线,结果必然是锯齿状、不光滑。我在项目中遇到过用线性插值做回测,结果曲面出现负波动率——这在实际交易中根本不可能。

所以我们需要专门的模型。业内最常用的两个:SVISABR

5.2 SVI 模型:参数化波动率微笑

SVI(Stochastic Volatility Inspired)模型,名字听着唬人,其实核心就是一个参数化公式。它把波动率微笑表达成对数行权价的函数:

σ(k) = a + b * ( ρ*(k - m) + sqrt((k - m)² + σ²) )

其中:

  • k = ln(K/F) —— 对数行权价
  • a —— 整体波动率水平
  • b —— 微笑的倾斜程度
  • ρ —— 微笑的偏度(左高右低还是右高左低)
  • m —— 微笑的最低点位置
  • σ —— 微笑的曲率(越尖还是越平)

嗯,这里要注意:SVI 的参数不是随便给的。我见过有人直接用优化器乱跑,结果参数物理意义全乱套。我的建议是:先固定 m 和 σ,再拟合 a、b、ρ。这样收敛快,也不容易过拟合。

实战经验: 我在做跨品种套利时,SVI 对近月合约拟合效果很好,但远月合约(超过1年)容易发散。这时候我会改用 SABR。

5.3 SABR 模型:随机波动率下的微笑

SABR(Stochastic Alpha Beta Rho)模型,是金融工程界的「老黄牛」。它假设波动率本身也是随机的,能更好地捕捉远期波动率的结构。

SABR 的核心参数:

参数 含义 典型范围
α 波动率水平 0.1 ~ 0.5
β 弹性系数(0 为对数正态,1 为普通正态) 0 ~ 1
ρ 资产与波动率的相关系数 -1 ~ 1
ν 波动率的波动率(vol of vol) 0.1 ~ 0.8

我曾经在拟合 SABR 时踩过一个坑:β 和 ν 高度相关,一起优化会导致参数不稳定。后来我学乖了——先固定 β(通常取 0.5 或 0.7),只优化 α、ρ、ν。这样参数稳定多了。

5.4 平滑处理:别让曲面「长毛」

插值完的曲面,往往会有局部凹凸。这时候需要平滑处理。我常用的方法有三种:

  1. 样条平滑:对期限方向用三次样条,对行权价方向用 SVI 拟合后的残差做平滑
  2. 核回归平滑:用高斯核做局部加权平均,适合数据点稀疏的情况
  3. 正则化约束:在优化目标中加入二阶导数的惩罚项,强制曲面光滑
小技巧: 平滑不是越光滑越好。过度平滑会抹掉真实的套利信号。我一般用交叉验证选平滑参数——让曲面在「拟合度」和「光滑度」之间取平衡。

5.5 实战代码:SVI 拟合示例

下面给一段 Python 代码,展示如何用最小二乘法拟合 SVI 参数。注意,这只是示意,生产环境需要加边界约束。

import numpy as np
from scipy.optimize import curve_fit

def svi(k, a, b, rho, m, sigma):
    return a + b * (rho * (k - m) + np.sqrt((k - m)**2 + sigma**2))

# 假设我们有市场数据
k_data = np.array([-0.3, -0.2, -0.1, 0.0, 0.1, 0.2, 0.3])
vol_data = np.array([0.28, 0.25, 0.23, 0.22, 0.23, 0.26, 0.30])

# 初始参数猜测
p0 = [0.2, 0.1, -0.3, 0.0, 0.1]

# 拟合
popt, pcov = curve_fit(svi, k_data, vol_data, p0=p0, 
                       bounds=([0, 0, -1, -1, 0], [1, 1, 1, 1, 1]))

print(f"拟合参数: a={popt[0]:.3f}, b={popt[1]:.3f}, rho={popt[2]:.3f}, "
      f"m={popt[3]:.3f}, sigma={popt[4]:.3f}")
注意: 实际数据中,近月合约和远月合约的微笑形状差异很大。我建议按期限分组拟合,不要用一个参数集打天下。

5.6 知识体系总览

下面这张图,是我自己总结的曲面构建流程。你可以把它当作「施工图纸」:

波动率曲面构建流程 市场期权报价 数据清洗 & 期限分组 近月? SVI 参数拟合 SABR 参数拟合 平滑后的波动率曲面

你看,整个流程其实不复杂。关键就两点:选对模型(近月 SVI,远月 SABR),做好平滑(别让曲面出现异常凸起)。

最后说一句:曲面构建不是一锤子买卖。我每周都会重新校准一次参数,遇到市场剧烈波动时甚至每天校准。毕竟,过时的曲面比没有曲面更危险。

核心要点回顾:
  • SVI 适合近月、微笑明显的合约
  • SABR 适合远月、波动率结构复杂的合约
  • 平滑处理要适度,交叉验证是好朋友
  • 定期校准参数,别让曲面「过期」

公众号:蓝海资料掘金营,微信deep3321