4. 挂单与撤单时序数据的采集与清洗

要识别疑似虚假挂单,第一步不是写判断规则,而是把“谁在什么时刻挂了多少、又在什么时刻撤掉了多少”还原成一条可信的事件序列。逐笔委托与逐笔成交是两类不同粒度的原始数据:逐笔委托记录报单的进入与撤销,逐笔成交记录实际撮合结果。虚假挂单的核心特征往往体现在“挂得快、撤得也快、成交极少”,因此本节的重点是把这两类数据对齐成统一的订单生命周期视图,并在此过程中完成时间戳校准、异常过滤与脱敏处理。

一、从两类原始数据中提取挂单与撤单事件

逐笔委托数据通常包含证券代码、委托编号、委托方向、委托价格、委托数量、委托时间、委托类型等字段;逐笔成交数据包含成交编号、买方/卖方委托编号、成交价格、成交数量、成交时间。提取挂单事件时,以委托类型为“新增/限价申报”的记录作为挂单起点,以委托类型为“撤销”的记录作为撤单终点,两者通过委托编号关联。需要注意,部分市场的撤单记录只带原委托编号而不重复价格数量,此时必须回查该编号对应的原始挂单记录来补齐字段。

成交数据的作用是给每笔挂单打上“已成交数量”标签。将成交记录按买方委托编号和卖方委托编号分别展开,与挂单表做左连接,累加同一委托编号的成交数量,即可得到每笔委托的剩余可撤数量。一个常见的教学示例参数如下:某委托挂单 5000 股,先后成交 200 股、300 股,则累计成交 500 股,撤单时理论可撤 4500 股。若撤单记录数量与“挂单量减累计成交量”偏差超过阈值(例如 1 手),应标记为待核查记录,而不是直接丢弃。

二、时间戳对齐:统一到同一时间基准

逐笔委托与逐笔成交的时间戳来源不同,精度可能是毫秒、微秒甚至交易所序号,直接按字符串比较会产生错位。清洗时应先确认时间字段的时区与精度,统一转换为同一精度的整数时间戳(如毫秒),再按“委托编号 + 时间”建立关联。对于只有交易所序号而无绝对时间的场景,可用序号单调递增的特性做顺序对齐,但必须在数据说明中标注该口径,避免与绝对时间混用。

对齐后还要处理同一毫秒内的多笔事件。建议采用稳定排序:先按时间戳升序,同一时间戳内按“挂单先于撤单、撤单先于成交回填”的业务顺序排列,保证订单生命周期不会出现“先撤后挂”的逻辑矛盾。下图展示了从两类原始表到统一事件流的处理链路与关键校验点。

挂单/撤单事件采集与清洗链路 逐笔委托表 委托编号 · 方向 · 价格 · 数量 委托时间 · 委托类型(新增/撤销) 逐笔成交表 成交编号 · 买卖委托编号 成交价格 · 成交数量 · 成交时间 挂单事件提取 新增申报 → 挂单起点 撤销申报 → 撤单终点 成交量回填 按买卖委托编号展开 累加同一委托成交数量 时间戳对齐 统一时区与精度(毫秒) 同刻稳定排序:挂→撤→成交回填 一致性校验点 撤单量 ≈ 挂单量 − 累计成交量(±1手) 禁止出现“先撤后挂”的生命周期倒序 异常值过滤 负数量 · 零价格 · 重复编号 超范围时间戳 → 隔离待核 数据脱敏 账户/席位标识哈希化 保留行为特征,去除身份信息 统一订单生命周期事件流 挂单 → 部分成交 → 撤单(含时间差、撤单比例)

三、异常值过滤的具体口径

过滤不是简单删行,而是分级处理。第一类是结构性异常,如委托数量为负、价格为 0 或超出当日涨跌停范围、委托编号重复,这类记录无法参与生命周期计算,应移入隔离表并记录原因。第二类是逻辑性异常,如撤单时间早于挂单时间、撤单量大于挂单量、成交累计量超过挂单量,这类记录往往源于时间精度或关联错误,应先尝试用交易所序号重排,仍无法修复再隔离。第三类是统计性异常,如单笔挂单量远超该证券近期分位数,可保留但打上标记,供后续虚假挂单识别时降权或单独观察。

一个可操作的过滤顺序是:先做字段级校验(空值、类型、范围),再做关联级校验(委托编号能否在挂单表中找到),最后做业务级校验(生命周期顺序与数量守恒)。每级过滤都要输出计数,例如“原始 120 万条,字段异常 320 条,关联失败 85 条,逻辑冲突 47 条,最终可用 119.95 万条”,这样清洗过程可审计、可复现。

四、脱敏与特征保留的平衡

虚假挂单分析关注的是行为模式,而不是具体账户身份。脱敏时应将账户号、席位号等直接标识替换为加盐哈希值,保证同一账户在不同日期仍可关联,但无法反推真实身份。价格、数量、时间、方向、撤单比例等行为字段必须原样保留,否则会破坏“挂单时长”“撤单率”等核心特征。对于极小样本的证券,还需注意哈希后仍可能通过时间与数量组合间接识别,必要时应做泛化处理,例如将精确数量按档位分桶。

时间对齐与脱敏都应在生成“订单生命周期宽表”之前完成,宽表一旦产出,后续所有虚假挂单指标(挂单存活时长、撤单比例、挂撤频率)都从同一口径计算,避免不同分析各自清洗导致结论不可比。

五、可直接套用的清洗结果字段示例

完成上述步骤后,建议输出一张订单生命周期表,核心字段包括:委托编号(脱敏后)、证券代码、方向、挂单时间、挂单价格、挂单数量、累计成交数量、撤单时间、撤单数量、存活时长(毫秒)、撤单比例、数据质量标记。其中存活时长等于撤单时间减挂单时间,撤单比例等于撤单数量除以挂单数量。这两个字段正是后续识别“秒挂秒撤”“大单高撤单率”等疑似虚假挂单模式的基础输入。清洗阶段不必急于下判断,只需保证每个字段来源清晰、口径一致、异常可追溯,识别规则才有可靠的数据底座。