2. 金融数据基础
在构建金融实时数据管道之前,必须先回答一个基础问题:我们到底在传输什么数据?金融数据并非同质对象,不同类别的数据在产生频率、结构形态、时间语义、容错要求和下游用途上差异巨大。如果把它们混在一条管道里用同一套延迟与一致性策略处理,系统要么成本失控,要么在关键场景下失效。本节从分类、特征与实时性三个维度建立数据认知框架,为后续的采集、传输、存储与计算设计提供依据。
一、四类金融数据的核心原理与边界
金融数据通常划分为行情数据、交易数据、基本面数据和另类数据。它们的本质区别在于“数据由谁产生、描述什么对象、以什么节奏变化”。
- 行情数据(Market Data):描述市场报价与成交状态,包括逐笔委托、逐笔成交、快照行情(Level-1/Level-2)、K线等。它由交易所或行情源持续推送,是典型的流式时间序列,实时性要求最高。
- 交易数据(Transaction/Trade Data):描述账户维度的委托、成交、资金与持仓变动,来自券商柜台、OMS/EMS 或支付清算系统。它强调准确性与可对账性,属于事务型数据,往往要求“不重不漏”。
- 基本面数据(Fundamental Data):描述公司财务、股本、分红、宏观指标等,来源于财报、公告与统计机构。它更新频率低但结构复杂,强调版本管理与历史回溯。
- 另类数据(Alternative Data):包括新闻舆情、卫星影像、信用卡消费、App 活跃、供应链物流等。它形态多样、噪声高,价值在于提供领先信号,实时性跨度极大。
核心判断:一条数据属于哪一类,不取决于它的文件格式,而取决于它的时间语义(事件时间还是处理时间)、一致性要求(可否重复、可否丢失)和消费模式(推送订阅还是批量查询)。
二、四类数据的特征与实时性要求对比
下表从产生频率、典型延迟目标、一致性语义和主要挑战四个角度对四类数据进行横向对比,这是设计管道分级策略的直接依据。
| 数据类别 | 典型频率 | 延迟目标 | 一致性语义 | 主要挑战 |
|---|---|---|---|---|
| 行情数据 | 微秒~毫秒级推送 | 毫秒~秒级 | 至少一次,允许少量乱序 | 峰值吞吐、乱序、快照重建 |
| 交易数据 | 事件驱动,低频但突发 | 秒级~分钟级 | 精确一次,强对账 | 幂等、去重、资金一致性 |
| 基本面数据 | 日/季/年,批量 | 小时~天级 | 版本化,可回溯 | 结构变更、历史修订 |
| 另类数据 | 不定,从实时到月度 | 分钟~天级 | 尽力而为,需清洗 | 噪声、实体对齐、合规 |
可以看到,实时性要求并不是“越快越好”,而是与业务价值匹配。行情追求低延迟,交易追求准确,基本面追求可追溯,另类数据追求覆盖与信号质量。
三、方法流程:从数据分类到管道分级
在实际项目中,建议按以下流程把数据分类转化为工程策略:
- 打标签:为每个数据源标注类别、事件时间字段、延迟目标与一致性语义。
- 分级通道:行情走低延迟流通道,交易走事务型可靠通道,基本面走批量版本通道,另类数据走清洗后入湖通道。
- 定义时间语义:明确使用事件时间还是处理时间,并设置水位线容忍乱序。
- 设定校验规则:行情校验价格跳变与成交量,交易校验借贷平衡,基本面校验版本号,另类数据校验实体映射。
- 监控与复盘:对每类数据分别监控延迟、丢失率与对账差异。
# 数据源分级配置示例(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,某股票出现一笔大额成交。此时:行情系统在毫秒内推送逐笔成交与快照更新;交易系统在数秒后记录该账户的成交回报并更新持仓;基本面系统不会立即变化,但当晚可能更新公告;另类数据系统可能在数分钟后抓取到相关新闻并生成情绪分数。四类数据在同一时间轴上以完全不同的节奏和可靠性要求流动,这正是实时管道必须分级处理的根本原因。
五、常见误区与复盘
误区一:用同一套延迟指标考核所有数据。对基本面数据要求毫秒级延迟既无必要也推高成本;对行情数据放宽到分钟级则直接失去交易价值。
误区二:忽视事件时间与处理时间的差异。行情与另类数据常出现乱序,若直接按到达时间计算,会导致窗口统计错误。
复盘建议:为每类数据建立“分类—延迟—一致性—校验”四要素卡片,并在管道上线后按类别分别监控。当出现数据质量问题时,先确认它属于哪一类,再套用对应的容错策略,而不是全局调参。
掌握四类数据的分类与实时性差异,是后续设计采集层、消息层与计算层的前提。只有先明确“数据是什么、要求是什么”,才能让实时数据管道在成本、延迟与准确性之间取得合理平衡。