4. 波动性分析:波动率指标、波动率聚类、波动率对滑点的影响机制
做价差交易的朋友,十有八九都吃过滑点的亏。我刚开始做高频价差策略那会儿,最怕的就是行情突然"炸裂",明明算好的价差,一进场就变了个样。后来我慢慢意识到,滑点这东西,跟波动率是绑在一根绳上的蚂蚱。今天咱们就好好聊聊这个。
4.1 波动率指标:你该盯哪些数?
波动率不是玄学,它是有具体指标的。我个人习惯用这么几个:
| 指标 | 计算方式 | 适用场景 |
|---|---|---|
| 历史波动率(HV) | 过去N根K线的收益率标准差 | 判断当前波动是否异常 |
| 真实波动幅度均值(ATR) | 过去N根K线的真实波幅均值 | 设置止损、止盈的参考 |
| 日内波动率 | 当日最高最低价差 / 开盘价 | 判断日内交易难度 |
| 相对波动率 | 当前HV / 过去一段时间的HV中位数 | 识别波动率突变 |
举个例子。ATR这个指标,我在做螺纹钢和热卷的价差时经常用。如果ATR突然放大到平时的2倍以上,我基本会暂停手动交易,等波动稳定再说。为什么?因为这时候滑点成本会吃掉你大部分利润。
核心观点:波动率越高,市场深度越薄,滑点越严重。这不是线性关系,而是指数级的。
4.2 波动率聚类:市场有记忆
你发现没有?波动大的时候,往往连着几天都大。波动小的时候,也经常是一连串的小波动。这就是波动率聚类效应。
我记得有一次做股指期货的价差,连续三天波动率都在低位,我放松了警惕,第四天突然来了一波大行情,滑点直接干掉了半个月的利润。嗯,从那以后,我再也不敢忽视波动率聚类这个现象了。
为什么会这样?说白了,市场参与者的情绪是有惯性的。恐慌不会瞬间消失,贪婪也不会立刻冷却。所以波动率会呈现出"抱团"的特征。
怎么量化这个现象?我一般用GARCH模型来拟合。不过对于实战交易,你不需要搞那么复杂。一个简单的办法是:
# 波动率聚类检测(简化版)
def detect_volatility_cluster(price_series, lookback=20):
returns = np.diff(np.log(price_series))
vol = np.std(returns[-lookback:])
vol_ma = np.mean([np.std(returns[i-lookback:i]) for i in range(-lookback, 0)])
# 如果当前波动率高于均值1.5倍,认为处于高波动聚类
if vol > 1.5 * vol_ma:
return "high_cluster"
elif vol < 0.7 * vol_ma:
return "low_cluster"
else:
return "normal"
这个代码虽然简单,但在实战中够用了。你想想看,如果当前处于高波动聚类,你进场做价差,滑点成本至少是平时的2-3倍。
4.3 波动率对滑点的影响机制
这个问题,咱们得从市场微观结构说起。波动率影响滑点,主要通过三个渠道:
- 订单簿深度变化:高波动时,做市商会撤单,流动性瞬间蒸发。你看到的买一卖一价差,可能从1个tick变成5个tick。
- 成交速度变化:波动剧烈时,订单到达速度极快,你的限价单可能还没挂上去,价格已经跑了。
- 冲击成本放大:同样的下单量,在低波动时可能只吃穿1层盘口,在高波动时可能要吃掉3-4层。
我曾经做过一个回测,把波动率分成5个区间,统计每个区间的平均滑点:
| 波动率区间 | 平均滑点(tick) | 滑点标准差 |
|---|---|---|
| 极低(< 0.5倍均值) | 0.3 | 0.2 |
| 低(0.5-0.8倍) | 0.5 | 0.4 |
| 正常(0.8-1.2倍) | 1.0 | 0.8 |
| 高(1.2-2.0倍) | 2.5 | 1.8 |
| 极高(> 2.0倍) | 5.0+ | 3.5+ |
看到没?波动率从正常到极高,滑点翻了5倍。这就是为什么我反复强调,做价差交易一定要把波动率监控放在第一位。
实战技巧:我建议你在交易终端上挂一个波动率仪表盘,实时显示当前波动率处于历史分布的哪个百分位。超过90%分位时,自动降低下单量或者切换成被动挂单模式。
4.4 知识体系总览
下面这张图,是我自己整理波动率分析框架时画的。你可以把它当成一个检查清单:
这张图把咱们刚才讲的三块内容串起来了。波动率指标是输入,波动率聚类是特征识别,影响机制是传导路径,最终落到滑点控制策略上。
注意:不要单独看某一个指标。比如ATR很低,但相对波动率突然飙升,这往往是暴风雨前的宁静。我吃过这个亏,现在看到这种信号,第一反应是减仓。
好了,波动率这块就聊到这儿。记住一句话:波动率是滑点的放大器,控制好波动率,你就控制住了滑点的大头。
公众号:蓝海资料掘金营,微信deep3321