3. 数据采集与清洗

测算涨停板上的买单增减与撤单率,第一步不是写公式,而是把“原始逐笔数据”变成“可计算的干净序列”。涨停板场景对数据的要求比普通行情更苛刻:封单量在盘中可能每秒变化数十次,撤单往往集中在毫秒级窗口,若数据源、字段口径或时间戳处理稍有偏差,撤单率就会被系统性高估或低估。本节围绕数据来源、字段含义、时间对齐、异常值处理和质量检查五个环节展开,目标是产出一份可直接进入测算的标准化逐笔数据集。

一、数据来源与采集口径

涨停板逐笔委托与成交数据通常来自三类渠道:交易所Level-2逐笔委托与逐笔成交(最权威,含委托编号、价格、数量、买卖方向、委托类型)、券商行情网关推送的逐笔快照(部分券商对逐笔委托做聚合或延迟)、以及第三方数据商的整理版逐笔库(字段齐全但存在清洗规则不透明的问题)。教学与实盘研究优先使用Level-2逐笔委托+逐笔成交双表,因为撤单识别必须依赖“委托进入—委托消失”的配对关系,仅靠成交表无法还原撤单。

采集时需明确三个口径:其一,市场范围,沪深两市逐笔委托的委托类型编码不同(如深市有“本方最优”“对手方最优”等市价委托类型),涨停板封单测算一般只统计限价委托;其二,时间范围,应覆盖集合竞价(9:15–9:25)、连续竞价(9:30–11:30、13:00–14:57)与收盘集合竞价(14:57–15:00),涨停封单在尾盘集合竞价阶段的变化同样影响撤单率;其三,证券范围,按当日涨停股清单逐只拉取,避免全市场数据量过大导致落盘延迟。

二、关键字段说明

逐笔委托表的核心字段包括:证券代码、委托时间(精确到毫秒或微秒)、委托编号(交易所内唯一,是配对撤单的主键)、委托价格、委托数量、买卖方向(B/S)、委托类型(限价/市价/本方最优等)。逐笔成交表的核心字段包括:成交时间、买方委托编号、卖方委托编号、成交价格、成交数量、成交编号。

撤单本身在多数Level-2逐笔委托表中并不以独立“撤单记录”出现,而是通过委托编号在后续快照或委托表中不再存在、且未被成交完全消耗来推断。因此字段设计上必须保留委托编号与原始委托数量,并用成交表按委托编号汇总已成交量,剩余量即“未成交可撤量”。这一点是后续撤单率测算的字段基础,采集阶段若丢失委托编号,整条链路无法修复。

涨停板逐笔数据采集与清洗链路 Level-2 逐笔委托 委托编号 / 价格 / 数量 方向 / 委托类型 / 毫秒时间 Level-2 逐笔成交 买卖委托编号 / 成交量 成交价 / 成交编号 涨停股清单 当日涨停代码 + 封板时刻 清洗与对齐 ① 时间戳统一到毫秒 ② 委托编号去重配对 ③ 集合竞价/连续竞价分段 ④ 异常值标记与剔除 ⑤ 涨停价过滤(仅封单价) 标准化逐笔数据集 每笔委托:编号 / 时间 / 价格 / 数量 已成交量 / 剩余量 / 是否撤单 所属阶段(竞价/连续/尾盘) 封单方向标记(涨停买/卖) 质量标记(正常/可疑/剔除) 数据质量检查(进入测算前必须通过) 委托编号唯一性 重复率应≈0 成交量≤委托量 越界即标记异常 时间单调性 乱序需重排 封单量连续性 跳变超阈值复核 撤单率合理区间 0%–100% 之外剔除 与快照交叉核对 封单量偏差≤1手 不合格回退重洗

三、时间对齐:把两张表放到同一根时间轴上

逐笔委托与逐笔成交来自不同通道,时间戳可能存在几十毫秒的到达差异,直接按时间戳排序会导致“成交先于委托”的假象。正确做法是以委托编号为锚点做逻辑对齐,而非以时间为锚点做物理对齐:先用成交表的买方/卖方委托编号回连委托表,确定每笔成交对应的原始委托;再以委托表的委托时间为该委托的生命起点,以最后一笔成交时间或推断撤单时间为终点,形成“委托生命周期”。

时间戳本身还需统一:部分数据源用“HHMMSSmmm”整数表示,部分用Unix毫秒,需统一转换为毫秒级整数并保留原始字段备查。集合竞价阶段的委托在9:25集中撮合,其成交时间可能统一记为9:25:00,此时不能按成交时间判断委托先后,必须以委托时间排序。对于跨午休的委托,11:30至13:00之间不应产生新委托,若出现则标记为异常并核查数据源。

四、异常值处理

涨停板数据中常见的异常有四类。第一类是重复推送:同一委托编号在委托表中出现多次,通常因行情网关重发,处理方式是按委托编号去重并保留最早时间戳。第二类是成交量越界:某委托的累计成交量大于原始委托量,说明成交表与委托表口径不一致(如成交表含撤单后重新挂单),应将该委托标记为可疑并单独复核,不可直接截断。第三类是价格越界:涨停板测算只关心封单价格等于涨停价的委托,价格高于涨停价(因四舍五入)或明显偏离的委托应剔除。第四类是时间倒挂:同一委托编号的成交时间早于委托时间,属于通道延迟,应按委托时间重排并记录延迟量。

异常值处理的原则是“标记而非静默删除”。每一笔被剔除或修正的记录都应保留原始值、处理规则和处理时间,便于后续复算与审计。撤单率对分母(封单总量)敏感,静默删除会直接改变测算结果。

五、数据质量检查与交付

清洗完成后,需通过一组可量化的检查才能进入测算。建议至少检查:委托编号重复率(应接近0)、成交量越界笔数占比(应低于0.1%)、时间倒挂笔数、封单量序列的相邻跳变幅度(超过前值50%的跳变需人工复核)、以及用逐笔数据重算的封单量与Level-2快照封单量的偏差(正常应在1手以内)。

下面给出一份可直接套用的质量检查记录表示例,字段按涨停板撤单率测算的实际需要设计:

检查项计算方式合格阈值(示例)不合格处理
委托编号重复率重复编号数 / 总委托数≤ 0.01%按最早时间戳去重
成交量越界占比累计成交>委托量的委托数 / 总委托数≤ 0.1%标记可疑,逐笔复核
时间倒挂笔数成交时间早于委托时间的记录数= 0按委托时间重排并记录延迟
封单量跳变相邻快照封单量变化 / 前值≤ 50%人工复核是否真实撤单
与快照偏差逐笔重算封单量 − 快照封单量≤ 1手检查配对逻辑与过滤条件
撤单率区间撤单量 / 封单总量0%–100%越界则回退重洗

完成上述步骤后,交付的数据集应包含每笔委托的编号、时间、价格、数量、已成交量、剩余量、是否撤单、所属交易阶段与质量标记。这份数据集是后续“买单增减”与“撤单率”测算的唯一输入,字段口径一旦确定,全文测算必须保持一致,不得在中途更换时间粒度或撤单判定规则。