2. 订单流冲击信号的数据构成
要验证“订单流冲击信号”是否真的具有预测力,第一步不是写策略,而是把数据底座搭对。订单流冲击信号本质上刻画的是“主动成交对价格的瞬时推动”以及“盘口承接力量的消耗”,它同时依赖三类数据:逐笔成交(Trade/Tick)、委托队列(Order Queue,即逐笔委托或订单明细)、订单簿快照(Order Book Snapshot)。三者字段含义不同、更新频率不同、时间语义也不同,任何一处理解偏差都会让后续的信号计算失真。本节围绕“字段—对齐—质检”三条主线展开。
一、三类数据的字段含义
逐笔成交记录的是“已经发生的撮合结果”,核心字段包括:成交时间(含毫秒/微秒精度)、证券代码、成交价、成交量、成交方向(主动买/主动卖,或由买卖盘口推断的 aggressor side)、成交编号。方向字段是冲击信号的关键——只有区分主动买与主动卖,才能构造净主动成交量、大单冲击等指标。若数据源不直接给出方向,需要用成交价与当时买一/卖一价比较来推断:成交价≥卖一价视为主动买,成交价≤买一价视为主动卖,介于两者之间则需结合逐笔委托的订单号匹配。
委托队列记录的是“尚未成交的意图”,核心字段包括:委托时间、委托编号、方向(买/卖)、委托价格、委托数量、订单类型(限价/市价/本方最优等)、以及可能的撤单标识。委托编号是连接成交与委托的桥梁:通过成交记录中的买方委托号与卖方委托号,可以还原每一笔成交由哪些订单撮合而成,从而计算单笔订单的冲击成本、订单存活时间、撤单率等微观结构指标。
订单簿快照记录的是“某一时刻的盘口状态”,通常按固定频率(如每 3 秒、每 500 毫秒)或事件触发采样,核心字段包括:快照时间、买一至买十(或更多档)的价格与数量、卖一至卖十的价格与数量。快照用于计算盘口深度、买卖压力比、价差、以及冲击发生前后的流动性变化。需要注意,快照是“离散采样”,两次快照之间的盘口变化会被漏掉,因此它不能替代逐笔数据,只能作为状态背景。
二、时间戳对齐:比字段更隐蔽的坑
三类数据往往来自不同通道:逐笔成交与委托队列通常来自 Level-2 逐笔流,订单簿快照可能来自独立的快照服务。它们的“时间”至少有三种语义:交易所撮合时间、行情网关发送时间、本地接收时间。做冲击信号验证时,应以交易所撮合时间为基准,同时保留本地接收时间用于估计延迟。若只拿到本地时间,需先用已知的行情延迟分布做校正,否则会把“网络抖动”误判为“冲击衰减”。
对齐时还要处理同一时间戳内的多事件排序。例如某微秒内同时出现一笔委托到达和一笔成交,业务因果上应先有委托再有成交(或成交由更早的委托触发)。稳妥的做法是引入事件序号(交易所通常提供逐笔序号),按序号而非仅按时间排序。对于快照与逐笔的融合,正确做法是:以快照为锚点,用两次快照之间的逐笔成交和逐笔委托“重放”盘口变化,得到每个成交时刻的真实盘口,而不是对快照价格做线性插值——插值会抹平冲击的瞬时性,直接削弱信号。
三、数据质量检查要点
在计算任何冲击指标之前,建议先跑一遍质检,重点检查以下几类问题:
- 完整性:逐笔序号是否连续、有无跳号;快照时间间隔是否稳定,缺失快照需标记而非直接前向填充。
- 一致性:成交价是否落在当日涨跌停范围内;成交量是否为正;买卖盘口是否满足“买一价 < 卖一价”(若出现交叉,说明快照或逐笔有误)。
- 方向合理性:主动买成交量与主动卖成交量之和应等于总成交量;若方向字段缺失比例过高,需评估推断逻辑的覆盖率。
- 委托—成交可匹配性:抽样检查成交记录中的委托号能否在委托队列中找到对应记录,匹配率过低说明两路数据不同源或存在截断。
- 异常值:单笔成交量远超该标的正常分布(如超过过去 20 日 99.9 分位)时,需确认是否为大宗交易或数据错误,避免污染冲击指标。
举个教学示例(以下为合理假设的示例参数,非实测结果):某标的某日逐笔成交 12 万笔,其中方向字段缺失 3%,用盘口推断补全后覆盖率 99.6%;委托队列 18 万条,成交记录中委托号匹配率 97.2%;快照按 3 秒采样共 4800 张,缺失 12 张。质检结论为“可用但需标记缺失快照”。在计算净主动成交量时,对缺失方向的 3% 成交按“不参与方向统计”处理,并在信号窗口内做成交量归一化,避免因缺失导致冲击强度被低估。
把字段含义吃透、把时间戳对齐做扎实、把质检做成可复用的流程,后面的冲击信号构造与历史验证才有意义。数据层的每一个小偏差,都会在信号层被放大成看似“有效”实则虚假的统计规律。