2. 限价订单簿结构与事件类型

要计算订单流失衡(OFI),第一步不是套公式,而是把限价订单簿(Limit Order Book,LOB)看成一台持续被事件驱动的状态机。OFI 的本质,是把盘口上发生的每一次“量变”拆解成有方向的贡献:买方力量增加记正、卖方力量增加记负。因此,理解盘口结构、订单类型以及它们如何改变买一卖一报价量,是后续所有计算的前提。

盘口结构:买一卖一报价量

限价订单簿按价格分层组织。卖盘(Ask)价格从低到高排列,买盘(Bid)价格从高到低排列,最优卖价与最优买价之间的差额即买卖价差。我们最关心的是两个“最优档”:

  • 买一(Best Bid):当前最高买价 P_b 及其挂单总量 Q_b,代表即时买方承接力量。
  • 卖一(Best Ask):当前最低卖价 P_a 及其挂单总量 Q_a,代表即时卖方供给力量。

注意 Q_b、Q_a 是“该价位所有未成交限价单的剩余量之和”,而不是某一笔订单。同一价位可能由多个交易者的订单拼成,撤单时只减少其中一部分。这一点直接决定了 OFI 的记账方式:我们跟踪的是档位总量,而非单笔订单。

为便于后续计算,先约定符号与方向:以买盘为“正方向”。买一量增加、买一价上移、卖一量减少、卖一价上移,都视为买方力量增强(OFI 为正);反之则为负。全文与图示统一采用这一约定。

三类事件及其表示方式

盘口变化由三类事件驱动,它们在数据中的典型表示如下(以逐笔委托/成交数据为例):

事件类型典型字段表示对盘口的直接作用
限价订单(新增挂单)方向 side、价格 price、数量 qty、事件类型 = 委托在指定价位增加挂单量;若价格优于当前最优档,则成为新的买一/卖一
市价订单(主动成交)方向 side、数量 qty、事件类型 = 成交(无价格或价格取对手价)立即吃掉对手方最优档,减少对手方报价量,可能推动价格穿越多个档位
撤单原委托编号、方向、价格、撤单数量减少对应价位挂单量;若撤的是最优档且量被撤空,最优价向次优档移动

实际数据中,限价单与市价单常通过“是否带价格”或“订单类型”字段区分;撤单则往往以独立消息出现,需要按委托编号回查其原始价格与方向。工程实现时,建议维护一张“委托编号 → (方向, 价格, 剩余量)”的映射表,撤单到达时据此定位档位,否则无法正确归属。

事件如何改变盘口:四种基本情形

把事件落到买一卖一上,可归纳为四种对 OFI 有明确符号贡献的情形:

  1. 买一价不变、买一量增加(新增买单挂在买一或更优价位被并入):ΔQ_b > 0,OFI 贡献为正。
  2. 买一价不变、买一量减少(买一被撤单或被动成交):ΔQ_b < 0,OFI 贡献为负。
  3. 卖一价不变、卖一量减少(卖一被撤或被主动买单吃掉):卖方供给收缩,OFI 贡献为正。
  4. 卖一价不变、卖一量增加(新增卖单挂到卖一):卖方供给扩张,OFI 贡献为负。

当最优价发生移动时,处理稍复杂:买一价上移意味着原买一被吃光或撤光,新买一成为最优,此时应把“旧买一剩余量归零 + 新买一量出现”合并计入;卖一价下移同理。关键在于始终以“买方增强为正”的统一口径记账,避免价升量减时符号混乱。

判断技巧:先看价格是否变化,再看量在谁那边增减。价格向有利于买方的方向移动(买一上移、卖一下移),本身就是一个强正信号;价格不变时,才纯粹比较量的增减。

一个可手算的示例

假设某时刻盘口为:买一 10.00 × 500,卖一 10.02 × 300。随后依次发生:

事件1:新增买单 10.00 × 200   → 买一量 500 → 700
事件2:市价卖单 150 成交于 10.00 → 买一量 700 → 550
事件3:撤单 卖一 10.02 × 100   → 卖一量 300 → 200
事件4:新增卖单 10.01 × 400    → 卖一价 10.02 → 10.01,卖一量变为 400

按统一口径逐笔判读:事件1 买一量增,正贡献;事件2 买一量减,负贡献;事件3 卖一量减,正贡献;事件4 卖一价下移且新量出现,属卖方增强,负贡献。可以看到,同样是“量增加”,发生在买盘还是卖盘,符号完全相反——这正是 OFI 需要严格区分方向的原因。

限价订单簿事件对买一卖一的影响与 OFI 符号 盘口快照(初始) 卖一 Ask 10.02 × 300 买一 Bid 10.00 × 500 价差 = 0.02 Q_b = 500,Q_a = 300 方向约定 买方增强 → OFI 为正 卖方增强 → OFI 为负 事件序列 ① 新增买单 10.00×200 买一量 500→700 ② 市价卖单 150 成交 买一量 700→550 ③ 撤单 卖一 10.02×100 卖一量 300→200 ④ 新增卖单 10.01×400 卖一价 10.02→10.01 OFI 贡献 + 正 买盘量增 − 负 买盘量减 + 正 卖盘量减 − 负 卖盘增强/价下移

工程实现要点

在真实系统中,事件往往以高频消息流到达,且存在同一时刻多笔事件、部分成交、订单修改(改价改量)等复杂情况。为保证 OFI 可复现,建议遵循三条原则:

  • 以快照对齐:用盘口快照确定基准 (P_b, Q_b, P_a, Q_a),再按时间戳顺序回放事件,逐笔更新并累计 OFI。
  • 先价后量:每笔事件先判断最优价是否变化,再计算量的增减,避免价变时把旧档剩余量误算进新档。
  • 符号自检:对每笔贡献做一次“买方是否增强”的语义复核,若符号与直觉相反,多半是方向字段或买卖盘映射写反了。

把盘口结构、事件类型与符号约定三者对齐之后,OFI 就从一条抽象公式变成了可逐笔追踪、可手算验证的盘口记账过程。下一层的计算,只是把这些逐笔贡献按时间窗口累加而已。