4. 金融训练数据来源与分类
在金融AI项目中,模型效果的上限往往由数据决定,而数据血缘追踪的第一步,是先把“数据从哪来、长什么样、怎么流动”讲清楚。金融训练数据并非单一来源,而是由市场数据、交易数据、另类数据与内部数据共同构成。它们的数据形态、更新频率、合规约束与血缘特征差异极大,直接决定了后续血缘图谱的建模方式。
一、核心原理:四类数据的本质差异
市场数据描述“价格与状态”,交易数据描述“行为与意图”,另类数据描述“外部信号”,内部数据描述“机构自身运营痕迹”。四者的血缘特征可归纳为三个维度:来源可控性、加工链路长度、时间敏感性。
- 市场数据:来自交易所、行情商,标准化程度高,血缘链路短,但版本与复权处理复杂。
- 交易数据:来自订单、成交、撤单,事件驱动,血缘需精确到毫秒级时间戳与订单ID。
- 另类数据:来自卫星、舆情、刷卡、招聘等,非结构化比例高,血缘链路长且供应商黑盒多。
- 内部数据:来自风控、客服、信贷、持仓,敏感度高,血缘常跨部门且存在手工干预。
血缘追踪的核心不是“记录表名”,而是记录数据在每一次转换中的语义变化。例如复权因子改变了价格语义,标签生成改变了样本语义,脱敏改变了可用性语义。
二、方法流程:从数据源到血缘标签
建议按以下五步为四类数据建立统一血缘标签体系:
- 源登记:记录供应商、接口、协议、授权范围与SLA。
- 落地建模:区分原始层、清洗层、特征层、标签层,每层保留批次号。
- 转换登记:对复权、对齐、去重、脱敏、聚合等操作登记算子与参数。
- 血缘打标:为每条记录附加 source_type、lineage_id、parent_ids、transform_code。
- 版本冻结:训练集生成时冻结数据快照,确保模型可复现。
-- 血缘标签示例(特征层)
lineage_id: LN_20240612_FEAT_001
source_type: market + transaction
parent_ids: [RAW_MKT_20240612, RAW_TXN_20240612]
transform_code: adj_close_v2 + vwap_5min
snapshot_ts: 2024-06-12T18:00:00+08:00
compliance_tag: PII_free
三、案例/场景:一条特征的血缘回溯
假设某风控模型使用“近5分钟成交量加权均价偏离度”作为特征。回溯其血缘:
- 原始层:交易所逐笔成交(交易数据)+ 行情快照(市场数据)。
- 清洗层:剔除撤单、修正错价、统一时区。
- 特征层:按5分钟窗口计算VWAP,再与最新价求偏离度。
- 标签层:结合内部逾期记录生成违约标签。
若模型上线后效果骤降,血缘图谱可快速定位是行情源切换、窗口参数变更,还是内部标签口径调整所致。
四、误区/复盘:血缘追踪常见陷阱
误区一:只记录表级血缘。金融特征常由多表拼接与窗口计算生成,表级血缘无法定位字段级错误。
误区二:忽略时间语义。行情时区、交易时间戳、标签观察窗口若未统一,会导致未来函数泄漏。
误区三:另类数据不登记供应商版本。供应商静默更新数据口径,模型效果漂移却无法归因。
复盘建议:为每类数据建立“血缘最小字段集”,并在训练集生成时强制冻结快照。市场数据重点记录复权与版本,交易数据重点记录订单ID与时间戳,另类数据重点记录供应商与采集批次,内部数据重点记录脱敏规则与授权范围。
| 数据类别 | 典型来源 | 血缘关键字段 | 主要风险 |
|---|---|---|---|
| 市场数据 | 交易所、行情商 | 复权因子、版本号、时区 | 版本不一致、复权错误 |
| 交易数据 | 订单、成交、撤单 | 订单ID、毫秒时间戳、通道 | 乱序、重复、撤单干扰 |
| 另类数据 | 卫星、舆情、刷卡 | 供应商、采集批次、置信度 | 黑盒口径变更、覆盖偏差 |
| 内部数据 | 风控、客服、持仓 | 脱敏规则、授权范围、部门 | 敏感泄露、手工干预 |
把四类数据的来源与血缘特征先厘清,后续的数据版本管理、特征回溯与模型审计才有稳固基础。血缘追踪不是额外负担,而是金融AI从“能跑”走向“可信”的必经环节。