4. 数据质量与校验维度

在多源行情交叉校验的实战中,我们面对的不是单一数据源,而是交易所直连、第三方数据商、行情中转网关、内部缓存等多条链路同时供给的报价、成交、盘口与衍生指标。若没有一套清晰的数据质量维度与校验指标体系,交叉校验就会退化为“凭感觉比对”,既无法定位差异根因,也无法量化修复效果。本节把数据质量拆解为五个可度量、可告警、可修复的维度,并给出可直接落地的校验指标与阈值设计方法。

一、核心原理:五个质量维度构成校验坐标系

数据质量不是单一属性,而是一组正交维度的组合。在行情场景中,我们通常关注以下五个维度:

  • 完整性(Completeness):应到的数据是否都到了。包括字段级完整(如买一价、卖一量非空)与记录级完整(如某合约当日应有 4800 条快照,实际收到多少)。
  • 准确性(Accuracy):数据是否真实反映市场状态。例如最新价是否落在当日涨跌停区间内、成交量是否单调不减、买卖价差是否为负。
  • 一致性(Consistency):多源之间、字段之间、时间序列前后是否自洽。例如 A 源最新价与 B 源最新价在容忍窗口内是否吻合,买一价是否小于卖一价。
  • 及时性(Timeliness):数据到达与事件发生之间的延迟是否可接受。行情场景常用“源时间戳与本地接收时间之差”衡量,P99 延迟是关键指标。
  • 唯一性(Uniqueness):同一业务主键是否被重复写入。例如同一合约同一时间戳的快照被重复推送或重复消费。
核心思想:五个维度不是并列的检查项,而是构成一个“校验坐标系”。任何一条行情记录都可以用(完整性得分、准确性得分、一致性得分、及时性得分、唯一性得分)来刻画,差异修复就是在这个坐标系中定位偏移并回拉。

二、校验指标体系与阈值设计

每个维度都需要可计算的指标,并配套阈值、告警级别与修复动作。下表给出可直接用于生产环境的指标体系示例:

维度 校验指标 计算方式 阈值示例 告警级别
完整性 字段空值率 空值字段数 / 总字段数 > 0.5% 警告
完整性 快照到达率 实际条数 / 理论条数 < 99.5% 严重
准确性 价格越界率 越界记录数 / 总记录数 > 0.1% 严重
准确性 成交量回退次数 相邻快照成交量递减次数 > 0 警告
一致性 多源价差超限率 |A价 - B价| > 阈值的比例 > 0.3% 严重
一致性 盘口倒挂率 买一价 ≥ 卖一价的记录占比 > 0 严重
及时性 端到端延迟 P99 接收时间 - 源时间戳的 99 分位 > 500ms 警告
唯一性 主键重复率 重复主键数 / 总记录数 > 0.01% 警告

阈值设计要遵循“分层告警”原则:轻微偏移触发警告并记录,严重偏移触发阻断并进入修复流程。阈值不是拍脑袋定的,应基于历史数据的 P95/P99 分布反推,并随市场波动率动态调整。

三、方法流程:从采集到修复的闭环

校验不是一次性动作,而是一个持续运行的闭环。典型流程如下:

  1. 采集与标准化:将多源行情统一为内部规范格式,保留源标识、源时间戳、接收时间戳。
  2. 维度打分:对每条记录计算五个维度的得分,写入质量标签。
  3. 聚合与告警:按合约、按源、按时间窗口聚合指标,超过阈值触发告警。
  4. 差异定位:结合交叉校验结果,判断差异来自哪个源、哪个字段、哪个时间段。
  5. 修复与回写:采用源优先级、多数投票、插值补全等策略修复,并记录修复日志。
  6. 复盘与调参:定期复盘误报与漏报,调整阈值与修复策略。
# 质量校验伪代码示例
for record in stream:
    score = {
        "completeness": check_null(record),
        "accuracy": check_price_range(record),
        "consistency": cross_source_diff(record),
        "timeliness": now() - record.src_ts,
        "uniqueness": dedup_check(record.key)
    }
    if score["consistency"] > THRESHOLD:
        alert("多源价差超限", record.symbol, record.src)
        repair(record, strategy="priority_source")

四、案例与误区复盘

案例:某合约买一价缺失导致的连锁差异。某日开盘后,A 源某合约买一价字段为空,但卖一价正常。交叉校验发现 A 源与 B 源价差瞬间放大到 3%。若只看“价差”指标,会误判为 B 源异常。实际根因是 A 源字段级完整性缺失。修复策略:先做完整性校验,再进入一致性比对,避免维度混淆。

常见误区一:把一致性差异直接等同于准确性错误。多源不一致可能只是延迟不同步,先对齐时间窗口再比对。
常见误区二:唯一性校验只做主键去重,忽略“同一主键不同内容”的冲突。应同时校验主键重复与内容冲突,后者往往更危险。

另一个高频误区是“阈值一刀切”。不同合约流动性差异巨大,主力合约与冷门合约的合理价差、延迟分布完全不同。正确做法是按合约分层设置阈值,或使用动态基线。复盘时应重点关注:告警是否可行动、修复是否引入新偏差、指标是否随市场状态漂移。

数据质量五维校验坐标系与修复闭环 完整性 准确性 一致性 及时性 唯一性 ① 采集与标准化 ② 五维打分与标签 ③ 聚合告警与差异定位 ④ 修复回写与日志 ⑤ 复盘调参与阈值优化 持续闭环