2. 盘口回放数据基础

做成交方向一致性检查,第一步不是写判断逻辑,而是把回放数据“看懂、对齐、洗干净”。盘口回放通常由三类数据拼成:逐笔成交记录每一笔撮合成交的价格、数量与成交方向标记;委托队列记录买卖盘各档位的挂单价格与数量,以及逐笔委托的增删变化;快照则是在固定时间间隔上对盘口状态的一次切片。三者时间粒度不同、字段含义不同,若不对齐就直接比对,很容易把“数据错位”误判成“方向异常”。

三类数据的结构与字段含义

逐笔成交是方向检查的主证据。典型字段包括:成交时间(精确到毫秒或微秒)、证券代码、成交价、成交量、成交编号、买卖方向标记(常见为 B/S 或 1/2,也有以主动方为口径的标记)。这里必须先明确一个约定:本课程统一采用“主动方口径”——成交方向指主动吃单的一方,标记为 B 表示买方主动成交(外盘),S 表示卖方主动成交(内盘)。若数据源采用“被动方口径”或“逐笔委托撮合口径”,必须先转换,否则后续一致性判断全部反向。

委托队列关注的是“挂单侧”。字段通常有:档位序号(买一、卖一……)、委托价格、委托数量、委托笔数,以及逐笔委托流中的委托编号、方向、价格、数量、委托类型(限价/市价)和到达时间。委托队列的价值在于还原成交发生前后的挂单环境:一笔大额主动买单成交前,卖一档位是否确实存在足够挂单?成交后卖一数量是否相应减少?这些是判断方向标记是否可信的重要旁证。

快照数据是“状态切片”,字段包括快照时间戳、最新价、买卖各档价格与数量、累计成交量、累计成交额、成交笔数等。快照的优点是结构规整、易于对齐;缺点是间隔固定(常见 3 秒或 500 毫秒),会丢失间隔内的细节。因此快照适合做宏观校验和状态锚点,不适合单独承担逐笔级方向判断。

盘口回放三类数据的对齐与清洗链路 逐笔成交 时间 / 代码 / 价 / 量 成交编号 / 方向标记 口径:主动方 B/S 委托队列 档位 / 价格 / 数量 委托编号 / 方向 / 类型 到达时间(逐笔) 快照 快照时间戳(固定间隔) 买卖各档价 / 量 累计量 / 额 / 笔数 时间对齐:统一到同一时间基准 ① 统一时区与精度(毫秒/微秒) ② 逐笔成交按成交时间归入快照区间 ③ 委托流按到达时间排序,剔除乱序 ④ 快照作为区间锚点,不参与逐笔排序 清洗:剔除不可信记录 重复成交编号去重 价格/数量为 0 或负值剔除 集合竞价与停牌区间标记隔离 方向标记缺失或非法值单独列出待核 对齐后的回放数据集 供成交方向一致性检查使用

时间对齐:先统一基准,再谈比对

三类数据最常出问题的地方是时间。逐笔成交的时间是“成交发生时刻”,委托流是“委托到达时刻”,快照是“切片时刻”,三者语义不同。对齐时建议按以下顺序处理:

  1. 统一时区与精度。把全部时间戳转换为同一时区,并统一到毫秒(若源数据为微秒则保留微秒,但三类数据必须一致)。常见错误是成交用本地时间、快照用 UTC,导致整体偏移数小时。
  2. 确定区间锚点。以快照时间戳为区间边界,把逐笔成交按成交时间归入对应区间,例如快照 10:00:00 与 10:00:03 之间的成交全部归入该区间。这样每笔成交都能找到“前后两个盘口状态”。
  3. 处理乱序与重复。逐笔数据可能因采集原因出现时间倒序,需按时间稳定排序;同一成交编号重复出现时只保留一条。
  4. 不跨区间强行匹配。若某笔成交时间恰好落在快照边界,按“左闭右开”规则归属,避免同一笔被两个区间重复统计。

举个教学示例(以下为合理假设的示例数据,非实测):某标的快照间隔 3 秒,10:00:00 快照卖一价 10.02、卖一量 5000 手;10:00:03 快照卖一价 10.03、卖一量 3200 手。区间内逐笔成交共 6 笔,其中 4 笔标记为 B、成交价 10.02,合计 1800 手;2 笔标记为 S、成交价 10.02,合计 300 手。若卖一量从 5000 降至 3200,减少 1800 手,恰好等于 B 方向成交量,说明买方主动吃掉了卖一挂单,方向标记与队列变化相互印证。若减少量与 B 方向成交量明显不符,就应进入下一步排查,而不是直接判定方向错误。

清洗规则与判断依据

清洗不是“删得越多越好”,而是“删得有理、留得可查”。建议至少落实以下规则,并对每条被剔除记录保留原因码:

检查项处理方式判断依据
成交编号重复保留首条,其余标记重复同一编号不应出现两次
价格或数量 ≤ 0剔除并记录撮合成交不可能出现非正价格/数量
方向标记缺失/非法单独列出,不参与统计无法确定主动方,不能强行归类
集合竞价区间标记隔离,不纳入连续竞价检查竞价阶段撮合规则不同,方向含义不可比
停牌/无快照区间整段隔离缺少盘口锚点,无法做一致性比对
对齐与清洗完成后,建议输出一份“数据质量摘要”:总成交笔数、有效笔数、剔除笔数及原因分布、快照覆盖区间数、方向标记缺失数。这份摘要既是回放可信度的凭证,也是后续方向一致性结论的解释基础。

为方向检查准备的最小数据集

经过对齐与清洗,最终应得到一张以成交为主键的宽表:每行一笔成交,包含成交时间、成交价、成交量、方向标记,以及其所属快照区间的买一/卖一价量、成交前后的队列变化量。有了这张表,成交方向一致性检查才有稳定的输入——后续无论是比对方向标记与价格变动方向,还是比对方向标记与队列消耗方向,都能在同一时间基准上展开,避免把数据问题误读成盘口异常。