3. 数据工程基础
金融数据工程并不是把数据从A搬到B那么简单。它是一条从数据源到可用资产的完整链路,任何一环出现偏差,都可能直接放大为估值错误、风控失效或合规风险。本节围绕采集、清洗、转换、存储、治理五个环节,梳理通用流程,并重点说明金融场景下必须额外满足的要求。
一、核心原理:五环链路与金融约束
通用数据工程链路可以概括为:采集 → 清洗 → 转换 → 存储 → 治理。采集负责把行情、交易、公告、财报、舆情等数据接入;清洗解决缺失、重复、异常与格式不一致;转换完成标准化、对齐、聚合与衍生计算;存储提供可查询、可回溯、可复算的持久化能力;治理则贯穿全链路,负责元数据、血缘、质量、权限与审计。
金融场景的特殊性在于:时间必须精确、数值必须可复算、过程必须可审计、口径必须可解释。例如行情数据要求毫秒甚至微秒级时间戳,财务数据要求保留原始披露口径,风控指标要求任意历史时点可重放。因此,金融数据工程不是“先跑通再治理”,而是从采集开始就要为治理预留结构。
二、方法流程:从接入到可复算资产
采集阶段要区分推送型与拉取型数据源。行情、逐笔委托多为推送,公告、财报、舆情多为拉取。采集层必须记录原始报文、接收时间、来源标识与批次号,避免后续无法还原。清洗阶段重点处理缺失值、重复记录、异常值与单位不一致。金融数据中,缺失值不能简单均值填充,尤其是价格与财务科目,必须区分“真缺失”与“停牌/未披露”。
转换阶段是金融数据工程的核心。它包含字段标准化、实体对齐、时间对齐、复权计算、指标衍生与口径映射。例如把不同数据源的股票代码统一为内部证券ID,把日频与分钟频数据对齐到同一交易日历,把财报科目映射到统一财务模型。存储阶段需要同时考虑原始层、清洗层、主题层与应用层,并保留版本与分区。治理阶段则通过元数据、血缘、质量规则、权限与审计,保证数据可发现、可信任、可追责。
关键原则:原始数据不可变,清洗与转换结果可重放。任何衍生指标都应能追溯到原始字段、计算逻辑与执行版本。
三、案例/场景:一条行情与财报融合链路
假设我们要构建一个“估值日频指标”数据集,输入包括交易所日行情与上市公司财报。采集层分别接入行情文件与财报PDF/结构化接口;清洗层剔除停牌日、修正重复除权记录、校验财报单位;转换层按交易日历对齐,计算复权价、市值、市盈率与市净率;存储层按日期分区,保留原始财报版本与计算版本;治理层登记字段口径、血缘关系与质量规则。
# 示例:质量校验规则片段(伪配置)
rules:
- name: price_non_negative
target: daily_price.close
condition: "close >= 0"
action: reject_and_alert
- name: trade_date_in_calendar
target: daily_price.trade_date
condition: "in trading_calendar"
action: quarantine
- name: financial_report_version
target: financials.report_id
condition: "version is not null"
action: block_publish
在这个场景中,若行情时间戳未统一时区,会导致跨市场对齐错误;若财报科目未保留原始口径,则市盈率计算可能混用不同准则。金融数据工程的难点往往不在技术组件,而在业务口径与时间语义。
四、误区/复盘:常见陷阱与检查清单
常见误区包括:把清洗当成“填坑”,忽视缺失语义;把转换写成一次性脚本,无法重放;把存储当成“能查就行”,缺少版本与分区;把治理留到项目后期,导致血缘断裂。复盘时应重点检查:时间戳是否统一、原始数据是否保留、计算逻辑是否版本化、质量规则是否可执行、权限与审计是否覆盖敏感数据。
| 环节 | 通用要求 | 金融场景特殊要求 | 常见误区 |
|---|---|---|---|
| 采集 | 稳定接入、记录来源 | 毫秒级时间戳、交易所日历、原始报文留存 | 只存解析后结果,丢失原始上下文 |
| 清洗 | 去重、补缺、纠错 | 区分停牌与缺失、保留披露口径 | 用均值填充价格或财务科目 |
| 转换 | 标准化、聚合、衍生 | 复权、实体对齐、指标口径可解释 | 脚本不可重放,口径散落文档 |
| 存储 | 可查询、可扩展 | 版本化、分区、历史时点可回溯 | 覆盖更新,无法复算历史 |
| 治理 | 元数据、质量、权限 | 血缘、审计、合规留痕、敏感数据分级 | 治理后置,血缘断裂 |
复盘提醒:金融数据链路的验收标准不是“跑通”,而是“任意历史时点可复算、任意指标可追溯、任意异常可定位”。若做不到这三点,后续实时计算与风控模型都会建立在不可信的数据地基上。
掌握这五个环节与金融约束后,后续的实时计算、流批一体与数据质量监控才有稳固的起点。数据工程基础打得越扎实,上层金融应用越不容易被“脏数据”反噬。