10. 二维插值:双线性插值、双三次插插值、径向基函数插值

好,我们终于来到了插值这个环节。说实话,在期权波动率曲面构建里,插值是最容易出幺蛾子的地方。你前面数据清洗得再漂亮,模型选得再对,插值手法一糙,整个曲面就崩了。

我个人习惯把插值分成两类:一类是“老老实实”的局部插值,比如双线性和双三次;另一类是“有点魔法”的全局插值,比如径向基函数。今天咱们就把这三兄弟挨个盘一遍。

10.1 双线性插值:最朴素的曲面填充

双线性插值,说白了就是“在四个点围成的矩形里,猜中间的值”。它假设曲面在局部是线性的,所以计算量极小,速度飞快。

数学原理很简单:

假设你有四个已知点:(x1, y1), (x1, y2), (x2, y1), (x2, y2),对应的函数值是 f11, f12, f21, f22。你想求 (x, y) 处的值。

第一步:在 x 方向做两次线性插值。

f1 = (x2 - x)/(x2 - x1) * f11 + (x - x1)/(x2 - x1) * f21
f2 = (x2 - x)/(x2 - x1) * f12 + (x - x1)/(x2 - x1) * f22

第二步:在 y 方向再做一次线性插值。

f = (y2 - y)/(y2 - y1) * f1 + (y - y1)/(y2 - y1) * f2

嗯,这里要注意:双线性插值不是“两次线性插值”的简单叠加,而是“先x后y”或者“先y后x”,结果是一样的。

适用场景:

  • 数据点分布均匀,网格规整
  • 对实时性要求高(比如高频交易中的快速定价)
  • 曲面变化平缓,没有剧烈波动

避坑指南:

我曾经在构建短期期权波动率曲面时,直接用双线性插值。结果在临近到期日时,曲面出现了明显的“锯齿状”不连续。后来才发现,双线性插值只保证函数值连续,不保证导数连续。对于短期期权,波动率变化剧烈,这种不连续会直接导致对冲参数(希腊字母)出现跳跃。

10.2 双三次插值:平滑才是王道

双线性插值不够平滑?那就上双三次。它用16个相邻点(4x4网格)来拟合一个三次多项式,保证函数值和一阶导数都连续。

核心公式长这样:

f(x, y) = Σᵢ₌₀³ Σⱼ₌₀³ aᵢⱼ xⁱ yʲ

其中 aᵢⱼ 是16个系数,需要通过已知点的函数值、x方向导数、y方向导数和混合偏导数来求解。听着复杂,但好在大多数编程库(比如 SciPy 的 RectBivariateSpline)都帮你封装好了。

我的经验:

在构建沪深300ETF期权的波动率曲面时,我对比过双线性和双三次。双三次插值生成的曲面肉眼可见地更“顺滑”,而且计算出来的希腊字母(Delta、Gamma)也更稳定。代价就是计算量大了不少——不过对于日频的曲面构建来说,完全不是问题。

什么时候用双三次?

  • 你需要计算希腊字母,且要求导数连续
  • 数据点比较密集,网格规整
  • 曲面本身比较光滑(比如长期期权)

注意:

双三次插值有个“副作用”——它可能会在数据稀疏的区域产生过冲(overshoot),也就是插值出来的值比所有已知点都大或都小。这在波动率曲面里是致命的,因为负的波动率或者过高的波动率都会导致定价错误。

10.3 径向基函数插值:不规则网格的救星

前面两种插值都要求数据点落在规整的网格上。但现实中的期权数据呢?行权价和到期日往往是不规则的。这时候,径向基函数(RBF)插值就派上用场了。

RBF 的核心思想:

用一系列“基函数”的加权和来拟合曲面。每个基函数只依赖于点到某个中心点的距离(径向距离)。

f(x, y) = Σᵢ wᵢ · φ(||(x, y) - (xᵢ, yᵢ)||)

其中 φ 是径向基函数,常见的有:

  • 高斯函数: φ(r) = exp(-ε²r²)
  • 多二次函数: φ(r) = √(1 + ε²r²)
  • 薄板样条: φ(r) = r² log(r)

ε 是形状参数,控制基函数的“胖瘦”。这个参数很关键——调大了曲面会过拟合,调小了又太平滑。

RBF 的优势:

  • 不要求数据点规整排列
  • 可以处理高维数据(虽然我们这里只用二维)
  • 生成的曲面非常光滑(理论上无限可导)

我踩过的坑:

有一次用 RBF 插值构建商品期权的波动率曲面,选的是高斯函数。结果曲面在远月合约处出现了“驼峰”——明明已知点都是平的,插值出来却鼓了个包。后来发现是形状参数 ε 没调好。我建议你:先用交叉验证选 ε,别凭感觉拍脑袋。

10.4 三种方法对比

特性 双线性插值 双三次插值 径向基函数插值
数据要求 规整网格 规整网格 任意分布
平滑度 C⁰(函数连续) C¹(一阶导连续) C∞(无限可导)
计算速度 极快 较快 较慢(需解线性方程组)
过冲风险 高(取决于参数)
适用场景 实时计算、网格规整 需要希腊字母、网格规整 数据不规则、追求平滑

10.5 知识体系图

下面这张图帮你理清三种插值方法的选择逻辑:

二维插值方法选择流程图 原始数据点 网格规整? 需要导数连续? 双三次插值 RBF插值 双线性插值 选择建议: 网格规整 + 实时计算 → 双线性 网格规整 + 需要希腊字母 → 双三次 数据不规则 → RBF(注意调参)

10.6 实战建议

说了这么多,到底怎么选?我个人有个“三问法”:

  1. 你的数据点在网格上吗? 不在 → 直接上 RBF。在 → 看第二问。
  2. 你需要计算希腊字母吗? 需要 → 双三次。不需要 → 看第三问。
  3. 你的数据量大吗? 大(比如每秒更新)→ 双线性。不大 → 双三次。

最后提醒一句:没有万能的方法。我在项目中经常是先用 RBF 做一次全局拟合,再用双三次在局部做微调。两种方法结合,效果往往比单一方法好得多。

核心要点回顾:

  • 双线性:快,但不平滑,适合实时计算
  • 双三次:平滑,导数连续,适合网格规整的数据
  • RBF:灵活,适合不规则数据,但需要调参
  • 实际项目中,可以组合使用多种方法

好了,插值这块就聊到这儿。记住:插值只是手段,不是目的。我们的目标是构建一个合理、稳定、可交易的波动率曲面。方法选对了,事半功倍;选错了,后面所有的工作都是白搭。


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