1. 课程导入与数据对象界定

逐笔盘口回放数据集,是把一个交易日内交易所发布的逐笔行情,按时间顺序重新组织成“可回放、可校验、可复现”的结构化数据集合。它和普通的日线、分钟线数据最大的区别在于:回放数据集必须让使用者能够从开盘第一笔开始,逐条重演订单簿的每一次变化,并在任意时刻还原出与当时市场一致的盘口状态。因此,理解这个数据集,首先要明确它由哪几类数据构成,以及它们在回放中各自承担什么角色。

三类核心数据对象

逐笔委托记录的是每一笔新进入撮合系统的委托指令,典型字段包括委托序号、通道号、证券代码、委托时间、委托价格、委托数量、买卖方向以及委托类型(限价、市价、本方最优等)。它是订单簿变化的“源头事件”:一笔限价买单进入,意味着买侧在对应价位上增加了一个待成交队列。

逐笔成交记录的是撮合引擎实际达成的每一笔交易,典型字段包括成交序号、成交时间、成交价格、成交数量、买卖双方委托序号以及成交类型(成交、撤单等)。它回答的是“哪些委托在什么价位、以什么顺序被消耗掉了”。在回放中,成交是订单簿减少队列的直接依据。

订单簿快照则是按固定频率(例如每 3 秒或每 500 毫秒)对当前订单簿买卖两侧若干档位做的切片记录,包含档位价格、数量以及快照时间。它不描述变化过程,而是提供一个“基准状态”,用于校准逐笔重放的结果是否正确。

可以把三者理解为:逐笔委托和逐笔成交是“增量日志”,订单簿快照是“定期存档”。回放的本质,就是用增量日志从存档点向前推演,并不断与下一个存档点比对。
逐笔盘口回放数据集:数据对象与回放关系 逐笔委托 委托序号 / 通道号 价格 / 数量 / 方向 委托类型(限价/市价) 作用:向订单簿“增加”队列 订单簿状态 卖侧队列(价格升序) 买侧队列(价格降序) 按时间优先级排队 回放的核心推演对象 状态 = 委托 − 成交 逐笔成交 成交序号 / 成交时间 成交价 / 成交量 买卖双方委托序号 作用:从订单簿“消耗”队列 增加 消耗 订单簿快照(定期存档) 每 3 秒 / 每 500 毫秒切片 买卖两侧 N 档价格与数量 作用:提供基准状态,校准回放结果 逐档比对 回放推演:从快照基准出发,按时间顺序叠加委托与成交,再与下一快照逐档比对,差异即为校验线索

回放场景下的数据完整性要求

回放数据集与“能看就行”的行情数据不同,它对完整性有硬性要求,核心可以归纳为三条。

第一,序号连续且可排序。逐笔委托和逐笔成交都带有交易所层面的序号,回放时必须保证同一证券的序号单调递增、无跳号。一旦出现跳号,说明中间有事件丢失,订单簿推演会在该点之后整体偏移。实际整理时,通常先按证券代码分组,再按序号排序,检查相邻序号差值是否恒为 1。

第二,时间戳口径统一。委托时间、成交时间、快照时间可能来自不同字段,精度也可能不同(毫秒或微秒)。回放前必须统一到同一时间基准,并明确时间戳是“交易所撮合时间”还是“行情发送时间”。若混用,会出现成交早于其对应委托的荒谬顺序。

第三,快照与逐笔可对齐。每个快照时间点,应当能由此前的逐笔事件完整推演出来。整理时要保证快照覆盖的档位数、价格精度与逐笔数据一致,否则比对时会产生大量伪差异。

常见误区:只检查文件行数是否完整,却不检查序号连续性和时间单调性。行数完整但序号跳号的数据集,回放结果同样不可信。

整理与校验的整体工作流程

整体工作可以分成四个阶段,每个阶段都有明确的输入、动作和判断依据。

阶段一:原始数据归集与格式统一。把逐笔委托、逐笔成交、快照三类原始文件按交易日和证券代码归集,统一字段命名、编码格式和价格数量精度。例如把价格统一为“元”且保留两位小数,数量统一为“股”。这一步的产出是一张字段映射表,记录原始字段到标准字段的对应关系。

阶段二:清洗与排序。剔除重复记录(同一序号出现多次),按证券代码分组后按序号升序排列,检查序号连续性与时间单调性,标记异常区间。对于跳号,不要直接删除,而应记录跳号位置和缺口大小,供后续判断是数据源缺失还是整理错误。

阶段三:回放推演与快照比对。以某个快照为起点,按时间顺序逐条应用委托和成交事件,维护买卖两侧队列;到达下一个快照时间点时,把推演出的订单簿与真实快照逐档比对价格和数量。比对一致则继续,不一致则记录差异档位、差异方向和差异量。

阶段四:差异归因与数据集定版。对差异进行分类:是序号缺失导致的、是时间戳错位导致的、还是快照档位不足导致的。归因清楚后,修正整理逻辑并重新推演,直到差异收敛到可接受范围,输出定版数据集和校验报告。

下面给出一个可直接参考的校验记录表示例,字段按本节实际需要设置:

检查项 检查对象 判断依据 异常处理
序号连续性 逐笔委托 / 逐笔成交 相邻序号差值恒为 1 记录缺口位置与大小,不直接删除
时间单调性 三类数据 同一证券时间戳不倒退 标记并核对时间口径
重复记录 逐笔委托 / 逐笔成交 同一序号仅出现一次 保留首条,记录重复条数
快照对齐 订单簿快照 推演结果与快照逐档一致 记录差异档位、方向与数量
字段精度 三类数据 价格两位小数、数量为整数股 统一转换并记录转换规则

需要强调的是,校验的目标不是“让所有差异消失”,而是“让每一个差异都有明确解释”。真实行情数据中,撤单、部分成交、市价单转限价等情形都会让推演变复杂,只要差异能被归因到具体事件类型,数据集就是可用的。反之,若差异无法解释,即使数量很少,也说明整理逻辑存在漏洞,不能定版。