曲面套利策略六:曲面斜率均值回归策略

基于Skew的历史分位数进行交易

各位,今天聊一个我特别喜欢的策略——曲面斜率均值回归。说白了,就是利用Skew的极端值来做反向交易。

你想想看,期权市场里Skew这东西,它不会一直往一个方向跑。涨得太高了,迟早要回落;跌得太低了,早晚要反弹。这就是均值回归的底层逻辑。

我个人习惯把这种策略叫做「捡烟蒂」策略。为什么?因为当Skew走到历史极端位置时,就像烟蒂掉在地上,虽然脏,但还能抽一口。当然,前提是你得知道什么时候该捡,什么时候该跑。

核心逻辑:Skew的历史分位数

我们先搞清楚一个概念:什么是Skew的历史分位数?

简单说,就是把过去一段时间(比如90天或180天)的Skew值从小到大排个序,然后看当前值处在什么位置。如果当前Skew处于95%分位数以上,说明市场极度恐慌,虚值看跌期权贵得离谱。这时候,我倾向于卖出虚值看跌,买入平值看跌,做空Skew。

反过来,如果Skew处于5%分位数以下,说明市场过于乐观,虚值看跌期权便宜得不像话。这时候,我会买入虚值看跌,卖出平值看跌,做多Skew。

关键点:这个策略的核心假设是Skew会回归到历史均值。但要注意,均值回归不是100%发生的,尤其是在极端行情下(比如2008年、2020年3月),Skew可能长时间停留在极端位置。

策略构建步骤

嗯,这里我直接给出我常用的构建流程。你们可以照着这个框架去实现:

  1. 计算Skew指标:通常用25Delta看跌期权隐含波动率减去25Delta看涨期权隐含波动率。或者用更简单的:平值看跌IV减去平值看涨IV。
  2. 计算历史分位数:取过去N个交易日(我一般用120天)的Skew数据,计算当前值所处的百分位。
  3. 设定阈值:上阈值设为90%或95%分位数,下阈值设为5%或10%分位数。具体数值需要根据品种回测调整。
  4. 开仓信号:当Skew突破上阈值时,做空Skew(卖出虚值看跌,买入平值看跌);当Skew跌破下阈值时,做多Skew(买入虚值看跌,卖出平值看跌)。
  5. 平仓信号:当Skew回归到50%分位数附近时,平仓离场。或者设置固定持有期,比如5个交易日。

代码实现示例

下面是我写的一个简化版实现。你们可以直接拿去用,但记得根据实际数据做调整:

import numpy as np
import pandas as pd

def calculate_skew_quantile(skew_series, window=120):
    """
    计算Skew的历史分位数
    skew_series: Skew时间序列
    window: 回看窗口
    """
    # 滚动计算分位数
    upper_threshold = skew_series.rolling(window).quantile(0.95)
    lower_threshold = skew_series.rolling(window).quantile(0.05)
    median = skew_series.rolling(window).median()
    
    # 生成信号
    signals = pd.Series(index=skew_series.index, dtype=int)
    signals[skew_series > upper_threshold] = -1  # 做空Skew
    signals[skew_series < lower_threshold] = 1   # 做多Skew
    signals[(skew_series >= lower_threshold) & (skew_series <= upper_threshold)] = 0
    
    return signals, upper_threshold, lower_threshold, median

# 使用示例
# skew_data = pd.Series(...)  # 你的Skew数据
# signals, upper, lower, med = calculate_skew_quantile(skew_data, window=120)

个人经验:我在实盘中遇到过一个问题——Skew数据有时会跳空。比如某天突然出现大事件,Skew直接从30%分位数跳到95%分位数。这时候如果直接开仓,很容易被套。我的做法是加一个「确认信号」:要求Skew在突破阈值后,至少停留2个交易日再开仓。这样可以过滤掉一些假突破。

避坑指南

我曾经踩过一个坑,说出来你们引以为戒:

有一段时间,我在做沪深300ETF期权的Skew均值回归策略。回测效果特别好,年化收益20%+,最大回撤不到5%。我兴冲冲地上了实盘,结果第一个月就亏了8%。

后来复盘发现,问题出在「分位数计算窗口」上。我回测时用的是120天窗口,但实盘那段时间市场结构发生了变化——原本的Skew均值从0.05降到了0.02。也就是说,历史分位数已经失效了。

从那以后,我养成了一个习惯:定期检查Skew的均值是否发生结构性变化。如果发现均值漂移超过一定幅度(比如20%),就重新校准分位数窗口,或者改用滚动分位数。

策略的优缺点

优点 缺点
逻辑清晰,容易理解 在趋势行情中容易逆势亏损
回测表现通常不错 需要频繁调仓,交易成本高
可以与其他策略组合使用 对参数(窗口、阈值)敏感
适合震荡市 极端行情下可能失效

核心知识体系

下面这张图,是我自己总结的Skew均值回归策略的完整框架。你们可以把它当作一个检查清单:

Skew均值回归策略核心框架 数据输入 计算Skew指标 计算历史分位数(窗口选择) 信号生成(阈值设定+确认机制) 执行交易 + 风控(止损/平仓) 关键参数 • 窗口:90-180天 • 上阈值:90%-95% • 下阈值:5%-10% • 确认信号:2天 • 平仓:50%分位数 • 止损:Skew继续偏离5% 注意:参数需根据具体品种和市况调整,不可直接套用

重要提醒:这个策略在低波动率环境下表现最好。如果市场处于高波动率状态(比如VIX在30以上),Skew的均值回归速度会变慢,甚至出现「均值漂移」。这时候强行做均值回归,很容易被市场打脸。

我的建议是:在高波动率环境下,要么不做这个策略,要么把阈值调得更极端一些(比如上阈值调到99%分位数)。

实战中的注意事项

  • 交易成本:这个策略需要频繁调仓,每次调仓都要买卖两个期权。如果交易成本太高,利润会被吃掉一大块。我一般选择流动性好的品种,比如上证50ETF期权、沪深300ETF期权。
  • 滑点问题:在Skew极端位置时,买卖价差通常很大。我习惯用限价单,而不是市价单。宁可少赚一点,也不能被滑点吃掉利润。
  • 组合管理:不要把全部资金都押在这个策略上。我一般只分配总资金的10%-20%给这个策略,剩下的资金做其他策略或者现金管理。
  • 回测与实盘的差异:回测时假设可以完美成交,但实盘不是这样。我建议在回测结果上打个八折,作为实盘的预期收益。

好了,关于Skew均值回归策略,今天就聊这么多。这个策略说难不难,说简单也不简单。关键在于你对Skew的理解深度,以及你能否严格执行纪律。记住,在期权交易里,纪律比技术更重要。