第二十四章:波动率曲面在算法交易中的应用
说实话,波动率曲面这东西,很多人觉得它就是个定价工具。其实不然。我做了这么多年量化交易,最深的体会是——曲面本身就是一个交易信号源。今天我们就聊聊怎么把曲面用在实际的算法交易里。
24.1 波动率突破策略
先讲突破策略。这个思路其实很朴素:当隐含波动率突破某个阈值时,意味着市场情绪发生了质变。
我个人习惯用曲面上的ATM波动率作为基准。为什么?因为ATM期权流动性最好,价格最真实。你想想看,深度虚值的期权报价经常是瞎扯的,用那个做信号,容易翻车。
核心逻辑:
- 计算曲面各期限ATM波动率的滚动均值μ和标准差σ
- 当隐含波动率突破μ + kσ时,触发突破信号
- k值通常取2或3,取决于你的风险偏好
我在项目中遇到过一个问题:直接用原始波动率做突破,假信号特别多。后来我改用波动率的变化率,也就是一阶差分,效果好了不少。
def vol_breakout_signal(vol_surface, lookback=20, k=2):
"""
波动率突破信号生成器
vol_surface: 当前曲面对象
lookback: 回看窗口
k: 突破倍数
"""
atm_vols = vol_surface.get_atm_vols()
rolling_mean = atm_vols.rolling(lookback).mean()
rolling_std = atm_vols.rolling(lookback).std()
upper_band = rolling_mean + k * rolling_std
lower_band = rolling_mean - k * rolling_std
signal = np.where(atm_vols > upper_band, 1,
np.where(atm_vols < lower_band, -1, 0))
return signal
避坑指南:我曾经吃过一次大亏——用日频数据做突破信号,结果盘中波动率早就突破了又回来了。后来我改成15分钟高频数据,信号质量明显提升。
24.2 波动率均值回归策略
均值回归策略,说白了就是赌波动率不会一直极端下去。这个策略在期权市场特别有效,因为隐含波动率确实有均值回复的特性。
嗯,这里要注意:均值回归策略和突破策略其实是硬币的两面。突破策略赌趋势延续,均值回归赌趋势反转。关键是你得判断当前市场处于什么状态。
我一般用波动率曲面的期限结构来做判断。当短期波动率远高于长期波动率时,说明市场恐慌,这时候均值回归的概率很大。
| 期限结构形态 | 市场含义 | 策略倾向 |
|---|---|---|
| 陡峭向上(contango) | 远期波动率高于近期 | 做空远期波动率 |
| 陡峭向下(backwardation) | 近期波动率高于远期 | 做空近期波动率 |
| 平坦 | 市场预期稳定 | 观望或做跨式 |
def mean_reversion_signal(vol_surface, z_threshold=2):
"""
均值回归信号
基于波动率偏离其历史均值的程度
"""
atm_vols = vol_surface.get_atm_vols()
hist_mean = atm_vols.expanding().mean()
hist_std = atm_vols.expanding().std()
z_score = (atm_vols - hist_mean) / hist_std
# z_score > 2 表示波动率过高,做空波动率
# z_score < -2 表示波动率过低,做多波动率
signal = np.where(z_score > z_threshold, -1,
np.where(z_score < -z_threshold, 1, 0))
return signal, z_score
注意:均值回归策略最怕的是趋势行情。2018年2月的Volmageddon事件,就是一堆做空波动率的基金被一波带走。所以一定要设止损,别硬扛。
24.3 高频波动率交易
高频波动率交易,这个就比较硬核了。它跟前面两种策略不一样,拼的是速度和微观结构。
我做过一段时间的高频波动率交易,说实话,累。但收益也确实可观。核心思路是:利用期权市场与现货市场之间的信息传递延迟。
举个例子:标普500指数突然跳水,现货市场先反应,但期权市场的做市商需要几毫秒才能更新报价。这时候,如果你能抢先捕捉到现货的波动,就能在期权市场捡到便宜。
高频波动率交易的关键要素:
- 低延迟数据源:期权和现货的Tick级数据,延迟要控制在微秒级
- 快速曲面重建:每次新报价进来,都要在毫秒内重建曲面
- 订单簿分析:观察期权市场的买卖盘口,判断做市商的意图
- 统计套利模型:寻找曲面内部的不合理定价
def high_freq_vol_arb(surface_snapshot, order_book):
"""
高频波动率套利
surface_snapshot: 当前曲面快照
order_book: 期权订单簿数据
"""
# 1. 检测曲面异常
arb_opportunities = detect_surface_arb(surface_snapshot)
# 2. 检查订单簿深度
for arb in arb_opportunities:
bid_ask_spread = order_book.get_spread(arb.strike, arb.expiry)
if bid_ask_spread < arb.expected_profit * 0.5:
# 3. 执行套利
execute_arb_trade(arb)
return len(arb_opportunities)
个人经验:高频波动率交易最容易被忽视的是交易成本。我曾经有个策略,回测年化收益30%,实盘一跑,手续费吃掉一半。所以一定要把滑点和手续费算进去,别光看毛收益。
24.4 三种策略的对比与选择
你可能会问:这三种策略到底选哪个?我的建议是:看你的资源和能力。
突破策略和均值回归策略,适合大多数个人交易者。你只需要一个靠谱的数据源和一套稳定的交易系统就行。但高频波动率交易,门槛就高多了——你得有低延迟基础设施,还得懂硬件优化。
最后说一句:没有哪个策略是万能的。我自己的做法是,把突破和均值回归结合起来,根据市场状态动态切换。市场趋势明显时用突破,市场震荡时用均值回归。至于高频,那是另一个维度的游戏了。
本章核心要点:
- 波动率突破策略:捕捉波动率的趋势性变化,适合趋势行情
- 波动率均值回归策略:利用波动率的均值回复特性,适合震荡行情
- 高频波动率交易:利用微观结构套利,门槛高但收益可观
- 策略选择要结合自身资源和市场环境
公众号:蓝海资料掘金营,微信deep3321