3. 样本数据采集与清洗规范

尾盘封板与早盘封板的对比研究,成败首先取决于样本数据的质量。如果涨停时间记录成"14:57"却无法区分是首次触及还是最终封死,如果封单量取的是收盘瞬间的快照而忽略了盘中撤单,那么后续无论用多精细的统计方法,得到的结论都可能是伪相关。本节围绕涨停时间、封单量、开板次数、成交量这四个核心字段,说明采集口径、字段定义与清洗规则,并给出可执行的异常判定与缺失处理方案。

一、字段口径必须先定义再采集

同一只股票在同一天,不同数据源给出的"封单量"可能相差数倍,原因往往不是数据错误,而是口径不同:有的取收盘时买一价位的挂单量,有的取全天封单峰值,有的取封板期间的平均值。因此在采集之前,必须为每个字段写下明确的定义,并保证全样本一致。

涨停时间建议拆成两个字段:first_limit_time(当日首次触及涨停价的时刻,精确到分钟)与final_seal_time(最后一次封死并保持到收盘的时刻)。只有后者才能支撑"尾盘封板"与"早盘封板"的划分。若一只股票全天多次触板,final_seal_time应取最后一次回封时间,而非首次触板时间。

封单量建议同时保留seal_volume_close(收盘时封单量,单位:手)与seal_amount_close(对应封单金额,单位:元),并额外记录seal_volume_max(封板期间封单峰值)。仅用封单量绝对值会受股价高低影响,跨样本比较时应转换为封单金额或封单量占流通股本比例。

开板次数定义为封板后涨停价被打开、随后又回封的次数,不含首次触板前的反复。这个定义必须在采集表中注明,否则不同人统计出的次数会不一致。

成交量需要区分全日成交量与封板后成交量。尾盘封板样本的封板时间短,封板后成交量占比低;早盘封板样本封板时间长,封板后成交量更能反映抛压。建议采集volume_total与volume_after_seal两个字段。

二、采集流程与字段落表

实际采集通常分三步:先按交易日拉取全市场涨停名单,得到股票代码与涨停价;再逐只回补分钟级行情,定位首次触板与最终封板时刻;最后从盘口快照或逐笔委托中提取封单量与开板次数。分钟级数据是定位涨停时间的基础,逐笔数据则用于校验封单量的真实性。若只有日线数据,涨停时间字段只能标记为缺失,不可用开盘价接近涨停来臆测。

涨停样本字段采集与清洗链路 数据源 涨停名单 / 分钟行情 逐笔委托 / 盘口快照 字段提取 首次触板 / 最终封板时刻 封单量·封单金额·开板次数 一致性校验 时间先后 / 单位统一 封单≤流通股本 清洗入库 缺失标记 / 异常剔除 样本表 核心字段与采集口径 first_limit_time:首次触及涨停价时刻(分钟级)  final_seal_time:最后一次封死至收盘时刻 seal_volume_close:收盘封单量(手)  seal_amount_close:收盘封单金额(元)  seal_volume_max:封单峰值 open_count:封板后打开再回封次数  volume_total:全日成交量  volume_after_seal:封板后成交量 异常值判定(示例阈值) · final_seal_time 早于 first_limit_time → 逻辑矛盾,剔除 · 封单金额 > 流通市值 → 单位或口径错误,回查 · 开板次数为负或与分钟行情不符 → 以逐笔为准 · 成交量突增 10 倍以上 → 核对复权与停牌 缺失值处理策略 · 涨停时间缺失 → 标记 unknown,不参与时间分组 · 封单量缺失 → 用封单金额÷涨停价回算,注明来源 · 开板次数缺失 → 按分钟行情重算,无法重算则剔除 · 缺失比例 > 20% 的字段 → 该批次样本不纳入分析

三、异常值的识别与处理

异常值分为两类:逻辑矛盾和数值离群。逻辑矛盾最容易发现也最致命,例如final_seal_time早于first_limit_time,说明数据源把不同交易日的记录拼接错了;又如封单金额超过流通市值,几乎必然是单位错误(把"万元"当"元")或复权处理不当。这类记录应当直接剔除并记录剔除原因,而不是"修正"后保留。

数值离群则需要结合业务判断。以封单量为例,可以计算封单金额占流通市值的比例,若某样本该比例超过 30%,先回查原始盘口,确认是否为集合竞价阶段的虚假挂单或数据重复累加。成交量字段要特别注意复权问题:若样本跨越除权日,未复权的成交量会出现跳变,应统一使用后复权或前复权口径,并在样本表中记录复权方式。

开板次数的异常往往来自分钟行情粒度不足。若某股票在 1 分钟内打开又回封,分钟线可能只显示一根涨停 K 线,导致开板次数被低估。此时应以逐笔成交或盘口快照为准,若无法获取,则将该字段标记为"低置信度",在分析时单独说明。

四、缺失值的处理原则

缺失值不能简单用均值填充,因为涨停样本的缺失往往不是随机的。例如尾盘封板的股票,封板时间短,封板后成交量可能为 0 而非缺失,这两者必须区分:0 是真实值,缺失是未采集到。建议在样本表中增加volume_after_seal_flag字段,用 0/1 标记该值是真实零还是缺失。

对于涨停时间缺失的样本,不要用收盘时间代替,而应标记为unknown,在分组统计时单列一类或直接排除。对于封单量缺失,若封单金额完整,可用"封单金额 ÷ 涨停价"回算封单量,并在备注中注明"回算值"。对于缺失比例过高的字段,应评估该批次数据源是否可靠,必要时更换数据源重新采集,而不是勉强补齐。

五、可执行的样本表结构示例

下面给出一个可直接落地的样本表字段设计,采集时按此结构建表,后续分析可直接引用字段名,避免口径混乱。

trade_date        交易日
code              股票代码
first_limit_time  首次触板时刻(HH:MM,缺失填 unknown)
final_seal_time   最终封板时刻(HH:MM,缺失填 unknown)
seal_volume_close 收盘封单量(手)
seal_amount_close 收盘封单金额(元)
seal_volume_max   封单峰值(手)
open_count        开板次数(整数,低置信度加备注)
volume_total      全日成交量(手,注明复权方式)
volume_after_seal 封板后成交量(手,0 与缺失分开标记)
data_source       数据源标识
quality_flag      质量标记:ok / recalc / low_conf / drop
remark            剔除或修正原因

其中quality_flag是清洗环节的核心控制字段。建议约定:ok表示原始数据完整可信;recalc表示经过回算但逻辑自洽;low_conf表示字段置信度低但保留;drop表示已剔除。分析阶段可以按该字段筛选,例如只使用ok与recalc样本做基准统计,再用low_conf样本做稳健性检验,观察结论是否发生方向性变化。

清洗日志与样本表同等重要。每剔除一条记录,都应写明剔除字段、原始值、判定规则和操作人。当样本量较大时,建议保留原始数据副本,清洗只在副本上进行,确保任何一步都可回溯。

完成上述采集与清洗后,样本才具备可比性。尾盘封板与早盘封板的差异分析,本质上是在同一口径下比较两组样本的封单强度、开板频率与成交量结构,任何一处口径不一致,都会让对比失去意义。因此在进入统计分析之前,务必先完成字段定义、异常判定与缺失标记这三项基础工作。