2. 金融数据基础

在金融数据校验的实战中,第一步不是写规则,而是看清“被校验的对象”。金融数据并非单一形态,它横跨交易流水、行情快照、客户档案、风控指标、监管报送等多个领域,来源分散、格式各异、更新频率差异巨大。只有先建立对数据类型、来源、格式和质量维度的系统认知,后续的完整性、准确性、一致性校验才有明确的靶点。

一、金融数据的四种常见类型

从业务语义出发,金融数据通常可分为四类,它们的校验重点各不相同:

  • 交易类数据:订单、成交、支付、清算记录,强调金额、时间、账户、方向的一致性,任何字段错位都可能引发资金差错。
  • 行情类数据:买卖盘、最新价、成交量、涨跌幅,具有高频、时序、易缺失的特点,校验重点是时间戳连续性与价格合理性。
  • 参考类数据:证券代码、汇率、利率、客户主数据,变化慢但影响面广,校验重点是唯一性、有效区间和映射关系。
  • 指标类数据:风险敞口、净值、收益率、监管指标,多为聚合计算结果,校验重点是口径一致与可回溯。

二、数据来源与常见格式

金融数据的来源决定了它的“先天质量”。常见来源包括核心交易系统、行情网关、第三方数据商、人工录入表单、监管报送接口以及日志与埋点。不同来源对应不同格式:

格式 典型场景 校验关注点
CSV 批量对账、报表导出 分隔符、编码、空值、列顺序
JSON API 返回、行情推送 字段缺失、类型漂移、嵌套层级
XML 监管报送、老系统交互 标签闭合、命名空间、Schema 约束
数据库表 核心系统落库 主键唯一、外键关联、约束与默认值

以 JSON 行情为例,一条典型的推送数据如下:

{
  "symbol": "600519.SH",
  "timestamp": "2024-06-11T09:30:00.123+08:00",
  "last": 1680.50,
  "volume": 12000,
  "bid": 1680.40,
  "ask": 1680.60
}

校验时需关注:timestamp 是否单调递增、last 是否落在当日涨跌停区间、bid 是否小于等于 ask、volume 是否为非负整数。这些判断直接对应后文的质量维度。

三、数据质量维度:校验规则的“坐标系”

金融数据质量通常从六个维度衡量,它们也是校验规则设计的分类框架:

  1. 完整性:必填字段是否缺失,记录条数是否与上游一致。
  2. 准确性:数值是否在合理范围,金额精度是否符合币种要求。
  3. 一致性:同一实体在不同系统中的编码、名称、余额是否一致。
  4. 及时性:数据到达时间是否满足业务时效,时间戳是否滞后。
  5. 唯一性:主键、业务键是否重复,是否存在一码多物。
  6. 有效性:枚举值、日期格式、正则模式是否符合约定。
建议将每个质量维度映射为可执行的校验规则模板,例如“完整性 → 非空检查”“准确性 → 区间检查”“一致性 → 跨表比对”,这样规则库可以按维度分类管理,便于复用和审计。

四、案例与常见误区

某基金公司曾出现净值报送偏差:CSV 导出时金额字段被 Excel 自动转为科学计数法,导致 1234567.89 变成 1.23E+06。表面看是格式问题,实质是准确性维度失守。复盘发现,校验规则只检查了“字段非空”,没有检查“数值可解析且精度符合两位小数”。

常见误区有三:一是把格式正确等同于数据正确,忽略业务语义;二是只校验单表,不做跨源一致性比对;三是规则写死在脚本里,缺乏维度分类和版本管理,导致问题重复发生。

正确的做法是:先按来源和格式建立数据画像,再按质量维度设计规则,最后用样本数据回归验证。下图展示了从数据源到质量维度的映射关系,帮助你在实战中快速定位校验切入点。

金融数据来源 → 格式 → 质量维度映射 数据来源 核心交易系统 行情网关 第三方数据商 人工录入表单 监管报送接口 常见格式 CSV JSON XML 数据库表 日志/埋点 质量维度与校验切入点 完整性 · 非空/条数 准确性 · 区间/精度 一致性 · 跨源比对 及时性 · 时间戳 唯一性 · 主键去重 有效性 · 枚举/正则 校验规则模板库 按维度分类 · 可复用 · 可审计 · 可回归

掌握这张映射关系后,你在面对任何一批金融数据时,都可以先问三个问题:它来自哪里?以什么格式承载?需要从哪些质量维度切入校验?这三个问题的答案,就是后续完整性、准确性、一致性校验实战的起点。