stefan-jansen/machine-learning-for-trading · 上手攻略

  • 仓库:stefan-jansen/machine-learning-for-trading
  • 链接:https://github.com/stefan-jansen/machine-learning-for-trading
  • 分类:ai
  • 作者:Tom
  • 更新:2026-07-10

这是什么

这是《Machine Learning for Trading, 3rd Edition》(机器学习与量化交易·第三版)的配套代码库,由量化投资顾问 Stefan Jansen 编写。与前两版不同,第三版从一本技术书彻底重构成了端到端研究-生产工作流:从数据获取、因子研究、模型训练、回测评估,到实盘接入经纪商,全流程跑通。

全书配套 6 个生产级 Python 包,覆盖量化交易全链路:

阶段 作用
ml4t-data 数据 统一接口,接入 19+ 数据源
ml4t-engineer 特征工程 特征/标签/泄漏安全数据集
ml4t-models 模型 因子模型、直接预测、投资组合学习
ml4t-diagnostic 评估 特征验证、策略诊断、Deflated Sharpe Ratio
ml4t-backtest 回测 事件驱动、真实交易成本建模
ml4t-live 部署 接入 Interactive Brokers / Alpaca / QuantConnect

解决什么问题: 量化交易的学习曲线极陡,市面上大多数资源要么只讲机器学习,不讲交易;要么只讲回测,不讲实盘。第三版是少数把两者真正打通的作品,配有 Docker 环境、112 个概念讲解、56 个 Agent 技能,以及可直接复用的 Notebooks。


快速安装

环境准备(推荐 Docker)

# 克隆仓库
git clone https://github.com/stefan-jansen/machine-learning-for-trading.git
cd machine-learning-for-trading

# 使用 Docker 构建完整环境(推荐)
docker build -t ml4t .
docker run --rm -it -p 8888:8888 ml4t jupyter lab

pip 安装(基础库)

pip install ml4t-data ml4t-engineer ml4t-models ml4t-diagnostic ml4t-backtest ml4t-live

# 核心依赖
pip install polars xgboost lightgbm pytorch optuna plotly

注意:完整环境依赖较重,建议优先使用 Docker 方式,避免依赖冲突。第三版主要使用 Polars 而非 Pandas,处理速度更快但 API 略有不同,新手需适应。

在线预览(无需安装)


核心用法

1. 数据获取(ml4t-data)

from ml4t.data import DataLoader

dl = DataLoader()
# 接入多个数据源,统一接口
df = dl.fetch("yfinance", symbols=["AAPL", "MSFT"], start="2020-01-01")

支持的数据源涵盖 Yahoo Finance、CoinGecko、Polygon.io、FRED 宏观经济等 19+ 数据源

2. 特征工程(ml4t-engineer)

from ml4t.engineer import TripleBarrierLabeler, FeatureGenerator

# 三重障碍标签(业界标准)
labeler = TripleBarrierLabeler()
labels = labeler.fit_transform(price_data, upper_barrier=0.02, lower_barrier=0.01)

# 常用特征生成
fg = FeatureGenerator()
features = fg.add_momentum(window=[5, 20, 60]) \
            .add_volatility(window=[10, 20]) \
            .add_microstructure() \
            .transform(data)

3. 模型训练

from ml4t.models import GradientBoostingModel, DeepSequenceModel
import optuna

# XGBoost + Optuna 多目标调参(第三版标准做法)
study = optuna.create_study(directions=["maximize", "minimize"])
study.optimize(objective, n_trials=100)

# 深度序列模型(PatchTST / iTransformer / Mamba)
model = DeepSequenceModel(arch="patchtst", context=64)

4. 回测(ml4t-backtest)

from ml4t.backtest import Backtester, CostModel

bt = Backtester(strategy=model, cost_model=CostModel(spread_bps=1.5))
results = bt.run(data, signals)
# 输出含 Sharpe、Max Drawdown、Turnover 等完整诊断

5. 实盘部署(ml4t-live)

from ml4t.live import AlpacaBroker

broker = AlpacaBroker(api_key=YOUR_KEY, secret=YOUR_SECRET, paper=True)
broker.submit_order(symbol="AAPL", qty=100, side="buy")

注意:实盘接入前务必先切换 paper=True(模拟盘)充分验证。


典型适用场景

  1. 系统性量化研究:有编程基础,想系统学习从因子发现到回测全流程的 quant 研究者
  2. 机器学习+金融交叉学习:想了解梯度提升、深度序列模型在金融时序上的实际应用(含 Cross-dataset 基准)
  3. 量化策略迭代:用第三版框架做策略实验,配合 Polars 高效处理大数据
  4. 多资产覆盖:ETF、数字货币、股票、期权、期货、外汇九大案例场景齐全
  5. GenAI + 量化:RAG 知识库、Graph RAG、多 Agent 研究系统是新方向,适合想探索 LLM 辅助量化研究的开发者

坑与注意

说明
lookahead bias 特征生成时未用点对点(point-in-time)数据是新手最常见错误,ml4t-engineer 有内置防护,但需要理解原理
过拟合 量化最大杀手。第三版用 Deflated Sharpe Ratio、BH-FDR 控制多重检验,务必要用 walk-forward CV
交易成本被低估 回测时往往忽略 spread、滑点、市场冲击;第三版 CostModel 会建模,建议仔细阅读 Chapter 14
Polars vs Pandas 第三版数据层迁移到 Polars,API 表达方式与 Pandas 不同,学习曲线 +1
实盘不是回测 任何策略上线都要有熔断机制;第三版有 champion-challenger 和 monitoring 章节,必须看
Docker 环境体积 完整构建约 3-5 GB,如网络受限建议分步拉取

与同类对比

项目 特点 对比
QuantConnect / Lean 完整回测+交易引擎,社区强 ml4t 更偏研究与教学,QuantConnect 偏实盘;两者可互补
backtrader 轻量 Python 回测 功能远不如第三版完整,适合简单策略,不适合多资产研究
Zipline (Quantopian) 经典回测框架 已停止维护,第三版端到端能力远超 Zipline
FinRL (AI-based) 深度强化学习 FinRL 专注 RL 交易,第三版覆盖更广,含因果推断、GenAI 等新方向
这本书(第三版) 端到端 + 新模型 + Agent 最全面但体量大;适合认真想系统学习的,不适合快速原型验证

一句话推荐结论

如果你认真想学量化交易——不只是跑个回测,而是真正从数据到实盘走一遍——这是目前最新、最全面、最接近生产实践的开源学习资源;第三版在 GenAI 和 Agent 方向的突破尤其值得关注,2026 年这个时间点正是入场好时机。


主要来源 - GitHub README + 仓库文档:github.com/stefan-jansen/machine-learning-for-trading - 配套网站:ml4trading.io - 书籍链接(第三方):Amazon(ISBN 需自行查询)