论文里的模型和收益,怎样变成你能逐项检查的实验?

论文复现五步法

约 10 分钟4 道小题

学完你能说清楚复现不是照抄结果,而是把问题、数据、配置和差异逐项对齐。

01学完这一课,你能做到什么

学完这一课,你应该能:

  1. 判断一篇论文的问题和自己的市场、数据是否匹配;
  2. 把公式、输入输出和算法写成可执行步骤;
  3. 逐项核对数据、特征、标签、模型、训练和评估配置;
  4. 用 、、 等指标比较结果,并排查差异;
  5. 区分概念验证、思路移植、严格复现和实盘证明。

一篇论文值得复现,不是因为结果数字漂亮,而是因为你能说明每个数字怎样得到。

论文复现五步
  1. 1问题研究什么
  2. 2公式输入输出
  3. 3算法如何执行
  4. 4配置怎样训练
  5. 5结果怎样比较

02第一步:选和问题匹配的研究

检索股票预测研究时,可以从论文和代码仓库入手。arXiv 是预印本平台,被收录不等于已经同行评审;发表在顶会也不代表结论能适用于所有市场和日期。

先问三个问题:作者要解决什么?为什么原方法不够?它的前提适不适合你的数据?

如果只想理解思路,可以做概念验证;如果把方法换成自己的市场,是思路移植;如果要对齐作者实验,才是严格复现。三者的环境、数据和核对深度不同,记录时不要混称。

一句话记住先匹配研究问题,再决定复现深度。

03第二步:写清问题、假设和适用范围

以股票截面收益预测为例:在某个时点,对一组股票预测随后收益并排序。市场状态可能影响选择,时间关联和股票之间的关联也可能帮助预测。

但模型学到关联,不等于识别了因果,也不等于掌握了每条新闻的影响。行业联动、商品和能源同步变化,只能先作为研究假设。

股票池必须回到论文、配置和代码确认。若不同材料分别写了 CSI300、CSI800 和 CSI500,不要自行挑一个填上;先标记冲突并查清来源。

研究结论的边界
可以说

在指定数据和区间有效

结论绑定市场、股票池、日期和口径。

不能直接说

任何市场都有效

关联不等于因果,历史结果也不是未来保证。

04第三步:把公式翻译成输入、处理与输出

读公式先认变量。N 表示股票数量,T 表示回看时间步,F 表示特征维度。一个示意输入可以写成 N×8×222:8 是回看八个交易日,222 个输入维度的具体组成仍要用数据说明核对。

可以把模型拆成三类模块:市场引导或门控,根据市场状态调整特征重要程度;时间注意力,在历史窗口内学习哪些时点更相关;股票间注意力,学习股票之间的关系。

向量化只是把信息放进统一维度进行数值运算,不会自动产生经济解释。八日窗口的注意力也不会凭空检索十年前的事件;想使用更长历史,需要数据和架构支持。

输入形状先说清楚

输入 = N × T × F = N × 8 × 222

N 是股票数,T 是历史步数,F 是特征维度;具体组成要核对配置。

05第四步:把研究写成可执行的数据流

先画出数据流:读取股票特征和市场信息 → 按日期构造八日窗口 → 做门控处理 → 投影和加入位置编码 → 做时间与股票间交互 → 输出预测 → 和真实未来收益计算损失。

每一步都写输入和输出形状,并检查股票顺序、日期排序、缺失股票和标签对齐。N 只股票的顺序发生变化时,标签也要同步变化;某只股票缺失一天,不能悄悄把下一天当成前一天。

如果用 XGBoost 做一个保留市场特征和截面任务的简化版,要明确写出替换了什么。它不等于复现 Transformer 内部的注意力结构。

从数据到损失
  1. 1读取股票与市场特征
  2. 2窗口8 日对齐
  3. 3交互时间与股票关系
  4. 4预测输出收益
  5. 5损失对照真实标签

06第五步:逐项对齐实验配置

一个实验示例可以是 2016—2018 年训练、之后验证、2020 年测试,精确日期必须从配置确认。窗口 T=8,学习率约 1e−5,训练 40 个 epoch,并可能涉及 dropout、batch size 和隐藏层等参数;缺少的值不能凭空补齐。

1 个 epoch 表示完整训练数据被使用一遍,不等于只更新一次参数。Dropout 是训练时随机屏蔽部分表示的正则化方式,不能保证完全消除。

逐项核对:数据来源、日期、日频、历史股票池、和缺失处理;标签期限和价格字段;特征窗口与预处理统计量;模型结构和正则化;学习率、epoch、batch、优化器、早停和随机种子;IC/Rank IC/ICIR 的定义、日期聚合、基准、费用和交易约束;仓库版本、依赖、硬件和随机性。

配置检查清单

数据

来源、日期、股票池、缺失。

模型

结构、维度、正则化。

评估

指标、聚合、基准、成本。

一句话记住缺少参数就标记未知,不要猜成复现配置。

07数据包、PKL 与 Qlib:先确认对象再运行

数据包可能约 2GB,目录和文件名要以实际下载内容为准。PKL 是 Python 对象序列化文件,可能保存处理器、表格或其他对象,不是一种统一金融数据标准。

加载 PKL 前先确认来源可信,因为反序列化不可信对象可能执行代码。检查对象类型、索引、列和时间范围,不能只看到文件存在就开始训练。

Qlib 可以帮助管理量化数据、特征、模型和实验;它与 MySQL 不是同一层工具,不能把某次读取更快推广成所有场景都更好。

一句话记住文件存在不等于数据可用,先检查来源和结构。

08第六步:比较结果,解释偏差来源

IC 通常描述预测与未来收益的相关,Rank IC 描述排名相关,ICIR 衡量 IC 序列均值相对波动的关系。计算前要确认 Pearson 还是 Spearman、按日期还是汇总,以及是否年化。所谓 0.05 的经验线不是通用的盈利认证阈值。

如果结果差异明显,按数据、预处理、标签、模型、训练超参数、随机种子、评估代码逐层排查。可以预先设定相对差异 20% 作为排查提醒,但容忍范围要结合指标尺度和多次运行方差。

异常值要区分数据错误和真实极端事件。训练可以研究稳健处理,评估不能为了好看而删除黑天鹅或亏损行情。每一步保存统计摘要,才能定位差异从哪里开始。

结果差异排查顺序
  1. 1数据范围与缺失
  2. 2预处理统计量与异常值
  3. 3标签公式与对齐
  4. 4模型结构与参数
  5. 5评估指标与聚合

一句话记住复现接近的是配置一致性,不是未来收益证明。

09先用双均线完成一次小型复现

先做一个可控的小实验:计算过去 5 日和 20 日均价,短线上穿长线产生买入信号,下穿产生退出信号。要事先定义使用收盘还是盘中数据、下一可成交时点、初始资金、成本和。

假设用贵州茅台 2024 年至 2025 年的示例区间,曾得到累计约亏 30%、年化约 −18% 的记录。这只是一次回放的记录,数据和口径换了,结果也会变,不能当成可以复制的业绩。

亏损也可能是有效的复现结果:震荡和假突破会让趋势规则反复交易。不能因为结果不好就擅自换参数,再把新结果称为原策略复现。

复现结果不好怎么办
正确做法

保留并排查口径

检查数据、信号时点、成本和参数是否一致。

错误做法

换参数直到好看

这会把复现变成事后挑选。

10动手任务:交付一张可复现的实验卡

先为写一页实验卡,按五步法完成数据核对、公式、算法、配置和结果对比。再为 MASTER 建立待补清单:论文版本、代码提交、数据包、精确股票池、训练日期、模型参数和指标定义。

验收时逐项回答:每个结果用了哪些输入?决策时是否能拿到?哪些差异是有意替换?哪些仍未知?

没有原数据或模型权重时,交付“待复现配置与简化实验”,不能填写“论文复现成功”。

一句话记住复现交付物要能让别人按清单重做。

检验
检验一下

4 道小题

全部答对,这一课就算真正读懂了。答错了会告诉你为什么。

01论文被发表后,哪句话仍然正确?
02N×8×222 中的 8 通常表示什么?
03排查论文结果差异时,较合理的顺序是什么?
04缺少原数据和权重时,应该怎样表述?
知识卡

这一课,浓缩成一张卡

学完可以保存或分享给朋友。保存成图片的功能会在下一版加上。

AI+金融投资训练营 · 论文复现五步法论文复现最重要的习惯是什么?

把问题、数据、配置、指标和差异逐项记录,不把简化实验写成严格复现。

  • 先核对适用范围
  • 未知参数不能猜
  • 复现不等于盈利证明
quant.jtxaionline.com
这一课的要点

记住这 5 句话

  1. 01先判断论文问题是否适合自己的市场、数据和研究目标。
  2. 02把公式拆成输入、处理、输出,并逐项记录形状和时间对齐。
  3. 03数据、标签、模型、训练、评估和环境配置都要核对,未知值不能猜。
  4. 04IC、Rank IC 和 ICIR 的定义与聚合口径要先统一,差异按数据流逐层排查。
  5. 05概念验证、思路移植、严格复现和实盘证明是四种不同结论。
完成这一课

完成这一课

读完讲义、答对小题,这一课就算学完了。

  • 读完讲义
  • 通过随堂自测

实验数据AI+金融投资训练营教学样本。固定教学样本

固定教学样本只用于解释量化研究方法,不代表任何真实标的未来表现,也不构成投资建议。