📌 项目地址stefan-jansen/machine-learning-for-trading | ⭐ 17,780 颗星 | 🔧 Jupyter Notebook | 📜 未标注

项目定位:它是一本教材的代码,不是一个回测平台

stefan-jansen/machine-learning-for-trading 是《Machine Learning for Algorithmic Trading》第二版(2020年出版)的配套代码仓库。作者 Stefan Jansen,全书 800 多页,23 章加附录。仓库里放了 150 多个 Jupyter Notebook,每个对应书中某个章节或案例。所有 Notebook 已经执行过,打开能看到输出和图。README 明确建议“边看书边看Notebook”,因为 Notebook 里包含书里没写进去的细节。

它不是一键回测系统,不是数据供应商,也不是交易机器人。它是一套教学实验代码。你如果想直接拿它跑自己的策略,可以,但需要自己搭数据管道和环境。

150 个 Notebook 实际覆盖了什么

仓库按书的四部分组织,每部分对应不同阶段:

第一部分(第1–5章):数据获取与特征工程
演示怎么处理市场数据(Yahoo Finance、Quandl)、基本面数据(SEC EDGAR、WRDS)、另类文本数据(财报电话会议记录、新闻)。特征工程部分包括计算金融指标、时间序列对齐、滚动统计量。代码只提供方法,不提供数据文件。你要自己搞定数据下载和清洗。我用 Quandl 的免费 API 跑过第一章的 Notebook,发现接口参数已经有变化,需要改两行代码。

第二部分(第6–13章):从监督/无监督模型到策略构建
从线性回归、随机森林、XGBoost 到聚类、PCA。每个模型后面跟着一个具体的多空策略实现:把模型预测转成信号,用回测框架算夏普比率、最大回撤。还演示了特征选择、过拟合检查、时间序列交叉验证。这部分是复现价值最高的——你可以用自己的数据跑通整个实验流程。不过书里用的 scikit-learn 版本偏旧,我试了下 PCA 的 Notebook,PCA.inverse_transform 的用法在新版里没有变化,但一些 deprecated 参数会报 warning。

第三部分(第14–20章):深度学习
CNN 和 RNN 用在价格序列和替代数据(比如新闻文本嵌入)。生成对抗网络(GAN)合成金融时间序列,深度强化学习训练交易智能体。代码依赖 TensorFlow 或 PyTorch,版本偏旧(书2020年出版),在新环境下可能报错或出警告。我用 PyTorch 1.12 跑过 RNN 的 Notebook,torch.nn.utils.rnn.pack_padded_sequence 的用法没有变化,但 GPU 检测部分需要手动指定设备。

第四部分(第21–23章):策略整合与评估
把所有技术合并成端到端策略,用回测框架做绩效分析。部分 Notebook 复现了近几年的学术论文结果,比如用 GAN 增强数据、用深度强化学习管理仓位。这些 Notebook 的数据集比较大,下载需要时间。我没完全跑通第22章的强化学习 Notebook,因为环境依赖(gym 版本)冲突,折腾了半天。

三个必须面对的现实

1. 数据问题:仓库里一个 .csv 都没有
README 提到数据来源(Yahoo Finance、Quandl、SEC EDGAR、WRDS 等),但下载、清洗、对齐全归你管。部分 Notebook 依赖 WRDS 这类付费数据库。如果你想用免费数据,得处理 API 限制、时区问题、复权计算。这一步会花掉不少时间,但也是最有价值的“动手训练”——你被迫理解数据管道。

2. 环境依赖偏旧,不能“解压即用”
Notebook 虽然已执行,但如果你想改参数、换标的、改回测时间段,就必须自己改代码并调试。我试了下在 Python 3.10 上跑第二章的 Notebook,pandas-datareader 的接口已经变了,得改两行代码才能跑通。类似的小问题会在多章出现。依赖管理可以看仓库的 requirements.txt(在根目录下),不过你需要自己处理版本冲突。我建议用 conda 创建一个 Python 3.8 的环境,配合 requirements.txt 安装,概率最小。

3. 学习门槛不低
你需要熟练用 pandas、scikit-learn,以及至少一个深度学习框架(TensorFlow / PyTorch)。金融方面要理解多空、夏普比率、最大回撤、信息系数这些概念。如果你连 rolling()shift() 都不熟,第一个关于特征工程的 Notebook 就会卡住。这不是零基础教程,它假设读者已经会写 Python 并懂基本量化词汇。

我的学习路线建议

买了书之后(亚马逊链接在 README 顶部),按章节顺序读,不要跳。每章读一遍,然后打开对应的 Notebook,先看已执行的结果,再对照书里的解释。读完后,用自己的数据替换 Notebook 的输入,重新跑一遍。这一步最花时间,但也最能检验你有没有真懂。

碰到感兴趣的模型(比如 XGBoost + 多空策略),独立写一个回测脚本,不依赖 Notebook 里的数据管道。写完之后,用历史数据跑一次,看结果跟书里是否接近。这一步能把你从“读完”推到“会用”。

遇到问题去社区平台提问:https://exchange.ml4trading.io/(README 里给的链接)。作者偶尔也参与回复。整个流程预计需要 3–6 个月,每天 1–2 小时。

社区与许可

README 邀请读者加入 exchange.ml4trading.io,讨论代码实现、策略调参、数据获取。平台目前有一定活跃度(几百个用户),但算不上热闹。许可协议是 BSD-3-Clause,代码可以自由修改和使用,但需要保留版权声明。

一句话总结

这个仓库是目前公开可用的、结构最完整的“机器学习 + 交易”教学材料之一。它的价值在于完整暴露了从数据工程到策略回测的整个 pipeline,并且包含不少其他地方找不到的学术论文复现代码。代价是你需要投入时间学习、自己解决数据问题、调试代码。认清这个定位,它就能帮你省掉大量从零摸索的时间。如果以为它是一个“下载即用”的交易系统,你会失望。

这篇文章对你有帮助吗?

发表回复