22. 曲面评估指标:MAE、RMSE、光滑度指标、无套利检验
做波动率曲面插值,最怕什么?
怕你插出来的曲面看着挺漂亮,一放到定价引擎里就崩了。或者更惨——回测时赚得盆满钵满,实盘时亏得底裤都不剩。
我早年就吃过这个亏。当时用了一个光滑度极好的样条曲面,回测曲线美如画,结果实盘第一天就被套利者盯上了。后来才发现,曲面虽然光滑,但局部出现了明显的蝶式套利机会。
所以这一章,咱们就来聊聊怎么给曲面做「体检」。说白了,就是四个维度:拟合精度、光滑程度、无套利性质、以及计算效率。
22.1 拟合精度指标:MAE 与 RMSE
这两个指标是基本功。你插值出来的曲面,跟原始市场报价到底差多少?
MAE(平均绝对误差):
MAE = (1/n) * Σ|σ_model - σ_market|
RMSE(均方根误差):
RMSE = sqrt((1/n) * Σ(σ_model - σ_market)²)
我个人习惯两个都看。MAE 告诉你平均偏差,RMSE 对大的偏离更敏感。
实战经验:我在做沪深300期权曲面时,发现RMSE比MAE大很多。一查,原来是深度虚值期权那边出了幺蛾子。RMSE帮我抓住了这个异常点。
一般来说,MAE 在 0.5 个波动率点以内算合格。但具体要看市场。比如标普500期权流动性好,我通常要求 MAE < 0.3。而某些新兴市场,1 个点以内也能接受。
22.2 光滑度指标
光滑度这东西,说起来玄乎,其实有量化方法。
常用指标:
- 二阶导数范数:计算曲面上每个点的二阶偏导,然后取平均。值越小越光滑。
- 曲率变化率:衡量曲面弯曲程度的突变情况。
- 局部极值数量:曲面上的「小疙瘩」越多,越不光滑。
举个例子,我常用的光滑度计算代码:
def compute_smoothness(surface, strikes, maturities):
"""
计算波动率曲面的光滑度
surface: (n_strikes, n_maturities) 的波动率矩阵
"""
dS = np.gradient(surface, axis=0) # 对行权价求导
dT = np.gradient(surface, axis=1) # 对期限求导
d2S = np.gradient(dS, axis=0)
d2T = np.gradient(dT, axis=1)
# 二阶导数的 Frobenius 范数
smoothness = np.sqrt(np.mean(d2S**2 + d2T**2))
return smoothness
小技巧:光滑度不是越低越好。太光滑可能意味着过拟合,把市场结构都磨平了。我一般会跟原始数据的粗糙度做个对比,控制在原始粗糙度的 1.5 倍以内。
22.3 无套利检验
这是最关键的环节。曲面再漂亮,有套利就是废纸。
三类核心套利检验:
- 蝶式套利检验:检查是否存在凸性违反。对于同一期限,不同行权价的期权价格必须满足凸性。
- 日历套利检验:检查不同期限之间是否存在套利。一般来说,长期波动率不应该低于短期波动率(除非有特殊事件)。
- 箱体套利检验:结合看涨看跌平价关系,检查是否存在跨品种套利。
我曾经在检验一个神经网络插值模型时,发现蝶式套利违反率高达 15%。当时团队差点就要上线了,还好我多留了个心眼。
避坑指南:无套利检验不能只看「有没有违反」,还要看「违反的程度」。比如蝶式价差只差了 0.01 元,可能只是四舍五入误差。但如果差了 0.5 元,那就是真有问题了。
蝶式套利检验的代码示例:
def butterfly_arbitrage_check(call_prices, strikes):
"""
检查蝶式套利
call_prices: 同一期限不同行权价的看涨期权价格
strikes: 对应的行权价
"""
violations = []
for i in range(1, len(strikes)-1):
# 蝶式价差 = C(K-ΔK) - 2*C(K) + C(K+ΔK)
butterfly = call_prices[i-1] - 2*call_prices[i] + call_prices[i+1]
if butterfly < -1e-6: # 允许微小误差
violations.append((strikes[i], butterfly))
return violations
22.4 综合评估框架
光看单个指标不够。我习惯做一个综合评分卡:
| 指标 | 权重 | 合格标准 | 优秀标准 |
|---|---|---|---|
| MAE | 25% | < 0.5 vol | < 0.2 vol |
| RMSE | 25% | < 0.8 vol | < 0.3 vol |
| 光滑度 | 20% | < 原始粗糙度×2 | < 原始粗糙度×1.2 |
| 无套利违反率 | 30% | < 1% | 0% |
这个权重是我个人经验总结的。无套利检验权重最高,因为这是底线。光滑度权重最低,因为可以后期调整。
22.5 知识体系总览
下面这张图,把曲面评估的四个维度串起来了:
这四个维度缺一不可。拟合精度差,曲面不准确;光滑度差,greeks 不稳定;有套利,模型就是废的;效率低,生产环境跑不动。
我的习惯:每次做完一个新插值模型,先跑无套利检验。通过了再看拟合精度。光滑度最后调。这个顺序帮我省了不少时间。
嗯,曲面评估这块就聊到这儿。记住一句话:能赚钱的曲面,不一定漂亮;但漂亮的曲面,一定要能赚钱。
公众号:蓝海资料掘金营,微信deep3321