模型 / 数据集
stefan-jansen/machine-learning-for-trading avatar
stefan-jansen/machine-learning-for-trading

机器学习交易第三版代码库:从数据到实盘的一条完整流水线

交易机器学习代码,第三版,从数据源到实时执行。

20,908 个 Star5,615 个 ForkJupyter NotebookMIT

秒懂

它是什么?
Stefan Jansen 的《Machine Learning for Trading》第三版代码库,用九个案例研究贯穿从数据获取到实盘执行的完整流程。本文拆解其结构、运行方式与适用边界。
适合谁用?
适合两类人:一是正在读《Machine Learning for Trading》第三版、希望按章节复现案例的读者,二是需要一套跨资产类别的策略研究模板、想直接改造案例代码的量化研究者。不适合只想要现成实盘策略、或者不愿意维护复杂环境的人,因为代码库依赖 Docker、Polars、PyTorch 等多个组件,且每个案例的部署评估需要自己补全。
能商用吗?
可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库在最近一天内有新的提交。
用什么语言写的?
主要是 Jupyter Notebook(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

这本书的代码库解决了什么问题

量化策略研究最常见的失败点,不是模型不够先进,而是从想法到实盘之间的环节断裂。数据清洗、特征工程、回测、成本建模、风险管理、部署监控,每一步都可能让策略在真实市场中失效。这个代码库把《Machine Learning for Trading》第三版的全部代码组织成一条端到端的工作流,从数据源到实盘执行,中间用九个案例研究串起来。目标读者很明确:正在读这本书的人,以及需要一套可复用的策略研究框架的量化工程师。它不是给你一个黑盒策略,而是给你一套方法论和对应的可运行代码。

九个案例研究如何贯穿同一流程

代码库的核心结构是 case_studies 目录下的九个案例,覆盖 ETF、加密货币永续合约、日内股票、期权、外汇、期货和股票因子面板。每个案例都走同一条流水线:原始数据、标签、特征、模型、回测、成本、风险叠加、最终部署评估。这种设计的意图很直接,用一个纪律化的流程去测试九个不同的市场,看看哪里有效、哪里失效、为什么。比如 ETF 案例探索跨资产动量和均值回归,加密永续案例研究资金费率套利,纳斯达克 100 案例看订单流和订单簿的微观结构信号。这种布局让你能横向比较同一个方法在不同资产上的表现,而不是孤立地看某个案例。

证据边界与防止过拟合的工具

代码库把方法论严谨性当作一等主题。它明确区分探索和确认,用证据边界这个词把调参和评估隔开。回测最容易犯的错误是过度拟合历史数据,这个代码库提供了应对工具:Deflated Sharpe Ratio、Rademacher Anti-Serum、White's Reality Check,还有用于不确定性估计的 conformal prediction。这些不是摆设,它们直接嵌入在案例研究的流程中。比如你在调参后得到一个漂亮的夏普比率,Deflated Sharpe Ratio 会告诉你这个结果在多重测试下有多少可能是运气。这种设计迫使你把验证当作流程的一部分,而不是事后补一个测试集。

运行环境:Polars、Docker 与可复现性

数据层从 pandas 迁移到了 Polars,利用表达式 API 做快速操作。每个章节都提供可复现的 Docker 环境,保证不同机器上结果一致。README 明确说安装文档 docs/installation.md 会把一台空白机器从零带到能运行 notebook 的状态。实际运行路径是:先按安装文档配置环境,然后进入对应案例目录,用预计算的 artifacts 或自己从原始数据开始跑。v3.0.0-artifacts 这个 release 提供了预计算的案例研究产物,意味着你不必每次都从原始数据重新跑完整流程。但要注意,Docker 环境意味着你需要对容器化工作流有一定熟悉度,如果你习惯直接 conda 装包,这里的学习曲线会更陡。

新内容:生成式 AI、强化学习与因果推断

第三版相比前两版增加了大量新主题。生成式 AI 和自主智能体贯穿整个工作流,包括基于 SEC 文件的检索增强生成、知识图谱和 Graph RAG,以及多智能体研究系统。因果机器学习部分引入了 Double ML、贝叶斯结构时间序列和因果发现,用来区分真实效应和虚假相关。强化学习覆盖最优执行、带库存的做市和深度对冲。还有合成金融数据生成器,比如 TimeGAN、Tail-GAN、Sig-CWGAN 和基于扩散的模型,用于历史数据不足时的验证。这些内容不是孤立的章节,而是嵌在案例研究流程中。不过这也意味着代码库的体积和复杂度明显增加,你不可能一次跑通所有内容。

维护成本与许可证限制

仓库采用 MIT 许可证,你可以自由使用和修改代码,包括商用。但维护成本不低。代码库依赖多个大型库,包括 PyTorch、LightGBM、Optuna、Plotly,加上 Polars 和 Docker。每次更新这些依赖都可能引入不兼容变更。仓库最近一次推送是 2026 年 7 月,v3.0.0-artifacts 也是同一天发布,说明作者在积极维护,但 alpha 版本号意味着 API 可能还会变动。如果你基于这个代码库做二次开发,需要跟踪上游的 release 变化。另外,案例研究中的部署评估部分,比如实盘交易系统对接 Interactive Brokers、Alpaca、QuantConnect,这些代码可能依赖特定经纪商的 API,维护成本取决于你使用的交易平台。

替代方案与不同思路

这个代码库的替代品不是另一个教程仓库,而是类似 QuantConnect 这样的完整平台。QuantConnect 提供基于云的策略开发环境,内置数据源、回测引擎和实盘部署,你不需要自己管理 Docker 或数据管道。区别在于 QuantConnect 是封闭平台,你的代码和流程受制于它的 API 和基础设施,而这个代码库是开放的,你可以完全控制数据获取、特征工程和模型训练。另一个思路是使用像 Zipline 这样的开源回测库,但 Zipline 只覆盖回测环节,不包含数据基础设施和部署监控。这个代码库的独特之处在于它把研究、回测、部署和监控整合在一个流程里,而替代方案通常只覆盖其中一部分。

谁应该用,谁应该避开

如果你在读这本书,这个代码库是必用的,因为它就是书的配套代码。如果你在做跨资产类别的策略研究,想找一个可扩展的模板,九个案例研究提供了很好的起点。但如果你只关心某个单一策略的快速实现,这个代码库可能太重了,你只需要提取对应案例的脚本即可。另外,如果你没有 Docker 使用经验,或者对 Polars 不熟悉,初期会花不少时间在环境配置上。建议先从 v3.0.0-artifacts 预计算产物开始,跑通一个案例的完整流程,再决定是否深入其他部分。这个代码库的价值在于流程的完整性,而非某个单独模型的性能。

编辑结论

适合两类人:一是正在读《Machine Learning for Trading》第三版、希望按章节复现案例的读者,二是需要一套跨资产类别的策略研究模板、想直接改造案例代码的量化研究者。不适合只想要现成实盘策略、或者不愿意维护复杂环境的人,因为代码库依赖 Docker、Polars、PyTorch 等多个组件,且每个案例的部署评估需要自己补全。采用前应验证三件事:确认你的机器能跑通 docs/installation.md 中的环境安装步骤,检查你感兴趣的案例目录是否包含完整的特征与回测脚本,以及确认 v3.0.0-artifacts 提供的预计算产物是否覆盖你需要的案例。这个代码库的价值在于流程的完整性,而非某个单独模型的性能。

官方来源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社区笔记

社区笔记