曲面套利策略六:曲面斜率均值回归策略
基于Skew的历史分位数进行交易
各位,今天聊一个我特别喜欢的策略——曲面斜率均值回归。说白了,就是利用Skew的极端值来做反向交易。
你想想看,期权市场里Skew这东西,它不会一直往一个方向跑。涨得太高了,迟早要回落;跌得太低了,早晚要反弹。这就是均值回归的底层逻辑。
我个人习惯把这种策略叫做「捡烟蒂」策略。为什么?因为当Skew走到历史极端位置时,就像烟蒂掉在地上,虽然脏,但还能抽一口。当然,前提是你得知道什么时候该捡,什么时候该跑。
核心逻辑:Skew的历史分位数
我们先搞清楚一个概念:什么是Skew的历史分位数?
简单说,就是把过去一段时间(比如90天或180天)的Skew值从小到大排个序,然后看当前值处在什么位置。如果当前Skew处于95%分位数以上,说明市场极度恐慌,虚值看跌期权贵得离谱。这时候,我倾向于卖出虚值看跌,买入平值看跌,做空Skew。
反过来,如果Skew处于5%分位数以下,说明市场过于乐观,虚值看跌期权便宜得不像话。这时候,我会买入虚值看跌,卖出平值看跌,做多Skew。
关键点:这个策略的核心假设是Skew会回归到历史均值。但要注意,均值回归不是100%发生的,尤其是在极端行情下(比如2008年、2020年3月),Skew可能长时间停留在极端位置。
策略构建步骤
嗯,这里我直接给出我常用的构建流程。你们可以照着这个框架去实现:
- 计算Skew指标:通常用25Delta看跌期权隐含波动率减去25Delta看涨期权隐含波动率。或者用更简单的:平值看跌IV减去平值看涨IV。
- 计算历史分位数:取过去N个交易日(我一般用120天)的Skew数据,计算当前值所处的百分位。
- 设定阈值:上阈值设为90%或95%分位数,下阈值设为5%或10%分位数。具体数值需要根据品种回测调整。
- 开仓信号:当Skew突破上阈值时,做空Skew(卖出虚值看跌,买入平值看跌);当Skew跌破下阈值时,做多Skew(买入虚值看跌,卖出平值看跌)。
- 平仓信号:当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均值回归策略的完整框架。你们可以把它当作一个检查清单:
重要提醒:这个策略在低波动率环境下表现最好。如果市场处于高波动率状态(比如VIX在30以上),Skew的均值回归速度会变慢,甚至出现「均值漂移」。这时候强行做均值回归,很容易被市场打脸。
我的建议是:在高波动率环境下,要么不做这个策略,要么把阈值调得更极端一些(比如上阈值调到99%分位数)。
实战中的注意事项
- 交易成本:这个策略需要频繁调仓,每次调仓都要买卖两个期权。如果交易成本太高,利润会被吃掉一大块。我一般选择流动性好的品种,比如上证50ETF期权、沪深300ETF期权。
- 滑点问题:在Skew极端位置时,买卖价差通常很大。我习惯用限价单,而不是市价单。宁可少赚一点,也不能被滑点吃掉利润。
- 组合管理:不要把全部资金都押在这个策略上。我一般只分配总资金的10%-20%给这个策略,剩下的资金做其他策略或者现金管理。
- 回测与实盘的差异:回测时假设可以完美成交,但实盘不是这样。我建议在回测结果上打个八折,作为实盘的预期收益。
好了,关于Skew均值回归策略,今天就聊这么多。这个策略说难不难,说简单也不简单。关键在于你对Skew的理解深度,以及你能否严格执行纪律。记住,在期权交易里,纪律比技术更重要。