2. 金融数据基础

在金融数据工程与实时计算中,第一步不是写代码,而是建立“数据地图”:市场上到底有哪些数据、它们长什么样、从哪里来、更新频率如何、质量风险在哪里。只有把数据类型与特征梳理清楚,后续的采集、清洗、存储、计算与建模才有稳定的输入基础。本节围绕行情数据、交易数据、基本面数据与另类数据展开,并给出可落地的分类框架与工程判断方法。

一、核心原理:按“产生机制”而非“文件格式”分类

很多初学者按 CSV、JSON、二进制等格式区分数据,这在工程上会很快失效,因为同一类数据可以有多种格式。更稳健的分类维度是产生机制与语义:数据是由市场撮合产生的、由公司披露产生的,还是由外部行为间接推断产生的。据此可划分为四类:

  • 行情数据(Market Data):描述市场价格与买卖意愿,如快照、盘口、K线、逐笔委托。
  • 交易数据(Trade Data):描述实际成交与账户行为,如逐笔成交、委托回报、账户流水。
  • 基本面数据(Fundamental Data):描述公司财务与经营状况,如财报、股本、分红、估值指标。
  • 另类数据(Alternative Data):非传统来源、需加工才能用于投资判断的数据,如卫星图像、舆情、App活跃度、供应链物流。
工程判断口诀:先问“谁产生、何时产生、是否可回放”,再问“字段、频率、延迟、历史深度”。这四问决定了采集架构与存储选型。

二、四类数据的特征与来源对照

下表从更新频率、典型延迟、历史深度、主要来源与工程难点五个维度进行对照,便于在架构设计时快速定位。

数据类型 更新频率 典型延迟 历史深度 主要来源 工程难点
行情数据 毫秒~秒级 微秒~秒级 数年~十余年 交易所、行情商 高吞吐、乱序、快照重建
交易数据 事件驱动 微秒~毫秒 依合规要求 交易所、券商柜台 精确一次、对账、隐私
基本面数据 季度/年度 小时~天 数十年 公告、财报、数据商 口径变更、时点对齐
另类数据 不定 小时~天 通常较短 第三方、网络采集 合规、噪声、实体映射

三、方法流程:从原始事件到可用数据

以行情与交易数据为例,典型处理链路如下:

  1. 接入:通过交易所行情网关或券商API订阅,获得原始报文。
  2. 解析:按协议解码为结构化事件,如逐笔委托、逐笔成交、快照。
  3. 时间对齐:统一为交易所时间戳,处理乱序与重复。
  4. 状态重建:用委托簿重建盘口,生成K线或指标。
  5. 落库:热数据入时序库,冷数据入对象存储,元数据入目录。
# 示例:逐笔成交事件字段(简化)
{
  "symbol": "600519.SH",
  "ts_exchange": "2024-06-03T09:30:00.123456",
  "price": 1680.50,
  "qty": 200,
  "side": "BUY",
  "trade_id": "T2024060300001",
  "seq": 10231
}
# 工程要点:seq 用于去重与排序,ts_exchange 用于回放

四、案例/场景:同一时刻的多源数据融合

假设某量化策略在开盘后需要判断某只股票的短期动量。它同时消费三类数据:行情快照给出最新价与盘口;逐笔成交给出主动买卖方向;基本面数据提供昨日收盘后的估值分位。三者时间尺度不同,必须通过事件时间对齐,而不是处理时间。若用处理时间,网络抖动会导致“未来数据”混入,回测与实盘结果严重偏离。

实时计算中,建议为每条数据保留两个时间戳:事件时间(交易所/公告时间)与摄入时间(系统接收时间)。窗口计算以事件时间为准,摄入时间用于监控延迟。

五、误区与复盘

  • 误区一:把行情当交易。 行情是报价与意愿,交易是实际成交。用盘口挂单量推断成交量会引入虚假信号。
  • 误区二:忽视基本面数据的“时点”。 财报有公告日与报告期,回测必须用公告日,否则产生前视偏差。
  • 误区三:另类数据直接入模。 另类数据通常需要实体映射、去噪、标准化后才能与行情对齐,否则噪声远大于信号。
  • 复盘建议: 建立数据字典,记录每类数据的来源、频率、延迟、字段含义与质量规则,并定期做对账与抽样校验。
金融数据四类来源与流向 交易所 / 行情商 行情数据 券商柜台 / 交易所 交易数据 公告 / 财报 / 数据商 基本面数据 第三方 / 网络采集 另类数据 实时计算平台 事件时间对齐 状态重建 / 窗口聚合 质量校验 / 落库 数据分类决定采集、存储与计算策略,事件时间是融合的关键基准
合规提醒:交易数据与另类数据常涉及隐私、授权与交易所协议。采集前必须确认数据许可范围,避免将受限数据用于未授权场景。