4. 市场微观结构与流动性

很多策略在回测中表现优异,一旦资金规模放大就迅速衰减,根源往往不在因子本身,而在市场微观结构。订单簿的深度、做市商的报价行为、交易所的撮合机制,共同决定了“你的订单能不能成交、以什么价格成交、成交后市场会怎样反应”。理解这三者,才能把策略容量从抽象概念落到可测算的约束上。

一、核心原理:订单簿是流动性的“实时账本”

限价订单簿(LOB)按价格档位记录买卖双方的挂单量。最优买价(Bid)与最优卖价(Ask)之间的差额是买卖价差,价差越小、各档挂单越厚,市场流动性越好。真正决定策略容量的是订单簿深度:在不大幅推动价格的前提下,你能吃掉多少量。

衡量流动性的常用维度包括:

  • 紧度:买卖价差,反映即时交易成本。
  • 深度:各档位挂单量,反映可承接的订单规模。
  • 弹性:大额成交后价格恢复的速度,反映市场自我修复能力。
  • 冲击成本:订单消耗多档流动性导致的价格偏移。

做市商通过双边报价赚取价差,同时承担库存风险。当波动上升或信息不对称加剧时,做市商会扩大价差、撤减挂单,流动性瞬间收缩。这意味着策略容量不是常数,而是随市场状态动态变化的。

订单簿深度与冲击成本关系示意 累计成交量 价格 卖盘 Ask 买盘 Bid 中间价 Mid 大额买单冲击点 价格上移,成本上升 第一档深度

二、方法流程:从微观结构到容量测算

把微观结构转化为容量约束,可按以下流程推进:

  1. 采集订单簿快照:记录各档价格与挂单量,频率至少覆盖策略调仓周期。
  2. 估计冲击成本模型:常用平方根模型,冲击成本与下单量占日均成交量的比例相关。
  3. 设定参与率上限:单笔订单不超过当前档位或周期成交量的某一比例。
  4. 反推容量:在可接受的冲击成本下,计算策略可承载的最大资金规模。
  5. 动态监控:随波动率、价差、深度变化实时调整下单节奏。

平方根冲击模型的简化形式如下,可用于快速估算:

impact = sigma * sqrt(Q / ADV)
# sigma: 日波动率
# Q:    下单量
# ADV:  日均成交量
# 当 Q/ADV = 1% 时,冲击约为 0.1 * sigma
容量测算的核心不是“能买多少”,而是“在可接受的冲击成本下能买多少”。参与率、冲击成本上限、调仓频率三者共同决定容量天花板。

三、案例/场景:做市商撤单引发的容量骤降

假设某中频策略在正常市况下,标的日均成交额 5 亿元,买卖价差 2 个基点,订单簿前五档深度充足。策略单日调仓 20%,测算容量约 3 亿元。

某日市场突发消息,波动率翻倍。做市商迅速扩大价差至 8 个基点,并撤走大量挂单,前五档深度下降 60%。此时若仍按原节奏下单:

指标正常市况冲击市况变化
买卖价差2 bp8 bp扩大 4 倍
前五档深度充足下降 60%显著收缩
单笔冲击成本0.05%0.22%上升 4.4 倍
可承载容量3 亿元约 0.7 亿元下降 77%

结论很直接:容量随流动性状态剧烈波动。若策略没有动态降速机制,冲击市况下会迅速吃掉利润甚至造成亏损。

实战中可设置“流动性熔断”:当价差超过阈值或深度低于阈值时,自动降低参与率或暂停调仓,把容量控制嵌入执行层。

四、误区与复盘

误区一:用日均成交量代替订单簿深度。日均成交量是历史结果,订单簿深度是实时状态。两者在极端行情下可能背离数倍。

误区二:忽视交易机制差异。连续竞价、集合竞价、做市商报价驱动等机制对流动性的影响完全不同。例如集合竞价阶段流动性集中但不可持续,做市商市场则依赖报价义务。

误区三:容量按静态值设定。容量应是区间和条件函数,需按波动率、价差、深度分档管理。

复盘要点:每次策略衰减,先检查是因子失效还是流动性约束。若冲击成本占收益比例持续上升,说明已接近或超过容量上限,应优先降规模而非调因子。

把订单簿、做市商行为和交易机制纳入策略设计,容量控制才从“拍脑袋”变成可测量、可监控、可执行的工程问题。