4. 市场微观结构与流动性
很多策略在回测中表现优异,一旦资金规模放大就迅速衰减,根源往往不在因子本身,而在市场微观结构。订单簿的深度、做市商的报价行为、交易所的撮合机制,共同决定了“你的订单能不能成交、以什么价格成交、成交后市场会怎样反应”。理解这三者,才能把策略容量从抽象概念落到可测算的约束上。
一、核心原理:订单簿是流动性的“实时账本”
限价订单簿(LOB)按价格档位记录买卖双方的挂单量。最优买价(Bid)与最优卖价(Ask)之间的差额是买卖价差,价差越小、各档挂单越厚,市场流动性越好。真正决定策略容量的是订单簿深度:在不大幅推动价格的前提下,你能吃掉多少量。
衡量流动性的常用维度包括:
- 紧度:买卖价差,反映即时交易成本。
- 深度:各档位挂单量,反映可承接的订单规模。
- 弹性:大额成交后价格恢复的速度,反映市场自我修复能力。
- 冲击成本:订单消耗多档流动性导致的价格偏移。
做市商通过双边报价赚取价差,同时承担库存风险。当波动上升或信息不对称加剧时,做市商会扩大价差、撤减挂单,流动性瞬间收缩。这意味着策略容量不是常数,而是随市场状态动态变化的。
二、方法流程:从微观结构到容量测算
把微观结构转化为容量约束,可按以下流程推进:
- 采集订单簿快照:记录各档价格与挂单量,频率至少覆盖策略调仓周期。
- 估计冲击成本模型:常用平方根模型,冲击成本与下单量占日均成交量的比例相关。
- 设定参与率上限:单笔订单不超过当前档位或周期成交量的某一比例。
- 反推容量:在可接受的冲击成本下,计算策略可承载的最大资金规模。
- 动态监控:随波动率、价差、深度变化实时调整下单节奏。
平方根冲击模型的简化形式如下,可用于快速估算:
impact = sigma * sqrt(Q / ADV)
# sigma: 日波动率
# Q: 下单量
# ADV: 日均成交量
# 当 Q/ADV = 1% 时,冲击约为 0.1 * sigma
三、案例/场景:做市商撤单引发的容量骤降
假设某中频策略在正常市况下,标的日均成交额 5 亿元,买卖价差 2 个基点,订单簿前五档深度充足。策略单日调仓 20%,测算容量约 3 亿元。
某日市场突发消息,波动率翻倍。做市商迅速扩大价差至 8 个基点,并撤走大量挂单,前五档深度下降 60%。此时若仍按原节奏下单:
| 指标 | 正常市况 | 冲击市况 | 变化 |
|---|---|---|---|
| 买卖价差 | 2 bp | 8 bp | 扩大 4 倍 |
| 前五档深度 | 充足 | 下降 60% | 显著收缩 |
| 单笔冲击成本 | 0.05% | 0.22% | 上升 4.4 倍 |
| 可承载容量 | 3 亿元 | 约 0.7 亿元 | 下降 77% |
结论很直接:容量随流动性状态剧烈波动。若策略没有动态降速机制,冲击市况下会迅速吃掉利润甚至造成亏损。
四、误区与复盘
误区一:用日均成交量代替订单簿深度。日均成交量是历史结果,订单簿深度是实时状态。两者在极端行情下可能背离数倍。
误区二:忽视交易机制差异。连续竞价、集合竞价、做市商报价驱动等机制对流动性的影响完全不同。例如集合竞价阶段流动性集中但不可持续,做市商市场则依赖报价义务。
误区三:容量按静态值设定。容量应是区间和条件函数,需按波动率、价差、深度分档管理。
把订单簿、做市商行为和交易机制纳入策略设计,容量控制才从“拍脑袋”变成可测量、可监控、可执行的工程问题。