第二十章:高阶策略:波动率锥、波动率期限结构套利

各位,欢迎来到高阶策略部分。

前面我们聊了很多曲面上的静态特征,比如微笑、偏斜。但交易员真正赚钱的地方,往往在曲面的动态变化上。今天要讲的波动率锥和期限结构套利,就是捕捉这种动态变化的利器。

我个人习惯把波动率锥看作一把“尺子”。没有这把尺子,你很难判断当前隐含波动率到底是贵了还是便宜了。说白了,就是给波动率定价。

1. 波动率锥:给波动率“称重”

什么是波动率锥?

很简单。把不同期限的历史波动率统计出来,画出分位数线(比如10%、25%、50%、75%、90%)。再把当前市场的隐含波动率点上去。两者一对比,高下立判。

核心逻辑:

  • 如果隐含波动率落在锥体上方(高于90%分位)→ 期权被高估,适合做空波动率。
  • 如果落在锥体下方(低于10%分位)→ 期权被低估,适合做多波动率。
  • 落在中间区域 → 相对合理,但可以结合期限结构做相对价值交易。

嗯,这里要注意一点。历史波动率的分位数不是一成不变的。我建议至少用过去1年、3年、5年的数据分别计算,然后取一个加权平均。为什么?因为市场结构会变。2018年的波动率特征和2023年完全不同。

我曾经在2020年3月市场暴跌时,看到隐含波动率瞬间冲破了99%分位。当时很多人慌了,觉得波动率还会更高。但我看了波动率锥,发现短期(1周)的锥顶已经被击穿,而长期(1年)的锥顶还有空间。这说明什么?短期恐慌过度了,但长期不确定性还在。于是我做了一个日历价差:卖出短期期权,买入长期期权。结果?短期波动率很快回落,长期波动率维持高位,这笔交易赚得很舒服。

2. 波动率期限结构:捕捉“形状”的套利机会

波动率期限结构,就是不同到期日的隐含波动率连成的曲线。正常情况下,它应该是向上倾斜的(远期不确定性更大)。但市场经常出现扭曲。

常见的期限结构形态:

  • 正向(Contango):远月波动率 > 近月波动率。这是常态。
  • 反向(Backwardation):近月波动率 > 远月波动率。通常出现在危机时刻。
  • 驼峰(Humped):中间期限波动率最高。这往往意味着某个特定事件(比如财报、大选)的预期。

套利怎么做?核心是相对价值。不是赌波动率的绝对方向,而是赌期限结构会回归正常形态。

一个经典策略:

当近月波动率远高于远月(反向结构)时,做空近月波动率,做多远月波动率。这叫“波动率期限结构套利”。

注意:这不是无风险套利。你需要对冲Delta和Vega的暴露。通常用Delta中性组合,并控制Vega的净敞口。

举个例子。假设标普500指数在某个事件后,近月(1个月)IV飙到35%,远月(6个月)IV只有22%。正常情况两者差距应该在5-8个点。现在差了13个点。我判断近月恐慌过度,远月相对合理。于是:

  • 卖出近月平值跨式(Short Straddle)
  • 买入远月平值跨式(Long Straddle)
  • 调整头寸比例,使得整体Vega中性(即波动率变化1%,组合盈亏平衡)

结果?只要近月IV回落,远月IV不跌,组合就能盈利。即使近月IV继续涨,只要远月IV涨得更多,也能赚钱。这就是相对价值套利的魅力。

3. 实战中的避坑指南

策略听起来简单,但坑不少。我踩过几个,分享给你们:

我曾经犯过的错:

  • 忽略流动性:远月期权流动性差,买卖价差大。你看到的IV可能是“纸面价格”,实际成交要打折扣。我建议只做近3个月到期的合约,流动性相对好。
  • 忽略股息和利率:期限结构套利涉及不同到期日,股息和利率的差异会影响期权定价。尤其是股指期权,股息率的变化会扭曲期限结构。记得用远期价格来校准。
  • 忽略尾部风险:反向期限结构往往出现在市场恐慌时。如果你做空近月波动率,一旦黑天鹅事件发生,近月IV可能继续飙升,导致巨大亏损。我建议设置严格的止损线,或者用价差结构(比如Put Spread)来限制风险。

4. 代码示例:计算波动率锥

下面是一个简单的Python代码,用来计算并绘制波动率锥。你可以直接拿去用。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 假设你有一个DataFrame,包含不同期限的历史波动率数据
# 列名:'1W', '1M', '3M', '6M', '1Y'
# 每一行代表一个交易日的历史波动率

def calculate_volatility_cone(df, quantiles=[0.1, 0.25, 0.5, 0.75, 0.9]):
    """
    计算波动率锥的分位数
    """
    cone = {}
    for col in df.columns:
        cone[col] = df[col].quantile(quantiles).values
    return pd.DataFrame(cone, index=quantiles)

# 示例数据
np.random.seed(42)
dates = pd.date_range('2020-01-01', '2023-12-31', freq='D')
data = {
    '1W': np.random.lognormal(mean=0.02, sigma=0.3, size=len(dates)) * 0.15,
    '1M': np.random.lognormal(mean=0.02, sigma=0.25, size=len(dates)) * 0.18,
    '3M': np.random.lognormal(mean=0.02, sigma=0.2, size=len(dates)) * 0.20,
    '6M': np.random.lognormal(mean=0.02, sigma=0.15, size=len(dates)) * 0.22,
    '1Y': np.random.lognormal(mean=0.02, sigma=0.1, size=len(dates)) * 0.25,
}
df = pd.DataFrame(data, index=dates)

# 计算锥
cone_df = calculate_volatility_cone(df)

# 当前隐含波动率(示例)
current_iv = {'1W': 0.32, '1M': 0.28, '3M': 0.25, '6M': 0.23, '1Y': 0.22}

# 绘图
plt.figure(figsize=(10, 6))
for q in cone_df.index:
    plt.plot(cone_df.columns, cone_df.loc[q], label=f'{int(q*100)}%', marker='o')
plt.plot(list(current_iv.keys()), list(current_iv.values()), 'r--', label='Current IV', linewidth=2)
plt.xlabel('Tenor')
plt.ylabel('Volatility')
plt.title('Volatility Cone')
plt.legend()
plt.grid(True)
plt.show()

这段代码会画出5条分位数线,以及当前隐含波动率的连线。一眼就能看出当前IV在锥体中的位置。

5. 知识体系图

下面我用一张SVG图来总结本章的核心逻辑。你可以把它当作一个思维导图。

波动率曲面高阶策略 波动率锥 期限结构套利 风险管理 历史分位数 当前IV对比 高估/低估判断 正向/反向/驼峰 日历价差 相对价值 流动性风险 尾部风险 股息/利率校准 核心:用波动率锥定价,用期限结构套利,用风控保命

这张图把本章的三个核心模块串起来了。波动率锥是“定价工具”,期限结构套利是“交易策略”,风险管理是“安全带”。三者缺一不可。

6. 最后说两句

波动率锥和期限结构套利,说白了就是利用市场对波动率的错误定价。但你要记住,市场错误定价是有原因的——可能是流动性不足,可能是事件冲击,也可能是市场情绪。你赚的钱,本质上是在承担别人不愿意承担的风险。

我个人的经验是:不要试图预测波动率的绝对方向,而是专注于相对价值。当你看到期限结构扭曲时,先问自己三个问题:

  1. 这个扭曲有基本面支撑吗?(比如财报、宏观事件)
  2. 我的头寸能承受多大的偏离?
  3. 如果错了,我该怎么退出?

想清楚这三个问题,再动手。嗯,今天就到这里。


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