4. 流动性压力测试:订单簿冲击、滑点模型与流动性枯竭模拟
流动性压力测试,说白了就是看你的策略在“没人接盘”的时候怎么死。我见过太多策略在回测里跑得漂亮,一上线遇到流动性枯竭,直接亏穿。嗯,今天我们就来聊聊这块硬骨头。
4.1 订单簿冲击模型
订单簿是市场的真实写照。你想想看,一个限价单挂在那里,就是有人在那个价位等着交易。但你的大单子一进去,就像石头扔进池塘,会激起涟漪。
核心问题:你的订单会吃掉多少档位?
我个人习惯用这个公式估算冲击成本:
冲击成本 = Σ (第i档挂单量 × 第i档价格偏移) / 总交易量
举个例子,假设订单簿长这样:
| 档位 | 价格 | 挂单量 |
|---|---|---|
| 1 | 100.0 | 1000 |
| 2 | 100.1 | 2000 |
| 3 | 100.2 | 3000 |
你要买5000股。第一档吃掉1000股,第二档吃掉2000股,第三档吃掉2000股。冲击成本就是:
(1000×0 + 2000×0.1 + 2000×0.2) / 5000 = 0.12
每股价钱多了0.12元。这就是你的隐性成本。
关键点:订单簿越薄,冲击成本越大。我在项目中遇到过,某个小币种只有3档深度,一个大单直接拉穿5%。
4.2 滑点模型
滑点不是玄学,是数学。它由两部分组成:
- 固定滑点:买卖价差的一半。比如买一100.0,卖一100.1,固定滑点就是0.05。
- 动态滑点:你的订单对市场的冲击。这个跟订单簿深度直接相关。
我常用的滑点模型长这样:
总滑点 = 固定滑点 + 冲击成本 × 滑点系数
滑点系数是个经验值。我记得有一次做回测,发现实际滑点比模型预测高了30%。后来一查,是因为那个时间段有量化基金在抢跑。
我的建议:滑点系数至少设1.2。保守点设1.5。别问我怎么知道的,都是亏出来的教训。
4.3 流动性枯竭模拟
这是压力测试的重头戏。流动性枯竭不是慢慢发生的,它往往是瞬间的。你想想看,一个黑天鹅事件出来,所有人都在跑,订单簿瞬间被抽干。
模拟步骤:
- 设定枯竭场景:比如订单簿深度缩减90%。
- 计算极端滑点:在枯竭的订单簿上重新计算冲击成本。
- 评估策略表现:看策略在这种环境下会不会爆仓。
我曾经做过一个极端测试:把订单簿深度砍到只剩1%。结果呢?一个原本年化20%的策略,直接亏了40%。
警告:流动性枯竭时,你的止损单可能根本成交不了。别指望限价单能救命,那时候市场上全是恐慌盘。
4.4 核心逻辑流程图
下面这张图,是我自己总结的流动性压力测试全流程。你看一遍就能明白:
4.5 实战中的避坑指南
做流动性压力测试,有几个坑我踩过,你们别踩:
- 别只看平均深度:平均深度会骗人。要看极端情况下的深度。我曾经用平均深度做测试,结果实际交易时滑点大了3倍。
- 别忽略时间因素:流动性在一天内变化很大。开盘和收盘时流动性最好,中午最差。你的测试要覆盖这些时段。
- 别忘记跨市场影响:一个市场流动性枯竭,会传染到其他市场。我记得2020年3月,美股熔断,连带着加密货币市场也崩了。
核心结论:流动性压力测试不是走过场。它是你的策略在极端行情下的最后一道防线。我建议每个月至少跑一次全量测试。
嗯,今天就聊到这里。流动性这块,说白了就是“平时多流汗,战时少流血”。你把这些模型跑熟了,真遇到黑天鹅,至少心里有底。