4. 订单簿快照与逐笔数据解析
在9点20分之后的竞价阶段,订单簿的变化速度会明显加快,而交易所或行情商提供的原始数据通常分成两类:一类是订单簿快照,按固定时间间隔(例如每3秒)拍下当前买卖盘口的“照片”;另一类是逐笔委托与逐笔成交,记录每一笔报单、撤单和撮合的明细。要分析竞价订单变化,必须先把这两类数据读懂、洗干净、对齐到同一时间轴上,否则后续的撤单率、委托增量、盘口失衡等指标都会失真。
一、订单簿快照的结构
快照数据本质上是某一时刻的盘口切片,常见字段包括:时间戳、最新价、成交量、成交额,以及买一至买十、卖一至卖十的价格与数量。以常见的十档快照为例,一条记录可以抽象为:
时间戳 最新价 买一价 买一量 买二价 买二量 ... 卖一价 卖一量 ...
09:20:03 10.52 10.51 3200 10.50 5800 ... 10.52 2100 ...
快照的关键特征是离散、等间隔、只保留盘口状态。它看不到“谁在什么时候下了单”,只能看到“此刻盘口长什么样”。因此快照适合刻画盘口形态、买卖压力对比和价格重心,但不适合直接还原单笔委托行为。另外要注意,快照中的“买一量”是该价位所有未成交委托的汇总,不是某一笔订单,这一点在后续与逐笔数据核对时非常关键。
二、逐笔委托与逐笔成交的结构
逐笔数据是“流水账”,每一条对应一次事件。逐笔委托通常包含:时间戳、委托编号、方向(买/卖)、价格、数量、委托类型(限价/市价/本方最优等)。逐笔成交则包含:时间戳、成交编号、买委托号、卖委托号、成交价、成交量。二者通过委托编号关联,可以还原“某笔委托下了多少、成交了多少、撤了多少”。
逐笔数据的核心价值在于可追溯:能识别大单挂出、快速撤单、对倒撮合等行为。但它也有两个坑:一是时间戳精度可能只到秒或毫秒,同一时间戳内存在多条事件,顺序需要靠委托编号或成交编号辅助判断;二是部分行情源的逐笔委托只包含“新增委托”,撤单以独立事件或成交回报形式出现,需要按规则合并。
三、数据清洗:先修“脏”,再谈分析
原始数据到手后,第一步不是急着算指标,而是清洗。常见问题与处理方式如下:
- 时间戳格式不统一:快照可能是“HH:MM:SS”,逐笔可能是毫秒时间戳。统一转换为“当日毫秒数”,并明确时区与是否含日期。
- 重复记录:行情重传会导致同一委托编号出现多次,按委托编号+时间戳去重,保留首次出现。
- 缺失与异常值:价格为0、数量为负、买一价大于卖一价(交叉盘口)的记录要标记并剔除,不能直接参与统计。
- 撤单识别:若逐笔委托中没有显式撤单类型,可用“原委托数量 − 已成交量”与后续盘口变化交叉验证,或依据行情商文档中的撤单标志位处理。
- 集合竞价特殊规则:9:20后不可撤单(沪深规则不同,需按标的与板块确认),清洗时应把该时段内出现的“撤单”事件视为异常并单独核查,避免误判为真实撤单行为。
四、对齐方法:把两条时间轴拧成一条
快照与逐笔的对齐,核心是区间聚合:把相邻两个快照之间的所有逐笔事件归入同一区间,用这些事件解释盘口从S1到S2的变化。具体做法是:
- 以快照时间戳为分界点,构造区间 [S1, S2)、[S2, S3)……左闭右开,避免边界事件重复计入。
- 将逐笔委托、撤单、成交按时间戳落入对应区间。
- 对每个区间统计:新增买量、新增卖量、撤买量、撤卖量、成交量,并与快照盘口差值核对。
- 核对公式(以买一为例):S2买一量 ≈ S1买一量 + 区间内该价位新增买量 − 该价位成交量 − 该价位撤买量。若偏差超过阈值(如5%),说明存在未捕获事件或数据源口径差异,需回查。
举个教学示例(数据为合理假设):S1时刻买一价10.51、买一量3200;区间内出现一笔买委托10.51×800,无成交、无撤单;则S2买一量应为4000。若实际S2显示3900,差额100就需要排查是否有部分成交未被逐笔成交记录覆盖,或快照本身存在延迟。这个核对过程,就是把“看起来对”变成“验证过对”的关键一步。
五、对齐后的可用字段
完成清洗与对齐后,每条快照区间可以派生出一组分析字段,例如:区间新增委托笔数与数量、撤单笔数与撤单率、主动买卖成交量、盘口失衡度(买一量−卖一量)/(买一量+卖一量)。这些字段才是9点20分后竞价订单变化分析的直接输入。建议把对齐结果整理成一张区间明细表,字段包括:区间起止时间、新增买量、新增卖量、撤买量、撤卖量、成交量、快照买一量变化、核对偏差。偏差列是数据质量的“体检指标”,长期偏大的区间应回溯数据源。
总结来说,快照回答“盘口变成了什么样”,逐笔回答“是谁、在什么时候、做了什么”,对齐则是把两者用时间区间缝合起来,并用盘口差值做交叉验证。掌握这套结构解析与清洗对齐方法,后续的撤单行为识别、委托增量分析和竞价异动判断才有可靠的数据基础。