【量化投资从入门到精通 #47】让AI替你选因子?机器学习打分的正确姿势与三道红线
本系列进度:#01–#46 ✅ #47 ✅(全系列 48 篇收官) 专题阶终章。前面 47 篇把"因子"讲了个体无遗,这一篇用 AI/机器学习把它们自动拧成一个预测分数——并老实告诉你,为什么 AI 量化是最容易翻车的地方。
一、这个方法解决什么投资问题
37 讲过手动 IC 加权合成因子。但当因子有十几个、还互相非线性相关时,人脑调权重就力不从心了。机器学习(ML) 正好干这件事:给它一堆因子特征 + 历史"未来收益"标签,它自动学出"哪些因子重要、怎么组合"。
但 ML 在量化里是把双刃剑:它太擅长在历史数据上"找规律",而金融市场的历史规律会失效。这一篇讲正确姿势,更讲三道红线。
二、核心思想:把因子当特征,未来收益当标签
ML 量化本质是一个监督学习问题:
- 特征 X:横截面上每只股票的 N 个因子(估值、动量、质量……)
- 标签 y:这些股票 T 日之后的收益
- 模型:学一个
f(X) ≈ y的映射,预测"哪只未来涨"
预测分数越高,越值得买。关键是只能用 T 及之前的数据做特征、T 之后的收益做标签——这条线模糊就是致命的前视。
三、实操演示(不依赖第三方 ML 库)
合成示意:15 个因子特征,前 5 个含信号;用岭回归(闭式解)拟合,切分训练/测试看过拟合。
import numpy as np
rng = np.random.default_rng(47082026)
N, K = 600, 15
future = rng.normal(0, 1, N) # 未来收益标签
X = np.zeros((N, K))
for k in range(K):
sig = future if k < 5 else np.zeros(N) # 前5个因子有信号
X[:, k] = sig*max(0.0,0.4-k*0.06) + rng.normal(0,1,N)
Xz = (X - X.mean(0)) / (X.std(0) + 1e-9) # 标准化
y = future
cut = int(N*0.7); Xtr, Xte = Xz[:cut], Xz[cut:]; ytr, yte = y[:cut], y[cut:]
def ridge(Xm, yv, lam=0.1): # 岭回归闭式解
A = Xm.T @ Xm + lam*np.eye(Xm.shape[1])
return np.linalg.solve(A, Xm.T @ yv)
w = ridge(Xtr, ytr)
r2 = lambda p,t: 1 - ((t-p)**2).sum()/((t-t.mean())**2).sum()
print("样本内 R²", round(r2(Xtr@w, ytr),3), "样本外 R²", round(r2(Xte@w, yte),3))
运行结果(合成示意,N=600,K=15):
| 指标 | 值 |
|---|---|
| 样本内 R² | +0.348 |
| 样本外 R² | +0.266 |
| 过拟合缺口 | +0.082 |
因子重要性(|系数|):f1 +0.393 / f2 +0.251 / f3 +0.210 / f4 +0.153 居前,正是那 5 个有信号的因子——模型确实"学到了"真正有用的特征。
数据需求标注:分钟级反转、全市场因子横截面等特征工程属需求 R4,行情服务补全后即可用真实特征替换
synthetic段。生产可用scikit-learn的RandomForest/GradientBoosting或LightGBM做非线性,本 demo 用最小闭式模型演示原理。
四、结果解读
模型在样本内 R² 0.348、样本外掉到 0.266——样本外低于样本内,就是过拟合的红旗。真实场景里,如果特征多、噪声大、不加正则,这个缺口会大得多(#28 讲的参数优化过拟合在此升级为"模型过拟合")。
好消息是:重要性排序把有信号的 f1–f4 排到最前,说明ML 确实比人更擅长从一堆因子里挑出真正有用的——前提是数据干净、验证严谨。
五、三道红线(AI 量化的生死线)
- 未来函数(最致命):标签或特征里混入了 T 之后的信息(如用"已发生"的财报当 T 时刻特征)。一旦漏,回测美如画、实盘亏成狗。
- 过拟合:模型记住了噪声而非规律。必须用样本外/滚动窗口/walk-forward(#27)验证,样本外崩了就该扔。
- 不可解释:黑箱模型给个分数,你不知道它押注了什么——一旦某因子突然反转(#38 因子失效),你毫无防线。务必保留"因子重要性"监控,模型偏航能早发现。
六、小结 + 全系列收官
AI 量化 = 把因子当特征、未来收益当标签,让 ML 自动学组合权重;红利是"自动挑因子",风险是"未来函数 + 过拟合 + 不可解释"三道红线。守住它们,ML 才是放大器,不是炸药。
全系列收官:从 #01 的"把感觉写成规则",到 #47 的"让 AI 给因子打分",48 篇走完了认知→工具→信号→策略→评价→因子→组合→专题的完整量化链。下一篇 #48 给你一份「从今天起怎么动手」的 30/60/90 天路线图。
七、合规收尾
本文为量化方法教学,代码示例使用合成示意数据,不构成投资建议,不承诺收益。投资有风险,入市需谨慎。
想把 ML 因子接上真实行情?麦蕊智数的实时快照与历史 K 线是因子特征工程的稳定底座(分钟级/横截面特征补全后即 R4 就绪),免费版即可起步、证书即取即用;模型生产化建议用 scikit-learn / LightGBM,同一套"特征→标签→滚动验证"框架即可落地。配套 Demo(含 main.py + RUN.md)见 麦蕊智数 www.mairuiapi.com 站内「API 文档」与「证书获取」(免费版 500 次/日,邮箱验证即领)。



