金融研究中的数据来源谱系:为什么未被版本追踪的数据会毁掉你的策略

深入拆解量化交易中的数据来源谱系(Data Provenance)。看懂供应商静默重述、除权复权漂移与时间截面丢失如何导致回测结论失真。

MyTrade Academy Editorial Team
6 分钟阅读

设想这样一个场景:你翻出半年前写好的一个量化选股策略,代码一行没改,原封不动地重新点击‘运行’,结果策略的年化收益率却从 22% 骤降到了 11%。

这怎么可能?既然代码一模一样,为什么结果会发生腰斩?答案往往只有一个:底层的历史数据被悄悄改动了

在金融市场中,历史数据从来不是刻在石头上的静态化石。数据供应商会不断追溯修正历史错单、更正上市公司事后补发的财报重述、甚至在后台修改前复权的基准日。没有数据来源谱系(Data Provenance)——即缺乏对数据来源、抓取时戳、清洗规则与修改版本的严密记录——你的策略回测就如同建在随时移动的流沙之上。

TL;DR

数据来源谱系(Data Provenance)是指完整记录一份金融数据集从原始采集源头、下载时戳、清洗处理算法到入库全过程的溯源档案。在量化回测中,财报重述、高送转除权除息以及退市股票剔除都会在事后被供应商不断追溯修正。建立严密的数据谱系,核心目的是确保你的回测程序严格只使用历史上当时当地投资者实际能获取的客观数据(Point-in-Time 静态截面),彻底阻断利用未被追踪的 CSV 文件引入‘事后诸葛亮’的未来函数。

未追踪数据版本导致的四类经典回测失真场景
数据静默变异类型供应商在后台偷偷发生了什么?对策略回测产生的致命误导
财报追溯更正重述某上市公司在 2024 年被证监会责令重述 2021 年虚增的净利润回测程序在 2021 年的时间点提前使用了 2024 年才揭晓的修正数据,产生未来函数
前复权基准日自然漂移公司发生新的分红送配,导致全历史的前复权价格整体向下平移历史均线与技术指标点位全部发生位移,原本的买卖信号凭空消失或变形
幸存者静默清洗数据接口在最新版本中悄悄移除了已经退市或暂停上市的劣质个股策略只在活到今天的赢家股票池里回测,产生严重美化的虚假超额收益
行情切片时区微调供应商将每日收盘价统计时点从 15:00 调整为包含盘后大宗或集合竞价回测撮合使用了实盘当时盘中根本无法按该价格成交的理想点位
量化研究必须坚守的数据卫生习惯
  • 原始数据严禁直接覆写:从 Wind、Tushare 或交易所抓取的数据,必须存入只读归档目录,文件名严格标注日期(如 `raw_a_share_daily_20260901.csv`)。
  • 财报数据必须双日期对齐:每一条财务数据必须同时具备‘报告期截止日’(如 12 月 31 日)与‘实际首次披露日’(如次年 4 月 25 日),回测只能在披露日后触发信号。
  • 重要基准文件计算哈希校验码:为核心清洗后的数据集生成 MD5 或 SHA-256 哈希值,记录在研究日志中,确保后续测试数据未被误改动。
  • 所有清洗转换全代码化执行:严禁在 Excel 电子表格里手动删除坏点或修改空值;所有清洗规则必须写成可重复执行的 Python 脚本。

常见疑问解答

如果第三方数据源本身就包含错误,数据谱系能帮上什么忙?

数据谱系无法阻止源头出错,但能确保‘错误是可定位、可复现、可修复的’。一旦发现某段行情有假,你可以迅速根据日志追溯出到底影响了哪几个策略模块,并有针对性地重新隔离清洗,而不是面对全盘失真的代码束手无策。

什么是 Point-in-Time(时间切片)数据?为什么它如此昂贵?

Point-in-Time 数据保存了历史上每一个具体日历日当时全市场公开信息的完整切片。机构级数据商需要维护庞大的版本数据库以记录每次财报修正的历史轨迹,因此售价远高于普通的静态历史行情。

个人量化爱好者没有昂贵机构数据,该怎么做低成本溯源?

建议使用开源脚本定期将原始 API 返回的 JSON/CSV 打包备份并附加版本元数据(记录调用时间与 API 参数)。回测时只读这些本地版本快照,不再每次临时连线拉取可能已被变动的远端数据。

掌握量化研究的可审计规范

严谨的数据溯源、假设记录与局限性披露,是量化策略走向实盘的必经之路。欢迎在第 45 课中系统学习。

进入第 45 课:可审计研究工作流