9. 波动率与深度:波动率聚类对深度的影响、波动率微笑与深度分布
这一节,我们来聊聊波动率和市场深度之间的「暧昧关系」。
很多人做量化,喜欢把波动率和深度分开看。我个人习惯是把它们放在一起分析。为什么?因为波动率不是均匀分布的,它有自己的脾气——会聚类,会微笑。而这些脾气,直接决定了你的订单簿深度在什么时候会「塌方」,什么时候会「堆起来」。
9.1 波动率聚类:深度的「隐形杀手」
先问一个问题:为什么高波动率的时候,市场深度往往变薄?
你可能会说,因为做市商撤单了。没错,但更深层的原因是——波动率聚类。
波动率聚类是个啥?说白了就是:大波动后面跟着大波动,小波动后面跟着小波动。这不是玄学,是实证金融学里被反复验证的现象。我在做高频策略回测时,发现一个规律:一旦某分钟出现超过3个标准差的收益率,接下来5-10分钟内的波动率会显著高于平均水平。
这对深度意味着什么?
- 做市商的风险厌恶:波动率聚类时,做市商对未来不确定性的预期上升。他们会主动缩小报价价差,同时减少每个价位的挂单量。深度自然就薄了。
- 信息交易者的涌入:高波动往往伴随着信息事件。知情交易者更倾向于市价单,吃掉流动性。你想想看,买单吃掉了卖一,卖二还没补上来,深度是不是就塌了?
- 库存风险加剧:我记得有一次做ETH-USDT的做市,波动率突然从20%飙到80%。我的库存还没对冲完,价格已经滑了2%。那之后我学乖了——波动率聚类期间,必须动态调整深度阈值。
核心结论:波动率聚类期间,市场深度会呈现「阶梯式下降」的特征。不是线性减少,而是每出现一次大波动,深度就下一个台阶。
9.2 波动率微笑:深度分布的「非对称密码」
波动率微笑,期权交易员应该很熟。但放在订单簿里,它同样适用。
简单说:深度分布不是均匀的。深度在价格两侧的分布,往往和隐含波动率的形状高度相关。
我举个例子。假设当前BTC价格是60000美元。你观察订单簿,会发现左侧(卖单侧)的深度在61000附近突然变厚,而右侧(买单侧)在59000附近也有一堵墙。但这两堵墙的厚度不一样——卖单侧的墙更厚。
为什么?因为波动率微笑。
市场参与者对上涨和下跌的恐惧程度不同。当市场情绪偏空时,虚值看跌期权的隐含波动率会高于虚值看涨期权。这种情绪会传导到现货订单簿上——做市商会在下跌方向挂更多的保护性订单,导致深度分布出现「微笑」形状。
| 价格区间 | 深度分布特征 | 波动率微笑影响 |
|---|---|---|
| 远高于现价 | 深度较薄,价差较大 | 虚值看涨波动率低,做市商不愿挂单 |
| 略高于现价 | 深度适中,价差正常 | 平值附近波动率稳定 |
| 略低于现价 | 深度较厚,价差收窄 | 虚值看跌波动率高,做市商积极挂单 |
| 远低于现价 | 深度极厚,形成「支撑墙」 | 深度虚值看跌波动率飙升,大量保护性订单 |
实战技巧:我建议你在分析深度分布时,同时拉出同一标的的期权隐含波动率曲线。如果发现波动率微笑左偏(左侧波动率高于右侧),那么订单簿的买单侧深度大概率会厚于卖单侧。反过来也一样。
9.3 波动率与深度的动态关系:一个框架
为了让你更直观地理解,我画了一张框架图。这张图展示了波动率、深度、订单流三者之间的循环关系。
这张图想表达什么?
- 波动率聚类导致做市商撤单,深度变薄。
- 深度变薄后,大额订单更容易造成价格冲击,订单流不平衡加剧。
- 订单流不平衡反过来又引发新的波动,形成正反馈循环。
- 而波动率微笑则像一个「偏置器」,决定了这个循环在上涨和下跌方向上的不对称程度。
避坑指南:我曾经在回测一个统计套利策略时,忽略了波动率聚类对深度的影响。结果实盘时,策略在低波动期表现完美,一到高波动期就频繁滑点,回撤直接翻倍。后来我加了一个「波动率状态过滤器」——当波动率聚类指数超过阈值时,自动降低仓位。效果立竿见影。
9.4 如何量化波动率对深度的影响?
光说不练假把式。我给你一个简单的量化框架。
第一步:计算波动率聚类指数。我常用的是波动率自相关系数的滚动均值。
import numpy as np
import pandas as pd
def volatility_clustering_index(returns, window=20):
"""
计算波动率聚类指数
值越高,说明波动率聚类越明显
"""
abs_returns = np.abs(returns)
autocorr = [abs_returns[i:i+window].autocorr(lag=1)
for i in range(len(abs_returns)-window)]
return np.nanmean(autocorr)
# 示例:计算BTC 1分钟收益率的聚类指数
btc_returns = pd.Series(...) # 你的收益率数据
cluster_idx = volatility_clustering_index(btc_returns)
print(f"当前波动率聚类指数: {cluster_idx:.3f}")
# 通常 >0.3 表示显著聚类
第二步:计算深度弹性。也就是深度对波动率变化的敏感度。
def depth_elasticity(depth_series, vol_series):
"""
深度弹性 = Δ深度% / Δ波动率%
负值表示波动率上升时深度下降
"""
depth_pct = depth_series.pct_change()
vol_pct = vol_series.pct_change()
# 去掉异常值
mask = (np.abs(depth_pct) < 0.5) & (np.abs(vol_pct) < 0.5)
return np.polyfit(vol_pct[mask], depth_pct[mask], 1)[0]
# 弹性为 -0.8 意味着:波动率每上升10%,深度下降8%
我的经验阈值:当深度弹性绝对值大于1.0时,说明市场对波动率极度敏感。这时候做市策略必须切换到「防御模式」——缩小单笔挂单量,扩大报价价差。
9.5 波动率微笑与深度分布的实战案例
最后,分享一个我实际做过的案例。
2023年10月,我在监控ETH的订单簿时,发现一个有趣的现象:深度分布出现了明显的「左偏微笑」——买单侧的深度比卖单侧厚了将近40%。同时,ETH的期权隐含波动率曲线也左偏,虚值看跌期权的IV比虚值看涨高了15个百分点。
这说明什么?市场在定价一个「下行风险溢价」。做市商们预期价格可能下跌,所以在买单侧挂了大量保护性订单。我当时的策略是:在买单侧深度较厚的区域,挂限价单做多;在卖单侧深度较薄的区域,避免做空。结果那一周,我的策略跑赢了基准2.3%。
嗯,这就是波动率微笑告诉你的深度秘密。
一句话总结:波动率聚类告诉你「什么时候深度会变薄」,波动率微笑告诉你「哪个方向的深度会更厚」。两者结合,你就能预判订单簿的「软肋」在哪里。