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 有明确符号贡献的情形:
- 买一价不变、买一量增加(新增买单挂在买一或更优价位被并入):
ΔQ_b > 0,OFI 贡献为正。 - 买一价不变、买一量减少(买一被撤单或被动成交):
ΔQ_b < 0,OFI 贡献为负。 - 卖一价不变、卖一量减少(卖一被撤或被主动买单吃掉):卖方供给收缩,OFI 贡献为正。
- 卖一价不变、卖一量增加(新增卖单挂到卖一):卖方供给扩张,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 可复现,建议遵循三条原则:
- 以快照对齐:用盘口快照确定基准
(P_b, Q_b, P_a, Q_a),再按时间戳顺序回放事件,逐笔更新并累计 OFI。 - 先价后量:每笔事件先判断最优价是否变化,再计算量的增减,避免价变时把旧档剩余量误算进新档。
- 符号自检:对每笔贡献做一次“买方是否增强”的语义复核,若符号与直觉相反,多半是方向字段或买卖盘映射写反了。
把盘口结构、事件类型与符号约定三者对齐之后,OFI 就从一条抽象公式变成了可逐笔追踪、可手算验证的盘口记账过程。下一层的计算,只是把这些逐笔贡献按时间窗口累加而已。