101个经典Alpha因子背后的量化因子库:一份从原理到回测的实用指南
【免费下载链接】machine-learning-for-tradingCode for Machine Learning for Trading, 3rd edition — from data sourcing to live execution.项目地址: https://gitcode.com/GitHub_Trending/ma/machine-learning-for-trading
做量化因子研究时,很多人卡在同一件事上:手写 Alpha 因子一条要半天,筛选一百条就要几周,而且别人复跑结果还对不上,因子到底有没有预测力全靠感觉。开源项目 machine-learning-for-trading(书籍《Machine Learning for Trading》第三版配套代码)把这条链路完整放进仓库:从 Kakushadze 2015 年提出的 101 公式化 Alpha 因子(项目第 8 章参考文献中的经典出处),到 120 个预验证的因子特征、因子 IC 评估和滚动回测,全部可运行。
📦 盒子里有什么:四块核心组件
这个项目本质是一个"从数据到上线"的机器学习交易流水线,共 27 章代码加 9 个贯穿始终的案例研究。和 Alpha 因子相关的有四块:
- 因子与特征库:08_financial_features 提供价格动量、反转、波动率、流动性等五大因子族的手工实现,配套 ml4t-engineer 库的 120 个预构建、已验证的因子特征
- 因子评估框架:第 7 章用 IC(信息系数)、分位数收益、HAC 显著性检验和多重检验控制,决定哪些因子值得进入模型
- 机器学习工具链:第 11 到 15 章覆盖线性基线、梯度提升树、深度学习时序模型、隐因子和因果推断,用来组合与筛选因子
- 回测、成本与风控:第 16 到 19 章做事件驱动回测、交易成本建模和风险管理,九个案例研究(ETF、期权、期货、外汇等)都走同一条流水线
🚀 最短路径:三步看到第一个因子
依赖管理用 uv 或 Docker 二选一,安装细节见 docs/installation.md。关键动作只有三步:克隆仓库、同步环境、拉免费数据(约 4GB,无需 API key),然后直接跑第 8 章第一个因子 notebook:
git clone https://gitcode.com/GitHub_Trending/ma/machine-learning-for-trading cd machine-learning-for-trading uv sync # 或用 docker compose pull ml4tuv run python data/download_all.py --free-only # 免费数据集,无 API key uv run python 08_financial_features/01_price_volume_features.py打开 08_financial_features/01_price_volume_features.ipynb 就能看到第一个因子:它用真实 ETF 日频数据,依次构建收益、趋势反转、波动率、量价四类因子,并明确标注了哪些写法会引入前视偏差。想评估因子,就打开 07_defining_the_learning_task/05_signal_evaluation.ipynb,输出是完整的 IC 曲线和分位数收益图。
🧮 原理拆解:Alpha 因子从本质到 IC 计算
为什么先讲因子再讲模型
模型再复杂,吃的也是因子。说白了,因子研究解决的是"用什么信号预测未来收益",模型只解决"怎么用这些信号"。先把因子做对,后面的机器学习才有意义。
因子的本质:两套算子
101 公式化 Alpha 因子看似花哨,拆开全是两套算子的排列组合。时间序列算子沿单只资产自己的历史方向计算,横截面算子在同一个交易日对一篮子资产做排名或归一化:
| 算子类型 | 作用方向 | 典型例子 |
|---|---|---|
| 时间序列算子 | 沿单只资产的历史方向 | 滚动均值、滚动标准差、滚动排名(ts_rank) |
| 横截面算子 | 同日跨资产比较 | 百分位排名(rank)、绝对值缩放(scale) |
比如"动量"因子是时间序列算子(63 日滚动收益),"相对强度"因子是横截面算子(同一天所有资产里的百分位排名)。08_financial_features/case_study_feature_summary.ipynb 里按这五族整理了全部因子,可以看到每个因子编码了什么样的经济假设。
因子IC评估三步走
因子好不好,不能看回测曲线,要看它对未来收益的预测力是否稳定。项目用三步:第一步,每个交易日算因子值和未来收益的横截面 Spearman 秩相关,得到一条 IC 时间序列;第二步,看 IC 均值和 ICIR(均值除以标准差),再用分位数收益图检查单调性;第三步,做统计推断——07_defining_the_learning_task/06_ic_inference.ipynb 用 Newey-West HAC 调整和块自助法给出置信区间,区分"真信号"和"噪声"。
📈 一次完整走通:给一个动量因子算出 IC 图
选一个典型因子:63 日动量(101 公式化因子里最朴素的形态之一)。从数据加载到出图,核心就四行:
from data import load_etfs from ml4t.diagnostic.metrics import cross_sectional_ic prices = load_etfs() # 加载 100 只 ETF 的日频数据 factor = prices.pct_change(63) # 63 日动量因子 y_true = <未来 5 日收益,标签构造见第 7 章> ic = cross_sectional_ic(factor, y_true) # 逐日横截面秩相关,得到 IC 序列后续 notebook 会自动画出 IC 时间序列、IC 累计图和五个分位数的累计收益曲线:如果 IC 均值显著为正、分位数收益单调递增,这个因子才算过第一关。完整版本还包含换手率、信号半衰期和多周期对比,逻辑见 05_signal_evaluation 的后续小节。
⚠️ 上手前你会踩的 5 个坑
- 前视偏差:慢变量数据(财报、宏观指标)有发布时滞和修正,必须按 point-in-time 对齐,第 4 章专门处理。因子构造里引用了"未来"的任何一行数据,IC 都会虚高
- 多重检验过拟合:120 个候选因子里总有几个是碰巧好看的。项目用 BH-FDR 和 Deflated Sharpe Ratio 控制这类假阳性,别只看单因子回测曲线
- 因子衰减:Alpha 因子的 IC 会随时间衰减、随市场状态切换。用 walk-forward 滚动评估,定期重新检验,别信一次跑出来的全样本结果
- 数据质量问题:幸存者偏差会让回测收益虚高,缺失值和复权错误更常见。第 2 章的数据质量框架和 PIT 校验先跑一遍再谈因子
- 成本吃掉信号:高换手因子的毛利可能覆盖不了点差和市场冲击,第 18 章会算每个资产类别的盈亏平衡成本,过不了成本关的因子直接放弃
🧭 往哪走
单因子评估只是起点。下一步是把多个因子喂给梯度提升树,用 SHAP 看哪些因子贡献了预测力(第 12 章);再往后是多因子组合构建与风险预算(第 17 章),以及贯穿全书的 walk-forward 交叉验证纪律(第 6、16 章)。
这个项目把"找 Alpha 因子"从一次性手工活,变成了可复现、可检验的流水线:101 公式化因子作为思想源头,120 个预验证特征、IC 评估和回测协议全部开源可跑。
现在就可以克隆仓库、执行免费数据下载,打开第 8 章的因子 notebook,算出你的第一条 IC 曲线。
【免费下载链接】machine-learning-for-tradingCode for Machine Learning for Trading, 3rd edition — from data sourcing to live execution.项目地址: https://gitcode.com/GitHub_Trending/ma/machine-learning-for-trading
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考