2. 异常值类型与成因剖析

逐笔成交数据看起来只是“一笔一笔的成交记录”,但真正进入清洗环节后,最先要做的不是写规则,而是判断异常长什么样、从哪来。只有把异常类型和成因对应起来,后续的阈值设定、修复策略和剔除逻辑才有依据。本节围绕四类高频异常——价格异常、数量异常、时间戳异常、方向标记异常——逐一拆解其表现形态,并把成因回溯到数据采集、传输、撮合三个环节。

一、四类典型异常的表现形态

价格异常最直观的表现是成交价显著偏离同一标的在邻近时点的价格区间。常见形态包括:价格为零或负值、价格跳变到明显不合理的量级(如小数点错位、单位从元变成分)、同一毫秒内出现远超涨跌幅限制的价格。需要注意,价格异常不等于“价格波动大”,判断时要结合标的的涨跌停规则、最小价格变动单位和邻近成交的连续性。

数量异常主要表现为成交量为零、为负、为非整数(在按股/手计量的市场中不应出现小数)、或数量级异常巨大。另一类隐蔽形态是“数量与金额不匹配”:用成交价乘以成交量得到的金额,与记录中的成交金额字段偏差超过合理舍入范围。这类异常往往说明字段错位或单位不一致,而不是真实的巨额成交。

时间戳异常包括时间戳缺失、格式非法、精度不足(如只到秒,导致同一秒内多笔成交无法排序)、以及时间倒序——同一标的的相邻记录出现后一笔时间早于前一笔。还有一类是“时间戳越界”,即成交时间落在非交易时段或明显超出采集窗口。时间戳异常会直接破坏逐笔数据的顺序语义,而顺序恰恰是逐笔分析的核心价值。

方向标记异常指买卖方向字段取值不在约定集合内(如约定为 B/S 却出现空值、0、N),或方向与价格、盘口关系矛盾。例如在主动成交判定中,成交价等于卖一价通常记为主动买入,若标记为卖出则需复核。方向标记错误的危害在于它会系统性扭曲买卖压力、大单净流入等衍生指标。

异常类型 ← 成因环节 对应关系 数据采集 行情网关解析 字段映射 / 单位换算 时钟同步 数据传输 网络抖动 / 丢包 乱序与重传 序列号断档 撮合环节 成交回报字段 主动方判定规则 撤单 / 改单处理 价格异常 零值 / 负值 / 量级错位 超涨跌幅 / 单位混用 数量异常 零 / 负 / 非整数 价×量 ≠ 金额 时间戳异常 缺失 / 精度不足 倒序 / 越界 方向标记异常 非法取值 / 空值 与盘口关系矛盾 同一异常类型可能由多个环节引发,清洗规则需按成因分层设计

二、成因分析:从采集到撮合的链路回溯

数据采集环节是异常的第一来源。行情网关在解析交易所原始报文时,若字段映射表配置错误,可能把“成交金额”映射到“成交量”字段,造成数量异常;若单位换算未统一(例如某路数据以“分”为单位、另一路以“元”为单位),则表现为价格量级错位。时钟同步问题同样常见:采集服务器未与标准时间源对齐,或不同数据源使用不同时钟,会导致时间戳整体偏移或跨源对齐失败。此外,采集程序对空字段、异常字符的容错不足,会把解析失败的值写成零或默认值,形成价格、数量为零的记录。

数据传输环节的成因集中在“顺序”和“完整性”上。逐笔数据对顺序高度敏感,而网络抖动、丢包、重传会造成记录乱序或缺失。若传输协议带序列号,序列号断档就是丢包的直接证据;若不带序列号,则只能通过时间戳倒序和成交编号跳号间接识别。需要强调的是,传输乱序造成的时间戳倒序,与采集端时钟错误造成的时间戳倒序,表现相似但修复方式不同:前者应按成交编号或序列号重排,后者需要校正时钟偏移,不能简单排序了事。

撮合环节的成因更多与业务规则相关。成交回报中的方向标记,取决于交易所对“主动方”的判定口径:有的按成交价与盘口的关系判定,有的直接由订单方向推导。若清洗方套用了不适配的判定规则,就会把合规记录误判为方向异常。撤单、改单、部分成交等撮合事件若处理不当,还可能产生重复成交记录或数量不守恒(同一订单的成交数量之和超过委托数量)。这类异常不能靠阈值剔除,而要与订单流水交叉核对。

三、把类型与成因对应起来:一个判断示例

假设某路逐笔数据中出现如下记录(示例数据,仅用于说明判断逻辑):成交价 0.00、成交量 500、方向 B、时间戳与前一笔相同。单看价格,会判为价格异常并直接剔除;但结合成因分析,价格为零更可能是采集端字段解析失败写入的默认值,而成交量、方向、时间戳均正常,说明原始报文的其他字段是完整的。此时合理的处理不是整条删除,而是标记为“价格待修复”,尝试用邻近成交价或盘口中间价回填,并记录修复来源。反之,若价格、数量同时为零且时间戳缺失,则更可能是整条记录损坏,应剔除并计入缺失统计。

这个例子说明:异常类型回答“哪里不对”,成因分析回答“为什么不对、能不能修”。清洗规则若只按类型一刀切,容易把可修复的记录误删,也会把整条损坏的记录误当成单字段异常而留下脏数据。

建议在清洗流程中为每条异常记录保留“异常类型 + 疑似成因 + 处理动作”三个字段。类型用于统计分布,成因用于指导修复策略,处理动作(修复/剔除/保留待核)用于审计追溯。三者分离,后续调整规则时才有据可查。

四、成因定位的实操要点

定位成因时,先做“横向比对”:同一时间窗口内,其他标的或其他数据源是否也出现同类异常。若仅单标的异常,倾向撮合或该标的特有事件;若多标的、多源同时异常,倾向采集或传输的公共环节。再做“纵向比对”:把异常记录与原始报文、订单流水、盘口快照逐条对照,确认是字段值本身错误,还是字段间关系被破坏。

对于时间戳异常,可先计算相邻记录的时间差分布,找出负值和异常大值的聚集位置,再对照传输日志中的重传记录,判断是乱序还是时钟问题。对于方向标记异常,可抽取样本,按“成交价与当时买一/卖一的关系”重新推导主动方,与原始标记比对,统计矛盾比例;比例低说明是个别记录问题,比例高则说明判定口径整体不适配,需要更换规则而非逐条修正。

把类型识别和成因定位做扎实,后续的稳健统计才有干净、可信的输入。异常值清洗不是追求“删得干净”,而是追求“每一处处理都有依据”。