2. 金融数据基础

在构建金融实时数据管道之前,必须先回答一个基础问题:我们到底在传输什么数据?金融数据并非同质对象,不同类别的数据在产生频率、结构形态、时间语义、容错要求和下游用途上差异巨大。如果把它们混在一条管道里用同一套延迟与一致性策略处理,系统要么成本失控,要么在关键场景下失效。本节从分类、特征与实时性三个维度建立数据认知框架,为后续的采集、传输、存储与计算设计提供依据。

一、四类金融数据的核心原理与边界

金融数据通常划分为行情数据、交易数据、基本面数据和另类数据。它们的本质区别在于“数据由谁产生、描述什么对象、以什么节奏变化”。

  • 行情数据(Market Data):描述市场报价与成交状态,包括逐笔委托、逐笔成交、快照行情(Level-1/Level-2)、K线等。它由交易所或行情源持续推送,是典型的流式时间序列,实时性要求最高。
  • 交易数据(Transaction/Trade Data):描述账户维度的委托、成交、资金与持仓变动,来自券商柜台、OMS/EMS 或支付清算系统。它强调准确性与可对账性,属于事务型数据,往往要求“不重不漏”。
  • 基本面数据(Fundamental Data):描述公司财务、股本、分红、宏观指标等,来源于财报、公告与统计机构。它更新频率低但结构复杂,强调版本管理与历史回溯。
  • 另类数据(Alternative Data):包括新闻舆情、卫星影像、信用卡消费、App 活跃、供应链物流等。它形态多样、噪声高,价值在于提供领先信号,实时性跨度极大。
核心判断:一条数据属于哪一类,不取决于它的文件格式,而取决于它的时间语义(事件时间还是处理时间)、一致性要求(可否重复、可否丢失)和消费模式(推送订阅还是批量查询)。

二、四类数据的特征与实时性要求对比

下表从产生频率、典型延迟目标、一致性语义和主要挑战四个角度对四类数据进行横向对比,这是设计管道分级策略的直接依据。

数据类别 典型频率 延迟目标 一致性语义 主要挑战
行情数据 微秒~毫秒级推送 毫秒~秒级 至少一次,允许少量乱序 峰值吞吐、乱序、快照重建
交易数据 事件驱动,低频但突发 秒级~分钟级 精确一次,强对账 幂等、去重、资金一致性
基本面数据 日/季/年,批量 小时~天级 版本化,可回溯 结构变更、历史修订
另类数据 不定,从实时到月度 分钟~天级 尽力而为,需清洗 噪声、实体对齐、合规

可以看到,实时性要求并不是“越快越好”,而是与业务价值匹配。行情追求低延迟,交易追求准确,基本面追求可追溯,另类数据追求覆盖与信号质量。

三、方法流程:从数据分类到管道分级

在实际项目中,建议按以下流程把数据分类转化为工程策略:

  1. 打标签:为每个数据源标注类别、事件时间字段、延迟目标与一致性语义。
  2. 分级通道:行情走低延迟流通道,交易走事务型可靠通道,基本面走批量版本通道,另类数据走清洗后入湖通道。
  3. 定义时间语义:明确使用事件时间还是处理时间,并设置水位线容忍乱序。
  4. 设定校验规则:行情校验价格跳变与成交量,交易校验借贷平衡,基本面校验版本号,另类数据校验实体映射。
  5. 监控与复盘:对每类数据分别监控延迟、丢失率与对账差异。
# 数据源分级配置示例(YAML 片段)
sources:
  - name: market_l2
    category: market_data
    event_time_field: exchange_ts
    latency_sla_ms: 500
    delivery: at_least_once
  - name: broker_trade
    category: transaction
    event_time_field: trade_ts
    latency_sla_ms: 5000
    delivery: exactly_once
    idempotent_key: order_id
  - name: financial_report
    category: fundamental
    event_time_field: report_period
    latency_sla_ms: 86400000
    delivery: versioned
  - name: news_feed
    category: alternative
    event_time_field: publish_ts
    latency_sla_ms: 60000
    delivery: best_effort

四、案例场景:同一时刻的四类数据流

假设上午 09:30:00.120,某股票出现一笔大额成交。此时:行情系统在毫秒内推送逐笔成交与快照更新;交易系统在数秒后记录该账户的成交回报并更新持仓;基本面系统不会立即变化,但当晚可能更新公告;另类数据系统可能在数分钟后抓取到相关新闻并生成情绪分数。四类数据在同一时间轴上以完全不同的节奏和可靠性要求流动,这正是实时管道必须分级处理的根本原因。

四类金融数据的时间轴与实时性分布 毫秒 秒 分钟 天/季 行情数据 交易数据 另类数据 基本面数据

五、常见误区与复盘

误区一:用同一套延迟指标考核所有数据。对基本面数据要求毫秒级延迟既无必要也推高成本;对行情数据放宽到分钟级则直接失去交易价值。
误区二:忽视事件时间与处理时间的差异。行情与另类数据常出现乱序,若直接按到达时间计算,会导致窗口统计错误。
复盘建议:为每类数据建立“分类—延迟—一致性—校验”四要素卡片,并在管道上线后按类别分别监控。当出现数据质量问题时,先确认它属于哪一类,再套用对应的容错策略,而不是全局调参。

掌握四类数据的分类与实时性差异,是后续设计采集层、消息层与计算层的前提。只有先明确“数据是什么、要求是什么”,才能让实时数据管道在成本、延迟与准确性之间取得合理平衡。