4. 涨停板盘口数据获取与清洗

要估计涨停板上的排队成交概率,第一步不是建模,而是把盘口数据“拿对、拿全、拿干净”。涨停板排队本质上是一个按时间优先、价格固定的队列问题:谁先挂单、挂了多少、前面有多少量、有没有撤单、成交逐笔怎么发生,这些信息决定了某笔委托最终能否成交。普通快照行情(如3秒一笔的Level-1)只能看到买一价上的总封单量,无法区分队列中每一笔委托的先后与撤单行为,因此必须依赖Level-2行情中的逐笔委托与逐笔成交数据。本节围绕数据字段、逐笔数据结构、频率对齐和异常值处理四个环节展开,为后续概率估计打好数据底座。

一、Level-2行情中与排队相关的核心字段

沪深交易所的Level-2行情通常包含快照、逐笔委托、逐笔成交三类消息。与涨停排队直接相关的字段可归纳如下(字段名以常见行情接口为例,不同数据商命名略有差异):

数据类别关键字段在排队估计中的作用
逐笔委托委托编号、委托时间、价格、数量、买卖方向、委托类型还原队列中每笔挂单的到达顺序与规模,识别撤单
逐笔成交成交编号、成交时间、价格、数量、买方委托号、卖方委托号确定队列前端的消耗速度,判断某委托是否已成交
快照买一价、买一量、卖一价、卖一量、最新价、累计成交量校验逐笔数据完整性,提供封单总量与价格状态
订单簿状态涨停价、涨跌停标志、交易阶段界定“涨停封板”区间,过滤非涨停时段数据

其中“委托类型”字段尤为关键:它区分了限价委托、市价委托以及撤单消息。很多数据源把撤单作为独立的委托类型(如类型值为“D”或“撤”),若不解析该字段,就会把撤单误当成新增挂单,导致队列长度被系统性高估。另一个易错点是委托编号与成交编号的对应关系——逐笔成交中的买方委托号可以反查是哪一笔挂单被成交,这是重建队列消耗过程的核心线索。

二、逐笔委托与成交数据的结构关系

涨停封板期间,卖一档通常为空(或仅有极少量的瞬时卖单),买一价等于涨停价,所有新进买单都排在队尾。此时队列的演化只由两类事件驱动:入队(新增买单)和出队(成交或撤单)。逐笔委托给出入队与撤单事件,逐笔成交给出出队事件,两者按时间戳合并后,才能得到队列长度的真实变化。

涨停封板期间队列演化:入队、撤单与成交 买一队列(涨停价,时间优先) 委托A 委托B 委托C … … 新委托N 队尾 逐笔委托:新增买单(入队) 逐笔委托:撤单(出队) 逐笔成交:买方委托号匹配(出队) 队列长度变化 = 新增买单量 − 撤单量 − 成交量 · 逐笔委托提供入队与撤单事件,逐笔成交提供出队事件 · 通过成交记录中的买方委托号,可反查具体哪笔挂单被成交

上图展示了封板期间队列的三种事件。实际处理时,建议以“事件流”方式合并数据:把逐笔委托和逐笔成交按交易所时间戳排序,逐条更新队列状态。需要注意,交易所时间戳精度通常为毫秒甚至更细,但不同数据源的时间戳可能存在微小时差,合并前应统一时区与精度,否则会出现“成交先于委托”的倒挂现象。

三、数据频率对齐

逐笔数据是事件驱动的,快照数据是固定频率的(常见为3秒一笔),而后续概率模型往往需要按固定时间窗口(如每秒、每5秒)统计封单量、成交速度等指标。频率对齐的核心原则是:把高频事件聚合到低频时间桶,而不是把低频数据插值成高频。具体做法是:

  1. 确定基准时间桶,例如以秒为单位,桶边界取整秒。
  2. 将逐笔委托、逐笔成交按事件时间戳落入对应时间桶,分别累计新增买单量、撤单量、成交量。
  3. 在每个桶结束时,用“上一桶末队列长度 + 本桶入队 − 本桶出队”递推得到桶末队列长度。
  4. 用同一时刻的快照买一量做交叉校验,若偏差超过阈值(例如5%),标记该桶为可疑并回溯检查。

这里有一个常见陷阱:快照的“买一量”是某一瞬间的队列总量,而逐笔聚合得到的是区间累计值,两者时间点并不严格重合。因此校验时应允许一个桶的容差,或改用“快照买一量序列的差分”与“逐笔净变化”对比,而不是直接比较绝对值。此外,集合竞价阶段与连续竞价阶段的委托处理规则不同,封板通常发生在连续竞价阶段,对齐时应先按交易阶段切分数据,避免把开盘集合竞价的虚拟撮合数据混入。

四、异常值识别与处理

逐笔数据在实际获取中常出现以下几类异常,处理方式应区别对待:

异常类型典型表现处理建议
重复推送同一委托编号或成交编号出现多次按编号去重,保留首条
时间倒挂成交时间早于对应委托时间检查时间戳精度与时区,无法修复则剔除该配对
数量异常单笔数量为0、为负或远超该股正常单笔规模结合涨跌停价与流通股本设定合理上限,超限标记
撤单误判撤单被当作新增挂单解析委托类型字段,撤单量从队列中扣减
数据缺口某时间段逐笔消息缺失,快照买一量突变用前后快照差分估算缺口量,标记为低置信区间

异常值处理不应简单删除了事,因为涨停排队数据本身具有“尾部事件”特征——大额撤单往往正是判断封板稳固程度的关键信号。建议采用“标记 + 分级”策略:对每一条异常记录打上类型标签和置信度,在后续概率估计中按置信度加权,而不是直接丢弃。例如,对于数量异常但委托编号连续的记录,可保留其时间与方向信息,仅对数量做截尾处理(如用该股当日单笔成交量的95分位数替代)。

实操建议:在数据清洗脚本中维护一张“数据质量日志表”,记录每个交易日的去重条数、时间倒挂条数、缺口区间与校验偏差率。当某日偏差率超过设定阈值时,该日的排队概率估计结果应标注为“数据质量受限”,避免把脏数据带来的偏差误读为市场行为变化。

完成上述四步后,得到的是按时间桶对齐、带质量标记的队列状态序列:每个桶包含新增买单量、撤单量、成交量、桶末队列长度及置信度。这份序列就是后续估计“某笔委托在给定时间内成交概率”的直接输入。数据字段选得准、逐笔事件合得对、频率对齐不引入虚假精度、异常值处理保留信息而非粗暴删除,四者共同决定了概率估计结果是否可信。