4、波动率曲面构建:曲面构建方法、插值技术(线性/样条)、曲面平滑与去噪、实战中的曲面数据源
波动率曲面这东西,说白了就是期权的“体温计”。
我刚开始做期权量化那会儿,觉得只要会算个隐含波动率就够了。后来在实盘里吃了不少亏,才发现——没有曲面,你看到的波动率只是冰山一角。不同行权价、不同到期日的期权,隐含波动率压根儿就不一样。把这些点连起来,形成一个三维曲面,才是我们做波动率交易的真正战场。
4.1 曲面构建的核心逻辑
构建曲面,本质上是个“从点到面”的过程。你手上有几十个期权合约的隐波数据,每个合约对应一个行权价和一个到期日。把这些散点投射到三维空间里,再用数学方法把它们连成一张平滑的网,这就是曲面。
我个人习惯把曲面构建分成三步:
- 数据清洗——剔除明显异常的报价,比如深度虚值期权的隐波突然飙高,那多半是流动性问题,不是市场真实意愿。
- 坐标映射——把行权价转换成“钱值”(比如K/S或者delta),把到期日转换成“剩余期限”。这一步很关键,直接映射容易出问题。
- 插值与拟合——用数学方法填补空白区域,生成完整的曲面网格。
重要提醒:曲面不是越光滑越好。过度平滑会抹掉市场真实的波动结构,比如“波动率微笑”或者“偏斜”。我见过有人用高阶多项式硬拟合,结果曲面漂亮得像艺术品,但回测一跑,交易信号全废了。
4.2 插值技术:线性 vs 样条
插值,就是猜中间的点。你手上有10个行权价的隐波,但你想知道行权价在中间位置的值是多少,就得靠插值。
4.2.1 线性插值
线性插值最简单,也最粗暴。两点之间画条直线,中间的值按比例算。
# 线性插值示例
def linear_interp(x, x0, x1, y0, y1):
return y0 + (y1 - y0) * (x - x0) / (x1 - x0)
优点是快,计算量小。缺点嘛——不够平滑。在行权价密集的区域还好,一旦稀疏,曲面就会出现明显的“折角”。我在做日内高频交易时偶尔会用线性插值,因为速度优先,但做日频策略我基本不用。
4.2.2 样条插值
样条插值就聪明多了。它用分段低次多项式去拟合,保证曲线在连接点处不仅连续,而且一阶导数、二阶导数也连续。说白了,就是让曲线“拐弯”的时候不突兀。
# 三次样条插值示例(使用scipy)
from scipy.interpolate import CubicSpline
import numpy as np
# 假设我们有行权价和对应的隐波
strikes = np.array([3.0, 3.2, 3.4, 3.6, 3.8])
ivs = np.array([0.25, 0.28, 0.30, 0.29, 0.26])
# 构建三次样条
cs = CubicSpline(strikes, ivs, bc_type='natural')
# 在更细的网格上求值
fine_strikes = np.linspace(3.0, 3.8, 50)
smooth_ivs = cs(fine_strikes)
我个人更偏爱样条插值,尤其是做波动率曲面套利的时候。它保留了市场的局部结构,又不会像线性插值那样出现尖角。不过要注意——样条在边界处容易“放飞自我”,所以边界条件要选好,我一般用natural边界条件。
实战技巧:如果你做的是指数期权(比如50ETF、沪深300),流动性集中在平值附近,虚值和实值端数据稀疏。这时候我建议用样条插值,但要在两端加“虚拟点”来约束曲线行为。我曾经因为没加虚拟点,曲面在深度虚值端直接翘到天上去了,回测信号一塌糊涂。
4.3 曲面平滑与去噪
插值解决的是“点不够”的问题,平滑解决的是“点太乱”的问题。实盘数据里,噪声无处不在——买卖价差、报价延迟、大单冲击……这些都会让隐波数据上蹿下跳。
常用的平滑方法有几种:
- 移动平均平滑——在行权价维度上做滑动窗口平均。简单,但会滞后。
- 核回归平滑——用核函数给每个点加权,离得近的权重大。我个人比较喜欢用高斯核。
- 正则化拟合——在拟合目标函数里加一个惩罚项,限制曲面的弯曲程度。比如用Tikhonov正则化。
# 核回归平滑示例
def kernel_smooth(strikes, ivs, target_strike, bandwidth=0.05):
weights = np.exp(-0.5 * ((strikes - target_strike) / bandwidth) ** 2)
return np.sum(weights * ivs) / np.sum(weights)
避坑指南:我曾经在50ETF期权上做过一个策略,用了太强的平滑,结果把“波动率偏斜”的日内变化全抹掉了。那个策略回测表现很好,实盘却一直亏。后来发现,平滑参数选得太宽,把交易信号也一起平滑掉了。记住——去噪和去信号,有时候只有一线之隔。
4.4 实战中的曲面数据源
说完了方法,聊聊数据从哪来。这是最实际的问题,也是很多新手容易卡住的地方。
| 数据源类型 | 特点 | 适用场景 |
|---|---|---|
| 交易所直接行情 | 实时、准确、但原始 | 高频交易、做市 |
| 金融数据终端(Wind、Bloomberg) | 经过清洗、有历史数据 | 策略研究、回测 |
| 第三方数据服务商 | 提供预处理曲面、API接口 | 快速开发、中小机构 |
| 自建数据采集 | 灵活、可控、但维护成本高 | 有技术团队的大机构 |
我个人建议,刚开始做研究的时候,先用金融数据终端的历史数据把模型跑通。等策略逻辑验证得差不多了,再考虑接入实时行情。别一上来就搞实时数据流,那玩意儿调试起来能让你怀疑人生。
一个小经验:如果你用Wind或者Bloomberg的数据,注意它们的隐波计算方式。不同数据商用的定价模型可能不一样,有的用Black-Scholes,有的用二叉树。同一个市场数据,算出来的隐波可能差好几个点。所以——回测和实盘一定要用同一个数据源,不然你会被“数据差异”坑得很惨。
4.5 本章知识体系总览
下面这张图,是我自己整理的本章节核心逻辑。你可以把它当成一张地图,随时回来对照。
嗯,曲面构建这块内容不少,但核心就三件事:数据处理好、插值选对、平滑别过度。把这三点拿捏住了,你的曲面就能真实反映市场结构,而不是一张“看起来很美的图”。
公众号:蓝海资料掘金营,微信deep3321