halo 的技术博客

返回

训练一个”股市预测大模型”,最难的不是模型结构、不是算力,而是一个几乎所有人第一次都会踩、且踩了还不自知的坑:数据泄漏。它不像过拟合那样好歹还报个”训练集好、测试集差”的警,泄漏会让你的回测、验证、甚至实盘前的信心全部虚高,而且曲线漂亮得让人舍不得怀疑。

这篇文章不讲玄学,我用一个可复现的合成实验,把”时间穿越”(look-ahead bias)到底能把一个平庸策略吹成什么样,用数字摊开给你看。

泄漏信号与诚实信号的逐月 rank-IC 对比:泄漏把弱信号系统性放大 4 倍

一、什么是”时间穿越”#

金融预测的本质约束只有一条:在 t 时刻做决策,只能使用 t 时刻及之前的信息。任何违反这条的建模动作,都叫 look-ahead。它常常伪装成一些看似无害的操作:

  • 标签泄漏:用”未来收益”当特征。比如做新闻情绪因子时,用了文章的抓取时间而不是发布时间,等于把”收盘后才知道的新闻”塞进了”收盘前”的特征里。
  • 全样本标准化:对特征做 z-score 时用了整段历史(含未来)的均值方差。一只股票今天的”低估值”判断,偷偷参考了它三年后的估值分布。
  • 事后修正的数据:财务数据用”最新修订版”而不是”当时披露版”(point-in-time 数据),公司后来被 ST、被退市、财报重述,这些信息都”穿越”回去了。
  • 对齐 bug:特征和标签的 shift 方向搞反,X[t] 对上了 y[t] 而不是 y[t+1]

这些操作单看都很小,但它们的共同后果是:模型学到的不是”预测”,而是”事后诸葛”

二、一个 4 倍虚高的合成实验#

我用 200 只股票、180 个月的面板数据做了一个最小可复现实验。构造如下:

  1. 真实信号很弱——每股的横截面信号是一个 AR(1) 过程,它与下月收益的真实 rank-IC 只有 0.054,这是量化世界里”勉强能用”的强度。
  2. 泄漏信号只是在真实信号基础上,把 t+1 期的未来收益混进去 18%:s_leak[t] = s[t] + 0.18 * r[t+1]

就这么一点污染,结果如何?

  • 真实信号的逐月 rank-IC 均值 0.054 → 泄漏信号 0.219放大了 4.1 倍
  • 多空组合的 Sharpe 从 2.47 飙到 10.06,年化收益从 11.95% 涨到 45.95%
  • 最大回撤从 -3.36% 直接”消失”成 -0.15%

多空累计净值(log 轴):泄漏策略的漂亮曲线只是海市蜃楼

看清楚了吗?你几乎什么都没做,只是让特征”偷看”了一眼明天的答案,一个普通的弱信号就被吹成了”圣杯”。Sharpe 10 的量化策略,现实中凤毛麟角;但在泄漏的回测里,遍地都是。

诚实策略与泄漏策略的年化、Sharpe、最大回撤对比

三、为什么大模型场景下泄漏更隐蔽#

传统量化的泄漏,发生在特征工程和回测框架里,好歹有迹可循。而大模型预测股市,泄漏会从更多你意想不到的缝隙渗进来:

1. 预训练语料的”未来信息”。 如果你用一个已经训练好的通用大模型去读财报、新闻,模型在预训练阶段可能已经”见过”了 2024 年的股价走势。当你让它分析 2023 年的财报时,它脑子里那套”事后知识”就是天然的泄漏源——它未必是在预测,而是在”回忆”。

2. 检索增强(RAG)的时间线错乱。 给模型喂历史新闻做因子,检索库如果混入了”事件发生之后”的评论、复盘、事后归因文章,模型就能学到”用结果反推原因”的捷径。

3. 指令微调的标签污染。 用”历史行情 + 未来涨跌”构造 SFT 数据时,如果切分边界不严格(比如训练集和测试集用了重叠的时间窗),模型在微调阶段就背下了答案。

4. 评估指标的穿越。 用”预测精度”评估大模型选股时,如果标签是未来收益、而特征里藏着同期或未来信息,精度再高也是假象。

四、三条防泄漏的工程铁律#

要训练一个诚实的股市预测模型,这三条必须写进代码评审,而不是留在嘴上:

铁律一:严格的时间切分。 特征只能用 t 及之前的信息,标签只用 t+1 之后的信息。做 SFT/回测/验证时,用**滚动前向(walk-forward)**切分,训练窗和测试窗之间留出”禁地”(embargo),绝不随机打乱时间顺序。

铁律二:只用 point-in-time 数据。 财务数据要”当时披露版”,新闻要”发布时间”,指数成分要”当时成分”,退市股要保留到退市当天(含退市冲击),而不是直接删掉。

铁律三:泄漏审计自动化。 写一个检查脚本,把每个特征和未来收益算一遍”穿越相关性”;一旦某个特征的 IC 好得离谱,先怀疑泄漏,而不是先庆祝找到 alpha。

最后说一句反直觉的实话:如果你训练的大模型预测准确率高得不像话,那不是你厉害,是数据漏了。 一个诚实的股市预测模型,IC 有个 0.05、Sharpe 有个 1-2,已经是相当体面的成绩。剩下的时间,应该花在把泄漏堵死,而不是把曲线画得更漂亮。

训练大模型预测股市的最大隐形杀手:时间穿越与数据泄漏
https://blog.halo26812.eu.org/blog/look-ahead-leakage-stock-prediction
Author halo
Published at 2026年9月1日
版权声明 CC BY-NC-SA 4.0
Comment seems to stuck. Try to refresh?✨