4. 波动率曲面与期限结构:构建方法、形态解读、套利信号识别

波动率曲面这东西,说白了就是期权市场的「温度计」。我刚开始做期权交易那会儿,总觉得看一个平值隐含波动率就够了,直到有一次被深度虚值期权的异常波动狠狠教育了一顿。嗯,从那以后,我每次做波动率套利前,都会先把曲面从头到尾扫一遍。

这一章,我们就来聊聊怎么构建波动率曲面,怎么读懂它的形态,以及如何从中捕捉套利信号。

4.1 波动率曲面的构建方法

构建曲面,核心就两步:收集数据,然后插值。但这两步里坑不少,我一个个说。

4.1.1 数据清洗与预处理

你从交易所拿到的原始期权数据,基本没法直接用。为什么?因为存在大量噪音。

  • 剔除零成交量、零持仓:这些合约要么没成交,要么已经退市,没有参考价值。
  • 剔除深度实值/虚值:我个人习惯,Delta 绝对值小于 0.05 或大于 0.95 的合约直接扔掉。这些合约的隐含波动率对模型误差极其敏感,留着反而添乱。
  • 剔除异常报价:比如买卖价差超过中间价 20% 的,或者隐含波动率明显偏离相邻合约 10 个百分点的。我在项目中遇到过,有一次因为没剔除一个异常点,整个曲面都扭曲了,差点做出错误的套利决策。
注意: 数据清洗时,一定要保留时间戳。不同合约的交易时间可能不同,尤其是临近到期的合约,流动性差,报价可能滞后。我建议用最后 1 分钟的加权平均价作为计算基准。

4.1.2 插值方法的选择

数据清洗完了,你会发现,可用的合约点其实很稀疏。比如 30 天到期的合约,可能只有 5-6 个行权价有报价。这时候就需要插值,把整个曲面「填满」。

常用的插值方法有三种:

方法 优点 缺点 我的建议
线性插值 简单、计算快 曲面不平滑,容易出现尖角 只适合快速预览,别用于实盘
样条插值 曲面光滑,二阶可导 容易过拟合,边界处可能发散 我最常用,但需要加边界约束
参数化模型(如 SVI) 参数少,稳定性高 模型假设可能不符合市场 适合做研究,实盘需要定期校准

我个人习惯用三次样条插值,但在期限维度上,我会用线性插值。为什么?因为期限结构相对稳定,线性插值已经够用,没必要引入复杂的模型。

小技巧: 插值时,不要直接用行权价,而是用「货币性」(Moneyness),即行权价除以标的资产价格。这样不同时间点的曲面可以放在同一坐标系下比较。

4.2 形态解读:从曲面看市场情绪

曲面建好了,怎么看?我一般从三个维度入手:偏度(Skew)、期限结构(Term Structure)和曲率(Curvature)。

4.2.1 偏度:市场在怕什么?

偏度反映的是虚值看跌期权和虚值看涨期权的隐含波动率差异。如果虚值看跌的波动率明显高于虚值看涨,说明市场在「怕跌」,也就是我们常说的「恐慌偏度」。

举个例子,2020 年 3 月疫情爆发时,标普 500 期权的偏度一度达到 -30% 以上。我当时做波动率套利,看到这个信号,果断做空了偏度——虽然短期被市场情绪打脸,但一个月后偏度回归,收益相当可观。

偏度的量化指标,我常用这个:

# 计算偏度指标
def calculate_skew(surface, delta=0.25):
    put_iv = surface.get_iv(delta=-delta)
    call_iv = surface.get_iv(delta=delta)
    return put_iv - call_iv

4.2.2 期限结构:短期 vs 长期

期限结构反映的是不同到期日的隐含波动率差异。正常情况下,远期波动率会高于近期,因为时间越长,不确定性越大。这叫「正向期限结构」。

但有一种情况很特殊:当市场出现危机时,短期波动率会飙升,甚至超过远期,形成「反向期限结构」。我记得 2018 年 2 月的「波动率末日」就是典型——VIX 期货的期限结构一夜之间从正向变成反向,很多做空波动率的基金直接爆仓。

我个人习惯用「期限斜率」来量化:

# 计算期限斜率
def calculate_term_slope(surface, short_days=30, long_days=90):
    short_iv = surface.get_iv(term=short_days, moneyness=1.0)
    long_iv = surface.get_iv(term=long_days, moneyness=1.0)
    return short_iv - long_iv

4.2.3 曲率:凸性套利的机会

曲率反映的是平值附近波动率的弯曲程度。如果曲率很大,说明平值期权的波动率明显低于两侧的虚值期权,这时候做「蝶式套利」往往有不错的机会。

你想想看,曲率大的时候,市场其实在赌「大波动」,但又不确定方向。这时候卖出两侧的虚值期权,买入平值期权,赚的就是时间价值和波动率回归的钱。

4.3 套利信号识别

曲面形态看懂了,接下来就是找套利机会。我总结了三种最常见的信号:

4.3.1 曲面套利:统计套利

核心思想:同一标的、不同行权价、不同到期日的期权,隐含波动率应该保持一定的相对关系。如果某个合约的波动率明显偏离曲面,就存在套利机会。

具体做法:

  1. 用插值模型构建「基准曲面」
  2. 计算每个合约的「波动率残差」= 实际 IV - 基准 IV
  3. 残差超过 2 个标准差的,视为异常点
  4. 做多残差为负的合约,做空残差为正的合约
关键点: 这种套利需要 Delta 中性对冲,否则方向性风险会吃掉你的波动率收益。我一般用标的期货或 ETF 来对冲。

4.3.2 期限结构套利:日历价差

当期限结构出现异常时,比如短期波动率远高于长期,就可以做「日历价差」:卖出短期期权,买入长期期权。

为什么?因为短期波动率往往回归更快。我记得 2021 年有一次,某只股票的短期波动率因为财报事件飙升到 80%,而长期只有 40%。我果断做了日历价差,一个月后财报落地,短期波动率跌回 45%,净赚 15% 的波动率差。

代码实现很简单:

# 日历价差信号
def calendar_spread_signal(surface, short_term, long_term):
    short_iv = surface.get_iv(term=short_term, moneyness=1.0)
    long_iv = surface.get_iv(term=long_term, moneyness=1.0)
    spread = short_iv - long_iv
    if spread > 0.15:  # 15% 阈值
        return "做空短期,做多长期"
    elif spread < -0.10:
        return "做多短期,做空长期"
    else:
        return "无信号"

4.3.3 偏度套利:风险逆转

偏度套利,说白了就是赌偏度会回归。当虚值看跌的波动率远高于虚值看涨时,可以卖出虚值看跌,买入虚值看涨,构成「风险逆转」组合。

这里有个坑:偏度套利本质上是在卖保险,赚的是保费,但一旦市场出现黑天鹅,亏损可能无限大。我建议严格控制仓位,并且设置止损线。我曾经有一次偏度套利做得太激进,结果遇到熔断,差点爆仓。嗯,从那以后,我每次做偏度套利都会买一个更虚值的看跌期权来保护尾部风险。

4.4 实战中的注意事项

最后,分享几个我在实战中踩过的坑:

  • 流动性陷阱:有些合约的隐含波动率看起来很诱人,但买卖价差巨大,一进去就被滑点吃掉。我建议只交易流动性最好的前 3 个行权价。
  • 股息和利率:构建曲面时,一定要考虑股息和利率的影响。尤其是个股期权,股息率的变化会显著影响波动率曲面。
  • 模型风险:任何插值模型都是对真实市场的近似。不要过度依赖模型,要结合市场经验判断。我见过有人用复杂的 SVI 模型拟合出完美的曲面,结果实盘一跑就亏钱——因为模型假设和市场现实脱节了。
我的习惯: 每天开盘前,我会先看一眼波动率曲面的形态,然后问自己三个问题:偏度是否极端?期限结构是否异常?曲率是否过大?如果三个问题中有两个回答「是」,那今天大概率有套利机会。

好了,波动率曲面的构建、解读和套利信号识别,就聊到这里。记住,曲面是市场的「心电图」,读懂了它,你就能提前感知市场的脉搏。

波动率曲面套利知识体系 原始期权数据 标的资产价格 无风险利率/股息 数据清洗:剔除异常、插值、标准化 波动率曲面构建(样条插值 / SVI 模型) 偏度解读(恐慌/贪婪) 期限结构(正向/反向) 曲率分析(凸性机会) 曲面统计套利 日历价差套利 偏度/风险逆转套利