4. 波动率曲面与期限结构:构建方法、形态解读、套利信号识别
波动率曲面这东西,说白了就是期权市场的「温度计」。我刚开始做期权交易那会儿,总觉得看一个平值隐含波动率就够了,直到有一次被深度虚值期权的异常波动狠狠教育了一顿。嗯,从那以后,我每次做波动率套利前,都会先把曲面从头到尾扫一遍。
这一章,我们就来聊聊怎么构建波动率曲面,怎么读懂它的形态,以及如何从中捕捉套利信号。
4.1 波动率曲面的构建方法
构建曲面,核心就两步:收集数据,然后插值。但这两步里坑不少,我一个个说。
4.1.1 数据清洗与预处理
你从交易所拿到的原始期权数据,基本没法直接用。为什么?因为存在大量噪音。
- 剔除零成交量、零持仓:这些合约要么没成交,要么已经退市,没有参考价值。
- 剔除深度实值/虚值:我个人习惯,Delta 绝对值小于 0.05 或大于 0.95 的合约直接扔掉。这些合约的隐含波动率对模型误差极其敏感,留着反而添乱。
- 剔除异常报价:比如买卖价差超过中间价 20% 的,或者隐含波动率明显偏离相邻合约 10 个百分点的。我在项目中遇到过,有一次因为没剔除一个异常点,整个曲面都扭曲了,差点做出错误的套利决策。
4.1.2 插值方法的选择
数据清洗完了,你会发现,可用的合约点其实很稀疏。比如 30 天到期的合约,可能只有 5-6 个行权价有报价。这时候就需要插值,把整个曲面「填满」。
常用的插值方法有三种:
| 方法 | 优点 | 缺点 | 我的建议 |
|---|---|---|---|
| 线性插值 | 简单、计算快 | 曲面不平滑,容易出现尖角 | 只适合快速预览,别用于实盘 |
| 样条插值 | 曲面光滑,二阶可导 | 容易过拟合,边界处可能发散 | 我最常用,但需要加边界约束 |
| 参数化模型(如 SVI) | 参数少,稳定性高 | 模型假设可能不符合市场 | 适合做研究,实盘需要定期校准 |
我个人习惯用三次样条插值,但在期限维度上,我会用线性插值。为什么?因为期限结构相对稳定,线性插值已经够用,没必要引入复杂的模型。
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 曲面套利:统计套利
核心思想:同一标的、不同行权价、不同到期日的期权,隐含波动率应该保持一定的相对关系。如果某个合约的波动率明显偏离曲面,就存在套利机会。
具体做法:
- 用插值模型构建「基准曲面」
- 计算每个合约的「波动率残差」= 实际 IV - 基准 IV
- 残差超过 2 个标准差的,视为异常点
- 做多残差为负的合约,做空残差为正的合约
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 模型拟合出完美的曲面,结果实盘一跑就亏钱——因为模型假设和市场现实脱节了。
好了,波动率曲面的构建、解读和套利信号识别,就聊到这里。记住,曲面是市场的「心电图」,读懂了它,你就能提前感知市场的脉搏。