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 略有不同,新手需适应。
在线预览(无需安装)
- 全书 Notebooks 在 ml4trading.io 有在线版
- 56 个 Agent 技能说明:ml4trading.io/skills
- 112 个概念讲解:ml4trading.io/primer/
核心用法
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(模拟盘)充分验证。
典型适用场景
- 系统性量化研究:有编程基础,想系统学习从因子发现到回测全流程的 quant 研究者
- 机器学习+金融交叉学习:想了解梯度提升、深度序列模型在金融时序上的实际应用(含 Cross-dataset 基准)
- 量化策略迭代:用第三版框架做策略实验,配合 Polars 高效处理大数据
- 多资产覆盖:ETF、数字货币、股票、期权、期货、外汇九大案例场景齐全
- 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 需自行查询)