← 返回全部文章
·约 22 分钟PPT

一天批量跑 213 因子 ML 量化策略|(ml-quant-trading)

量化交易

配套媒体

本页对应的 PPT 与演示视频

ml-quant-trading-recommend.mp4
PPT
ml-quant-trading-recommend.pptx浏览器不能直接打开 PPT,下载后用 PowerPoint / WPS / Keynote 查看
下载没反应?点这里复制直链

侧边栏预览窗口(Electron webview)会拦截下载,把下面的链接复制到 Chrome / Edge 地址栏打开即可保存。

PPT../../ml-quant-trading-recommend.pptx
视频../../ml-quant-trading-recommend.mp4
本文目录
  1. 🚀 什么是 ml-quant-trading?
  2. 项目背景
  3. ✨ 核心功能一览
  4. 7 大核心模块
  5. 213 因子家族分布
  6. 🛠️ 快速上手:5 分钟跑通示例
  7. 安装 / 部署
  8. Docker / Colab 一键部署
  9. 核心代码示例(PyTorch 训练管线)
  10. 因子注册表使用
  11. 📊 与竞品对比
  12. 🏗️ 系统架构
  13. 数据契约:Panel 一等公民
  14. Mask-first 设计理念
  15. 💡 适用场景
  16. 场景 1:因子有效性快速验证
  17. 场景 2:ML 模型 + 组合优化全流程
  18. 场景 3:矢量化回测与公开数据验证
  19. 用户群体总结
  20. 🔬 核心技术亮点
  21. 1. Tensor-accelerated 因子引擎
  22. 2. Alpha101 子集(9 个经典公式)
  23. 3. GBM Block-Bootstrap 数据增强
  24. 4. cvxpy Markowitz with α-sweep
  25. 🎯 总结
  26. 🎓 进阶阅读

一天批量跑 213 因子 ML 量化策略|(ml-quant-trading)

📌 核心价值:PyTorch + cvxpy 端到端 A股多因子研究栈,开箱即用 213 因子 + 偏差校正 + Markowitz 组合优化

一个干净、可 fork、端到端的 ML 量化交易研究栈:tensor 因子引擎、213 因子维度、bias correction、MLP/Transformer、Markowitz 优化、矢量化回测、公开数据验证,全套打包。

封面图

GitHub stars GitHub forks


🚀 什么是 ml-quant-trading?

ml-quant-trading 是 Yimin Du 在 2026 年开源的 ML 多因子量化交易研究栈,是论文 arXiv:2507.07107 的配套代码。

核心定位:把"因子构造 → ML 训练 → 组合优化 → 矢量化回测"做成一条龙流水线

  • 🧮 213 因子维度:204 个手工 legacy 因子 + 9 个 Alpha101 公式因子
  • 🤖 ML 模型:MLP / Transformer,符号感知损失 + IC/RankIC 损失
  • 📊 组合优化:cvxpy Markowitz + Ledoit-Wolf 协方差收缩
  • 🛡️ 偏差校正:mask 一等公民、日内价格限制/停牌 mask、look-ahead 安全
  • 📈 矢量化回测:标准指标(Sharpe / Sortino / Calmar / MDD / IC / RankIC)
  • 🔬 学术严谨:30 个单元测试,CI 覆盖 Python 3.9 / 3.10 / 3.11
  • 📦 现代工程:src 布局 + Click CLI + Docker + Google Colab
  • 🌐 公开数据验证:Baostock(A 股)/ yfinance(美股 ETF)/ synthetic(GBM)

项目背景

传统量化研究代码散落在多个 notebook 里,缺少可复现的工程化封装。ml-quant-trading 提供了一套 PyTorch 研究栈,让学术研究者可以:

  1. 一行命令 clone 下来
  2. pip install -e .[dev] 安装
  3. make paper CONFIG=configs/small.yaml 跑完整管线
  4. 直接产出 benchmark 报告

⚠️ 本文仅作技术交流,不构成投资建议。股市有风险,投资需谨慎。


✨ 核心功能一览

功能对比表

7 大核心模块

模块 关键能力 技术实现
data OHLCV/财务/公司行为数据 → Panel dataclass Baostock + yfinance + synthetic GBM
features GPU 张量原语、213 因子 cs_rank/ts_corr/ewma/delay/delta
bias mask 一等公民、偏差校正 价格上下限/停牌 mask、行业中性化
training GBM 数据增强、trainer block-bootstrap、grad clip
models MLP + Transformer、符号感知 AdjMSELoss / IC Loss / RankIC Loss
portfolio cvxpy Markowitz + α sweep Ledoit-Wolf 协方差收缩
backtest 矢量化引擎 + 标准指标 Sharpe / Sortino / Calmar / MDD / IC

213 因子家族分布

因子家族表


🛠️ 快速上手:5 分钟跑通示例

安装 / 部署

# 克隆仓库
git clone https://github.com/initial-d/ml-quant-trading.git
cd ml-quant-trading

# 安装(src 布局,自动注册 mlquant CLI)
pip install -e .[dev]

# 跑完整管线(默认 200 股 × 500 天合成面板,CPU 约 30 秒)
make paper CONFIG=configs/small.yaml

# 跑因子引擎性能基准
make benchmark

# 跑 30 个单元测试
make test

Docker / Colab 一键部署

# Docker(CPU 版 PyTorch 镜像)
docker build -t ml-quant-trading .
docker run --rm -v $(pwd):/app ml-quant-trading make paper

# Google Colab
# 直接打开 notebooks/public_factor_ic.ipynb 即可

核心代码示例(PyTorch 训练管线)

import torch
from mlquant.features import TensorFactorEngine, alpha101_registry
from mlquant.training import FactorDataset, Trainer
from mlquant.models import MLPRegressor, ICMLPLoss
from mlquant.backtest import VectorizedBacktest

# 1. 构造特征(204 legacy + 9 alpha101)
engine = TensorFactorEngine(device="cuda")
features = engine.compute(panel)  # shape: [T, N, 213]

# 2. 数据集 + 数据增强
dataset = FactorDataset(
    features=features,
    targets=returns,
    augment="gbm_block_bootstrap",
)

# 3. 训练模型(符号感知损失)
model = MLPRegressor(input_dim=213, hidden=[256, 128])
trainer = Trainer(model, dataset, loss=ICMLPLoss())
trainer.fit(epochs=50)

# 4. 矢量化回测
preds = model.predict(features)
bt = VectorizedBacktest(preds, returns, cost_bps=10)
report = bt.run()
print(f"Sharpe: {report['sharpe']:.2f}, MDD: {report['mdd']:.2%}")

注意:必须使用 PyTorch 1.13+ 和 CUDA 12.x;CPU 也能跑但 213 因子计算偏慢

因子注册表使用

from mlquant.features.alpha101 import alpha101_registry

# 查看所有可用的 Alpha101 因子
print(alpha101_registry.list())  # ['alpha001', 'alpha002', ..., 'alpha101']

# 单独计算某个因子
alpha006 = alpha101_registry.get("alpha006")(panel)

# 自定义因子:只要遵循 (panel) -> Tensor 接口
@alpha101_registry.register("alpha_custom_momentum")
def alpha_custom_momentum(panel):
    return panel.close.pct_change(20).fillna(0)

📊 与竞品对比

对比维度 ml-quant-trading Qlib Rqalpha Backtrader
核心定位 PyTorch 端到端 A股研究栈 微软 AI 量化平台 事件驱动研究框架 事件驱动回测框架
因子库 213 因子(开箱即用) Alpha158 + 自定义算子 需自行实现 需自行实现
ML 模型 内置 MLP + Transformer LGB/LSTM/Transformer 需自行集成 需自行集成
组合优化 cvxpy Markowitz 内置 Portfolio 需手写 需手写
Bias 校正 行业+log-size 中性化 需手工实现 无内置 无内置
公开数据验证 Baostock/yfinance/synthetic 需自备数据 需自备数据 需自备数据
学术严谨性 30 单测 + Docker + Colab 较完善 较少 较少

ml-quant-trading 的差异化:

  1. 学术严谨:论文配套代码,arXiv 可查证
  2. 现代工程:src 布局 + Click CLI + Docker
  3. 偏差校正:mask-first 设计避免常见 A 股研究陷阱
  4. 公开数据验证:内置 Baostock/yfinance/synthetic 三套可复现实验
  5. 多语言文档:英文 + 简体中文 + 繁体中文

🏗️ 系统架构

架构图

整个系统是一个 Python 包 + CLI,每个子包独立:

src/mlquant/
├── data/        loaders, synthetic GBM panel, immutable Panel container
├── features/    GPU primitives, Alpha101 subset (9), legacy factors (204), neutralisation, bias mask
├── training/    FactorDataset, GBM augmentation, Trainer
├── models/      MLP / Transformer baselines, sign-aware losses
├── portfolio/   cvxpy-based Markowitz with α-sweep
├── backtest/    vectorised engine + paper-grade metrics
├── cli/         Click entry points wiring the stages together
└── utils/       config loading + deterministic seeding

数据契约:Panel 一等公民

所有阶段都操作一个不可变的 Panel dataclass(包含 7 个 [T, N] 张量 + 可交易 mask)。阶段之间通过 Panel 交换数据,不互相侵入内部。

@dataclass(frozen=True)
class Panel:
    prices: Tensor        # [T, N] 复权收盘价
    volumes: Tensor       # [T, N] 成交量
    fundamentals: Tensor  # [T, N, F] 财务数据
    mask: Tensor          # [T, N] 可交易 mask(价格上下限/停牌)
    ...

Mask-first 设计理念

传统 A 股研究代码经常混淆 nan、0、-1 的语义。ml-quant-trading 把 mask 作为 Panel 的一等公民:

  • limit mask:日内价格上下限日不可买入
  • halt mask:停牌日不可交易
  • pre-IPO mask:上市前数据需排除
  • look-ahead shift:未来信息泄漏防护

💡 适用场景

场景 1:因子有效性快速验证

因子分布

核心优势:213 因子开箱即用,无需自己实现

功能说明:内置 204 个 legacy 因子 + 9 个 Alpha101 因子,覆盖动量、反转、波动率、流动性、价值质量等 9 大类。

输入要求:标准 OHLCV 面板(Baostock/yfinance/synthetic 都可)

输出效果:每个因子的 IC、RankIC、ICIR 指标

适用场景:

  • 研究者快速验证因子有效性
  • 教学中演示因子构造原理
  • 复现 WorldQuant Alpha101 论文

场景 2:ML 模型 + 组合优化全流程

IC 曲线

核心优势:从 ML 训练到 Markowitz 组合的端到端管线

功能说明:内置 MLP 和 Transformer 两个 baseline 模型,配合符号感知损失(AdjMSE/IC Loss/RankIC Loss),可直接接到 cvxpy Markowitz 组合优化。

输入要求:因子矩阵 + 未来回报标签

输出效果:ML 预测值 + Markowitz 最优权重 + 矢量化回测报告

适用场景:

  • 学术论文的 ML 因子模型实验
  • 个人量化研究者的策略验证
  • 教学演示 ML × 量化研究流程

场景 3:矢量化回测与公开数据验证

回测指标

功能说明:矢量化回测引擎计算标准指标(Sharpe、Sortino、Calmar、MDD、IC、RankIC、turnover),支持成本拖累建模。

输入要求:ML 预测值或因子评分 + 价格数据 + 交易成本假设

输出效果:完整的绩效报告(净值曲线、IC 衰减、换手率)

适用场景:

  • 量化基金研究员验证策略可行性
  • 学生学习回测引擎的工程实现
  • 复现论文 benchmark 表

用户群体总结

  • ✅ 学术研究者:论文配套代码,arXiv 可查证
  • ✅ 个人量化爱好者:开箱即用的端到端管线
  • ✅ 教学场景:学生可以从因子构造学到组合优化
  • ✅ 开源贡献者:现代工程化封装,便于二次开发
  • ❌ 不适合:直接用于实盘交易(仅供研究)

🔬 核心技术亮点

1. Tensor-accelerated 因子引擎

GPU 矢量化、mask-aware 张量原语:

# cs_rank(带 ties)
ranked = cs_rank(features, mask=panel.mask)

# 时序算子
ma20 = ts_mean(panel.close, window=20, mask=panel.mask)
corr = ts_corr(panel.close, panel.benchmark, window=20)

# 指数加权移动平均
ewma_vol = ewma(panel.returns, halflife=30)

2. Alpha101 子集(9 个经典公式)

from mlquant.features.alpha101 import alpha101_registry

# Alpha006: (-1 * correlation(open, volume, 10))
alpha006 = alpha101_registry.get("alpha006")

# Alpha012: (sign(delta(volume, 1)) * sign(delta(close, 1)) * sign(delta(close, 1)))
alpha012 = alpha101_registry.get("alpha012")

3. GBM Block-Bootstrap 数据增强

为训练集扩充样本,提升模型鲁棒性:

from mlquant.training.augment import gbm_block_bootstrap

augmented = gbm_block_bootstrap(
    features=train_features,
    block_size=20,
    n_samples=1000,
    seed=42,
)

4. cvxpy Markowitz with α-sweep

from mlquant.portfolio import MarkowitzOptimizer

optimizer = MarkowitzOptimizer(
    covariance_estimator="ledoit_wolf",
    weight_upper_bound=0.05,  # 单股权重上限 5%
    solver="SCS",  # 默认 SCS,可选 MOSEK
)

# α sweep 扫描有效前沿
weights = optimizer.solve(mu, sigma, alpha=1.0)

🎯 总结

ml-quant-trading 是 2026 年面向量化研究者的优秀开源项目:

  • 🏆 学术严谨:论文 arXiv:2507.07107 配套代码
  • 🛠️ 现代工程:src 布局 + Click CLI + Docker + Colab
  • 📊 数据驱动:213 因子 + 公开数据验证 + Bootstrap CI
  • 🌐 多语言:英文 + 简体中文 + 繁体中文

推荐指数: ⭐⭐⭐⭐(4/5 星)

适合人群: 量化研究者 / 学术论文实验 / 量化教学 / 个人量化爱好者

立即体验:

GitHub 仓库: initial-d/ml-quant-trading

论文: arXiv:2507.07107

官方文档: docs/


🎓 进阶阅读


数据截至 2026-07-18,最新信息请以官网为准。