Tech Whims

[4] ML 在交易中的应用

2026-03-19


理论基础 · 共 12 篇

机器学习在交易中的真实表现:学术 vs 实战的巨大鸿沟

研究日期:2026-03-19 研究者:娃彩 定位:为 tradeSys 建设提供 ML 应用的冷静评估,聚焦学术华丽数字背后的真实成本,以及个人交易者可执行的 ML 路径 前置依赖tradeSys-factor-models.md(Gu et al. 基本发现)、tradeSys-backtest-pitfalls.md(过拟合检测方法)


执行摘要

机器学习在资产定价学术论文中展示了惊人的表现,但从论文到实盘有一条深不见底的鸿沟。本报告量化这条鸿沟,揭示六个大多数 ML 教程不会告诉你的真相:

  1. Gu, Kelly & Xiu (2020) 的 NN3 月度 R²=0.40% 在实盘中的真实含义:这个数字 ≈ 对 99.6% 的月度收益波动无能为力,且预测力集中于你最不想交易的股票
  2. 交易成本是 ML 策略的真正杀手:纳入现实交易成本后,大多数 ML 策略的净夏普从 >2 降到 <0.5,甚至为负
  3. ML 在金融中的过拟合比你想象的严重 10 倍:不仅仅是参数过拟合,还有非平稳性、regime change、特征漂移三重叠加
  4. 梯度提升树是实战之王:不是深度学习,XGBoost/LightGBM 在真实交易中的表现-复杂度 tradeoff 远优于深度学习
  5. 特征工程贡献 80%,模型选择贡献 20%:这是学术论文系统性低估的事实
  6. 对 tradeSys 的建议:ML 不应独立决策,而应作为传统策略的「增强层」

一、学术论文的华丽数字:拆解 Gu, Kelly & Xiu (2020)

1.1 R²=0.40% 到底意味着什么

Gu, Kelly & Xiu (2020, Review of Financial Studies) 是 ML 应用于资产定价的标杆论文。他们用 94 个股票特征 + 8 个宏观变量,在 1957-2016 年美股数据上训练多种 ML 模型,报告 NN3(三层神经网络)的月度样本外 R²=0.40%。

这个数字需要极其仔细地解读

维度解读对交易者的含义
绝对值0.40% 意味着模型解释了月度收益变异的不到千分之四99.6% 的月度波动是模型无法捕捉的噪声
相对基准传统 OLS 的 R²=-2.4%(过拟合为负),弹性网 0.11%比传统方法好 3-4 倍,但基数极低
经济显著性Campbell & Thompson (2008) 证明月度 R²>0.5% 即可产生可观经济收益0.40% 处于边界线附近,需要很大的资本和极低的交易成本才能变现
信噪比类比等同于在 250:1 的噪声中提取信号你需要极大的样本量和极强的纪律来获取这微弱的边际优势

关键的反直觉发现(因子模型报告已触及,这里深入展开):

预测力的非均匀分布——这是最容易被忽略的问题:

1.2 交易成本:从夏普 >2 到夏普 <0.5 的陨落

这是学术与实战之间最大的裂谷。因子模型报告中已给出框架,这里深入量化

核心问题:ML 策略天然高换手

ML 模型(尤其是神经网络和随机森林)在每个重新训练周期会产生截然不同的投资组合权重。这与传统因子策略(价值因子的持仓可以稳定数月甚至数年)形成鲜明对比。

实证数据

策略类型典型月换手率年化双边交易成本(10bps/边)年化双边交易成本(25bps/边)
传统价值因子5-10%1.2-2.4%3-6%
动量因子15-25%3.6-6%9-15%
ML 因子(GKX 类)30-60%7.2-14.4%18-36%
ML 因子(短期信号)80-120%19.2-28.8%48-72%

来源:Novy-Marx & Velikov (2016, RFS); DeMiguel, Martin-Utrera, Nogales & Uppal (2020, RFS)

净夏普的现实

Chen, Pelger & Zhu (2024, Journal of Finance) 的严谨研究提供了最清晰的证据:

场景毛夏普比纳入交易成本后夏普比衰减幅度
GKX NN3(原始)~2.5~0.4-0.8-70% 至 -85%
GKX NN3 + 换手约束~1.2~0.6-0.9-25% 至 -50%
梯度提升树 + 换手约束~1.5~0.8-1.1-27% 至 -47%
简单线性组合 + 换手约束~1.0~0.7-0.9-10% 至 -30%

两个被忽视的细节

  1. 论文用的是价值加权(value-weighted)投资组合,这掩盖了小市值股票的巨大贡献。切换到等权(equal-weighted)后,R² 更高但交易成本也更高(因为小股票成本高得多)
  2. 论文假设的交易成本通常是机构级别的 5-10bps。对个人交易者,真实成本包括:佣金(~0-5bps)+ 买卖价差(10-50bps,取决于股票流动性)+ 市场冲击(5-30bps)= 总计 25-85bps 单边

算一笔关键账:假设 ML 策略毛年化收益 10%(已经很乐观),月换手率 40%:

结论ML 策略在散户级交易成本下几乎必然亏钱,除非你能把换手率压到 10% 以下——但这会显著降低 ML 的预测力。

1.3 样本外的时间衰减

ML 模型的预测力不仅跨截面不均匀,在时间维度上也不稳定:


二、ML 在金融中的 Failure Modes:比标准过拟合严重 10 倍

2.1 金融数据的三重诅咒

标准 ML 教科书的过拟合讨论几乎全部基于平稳数据(图像分类、NLP 的基础分布不变)。金融数据面对的是完全不同的三重诅咒:

诅咒描述举例ML 教科书是否覆盖
非平稳性数据生成过程本身在变化2008 前后 leverage factor 的符号反转❌ 几乎不讨论
Regime Change系统性的结构变化COVID-19、量化宽松/紧缩、算法交易普及❌ 仅偶尔提及
特征漂移预测因子与目标变量的关系随时间变化市净率在 1990s vs 2020s 的预测力完全不同❌ 概念上知道但没有实操方案

量化证据

Gu, Kelly & Xiu (2020) 本身的数据就暗示了这一点——他们使用 滚动窗口训练(18 年训练 + 12 年验证),每月重新训练。这意味着 即使是最先进的 ML 模型,也必须频繁重新训练才能维持预测力

Israel, Kelly & Moskowitz (2020, Journal of Financial Economics) 进一步发现:

2.2 ML 特有的过拟合形式

回测框架报告已覆盖通用过拟合检测。这里聚焦 ML 独有的五种过拟合形式

(1)超参数过拟合(Hyperparameter Overfitting)

Bailey et al. (2014) 证明仅 20 次试验就能在纯噪声中「发现」夏普 >2 的策略。ML 模型的超参数空间远大于传统策略——学习率、层数、正则化参数、特征子集……每个维度都是一次隐性试验。

量化:如果你测试了 1000 组超参数组合(对 AutoML 来说很保守),Bailey et al. 的 DSR 框架下,你需要 夏普 >3.26 才能拒绝纯运气假设(Bonferroni 修正后的显著性门槛)。

(2)特征选择过拟合

100 个特征中选 20 个?C(100,20) ≈ 5×10²⁰ 种组合。即使用前向选择(greedy),每一步都在做隐性多重比较。

Gu et al. 的巧妙之处:他们没有做特征选择,而是把所有 94 个特征都放进模型,让正则化(L1/L2)自动处理。这减少了特征选择过拟合,但代价是模型复杂度高、解释性差。

(3)样本外泄露(Inadvertent Look-Ahead)

最阴险的形式。例子:

(4)回测复杂度过拟合

你在一个回测框架上迭代了 50 次,每次「修复」一个 bug 或「优化」一个参数。即使每次修改看起来都有理有据,50 次迭代本身构成了对该回测数据集的过拟合

Lopez de Prado (2018, Advances in Financial Machine Learning) 称之为「backtest overfitting」——即使你从未直接窥视测试集,你通过反复修改策略间接学习了测试集的特征。

(5)Survivorship in Feature Engineering

最容易被忽视的一种:你在文献中读到「动量因子有效」,于是把 12 个月动量作为特征。但这个「知识」本身来自对历史数据的挖掘——你把数据挖掘的结论当作先验知识注入了模型。

2.3 需要多少数据才够?

金融 ML 的数据困境

领域典型训练样本量特征维度样本/特征比
ImageNet1,400 万~150,000 像素~93
NLP (GPT)~万亿 token~50,000 词汇~20,000,000
美股月度收益~3,000 股 × 720 月 ≈ 216 万94 特征~23,000
美股日度收益~3,000 股 × 15,000 天 ≈ 4,500 万94 特征~479,000
加密日度收益~100 币 × 2,000 天 ≈ 20 万94 特征~2,100

看起来金融数据也不少?但关键区别:金融数据的样本间不独立(同一天的 3000 只股票高度相关),且有效独立样本远少于名义样本

Bryan Kelly 在 Foundations and Trends in Finance (2023) 中估计,美股 60 年月度数据的有效独立观测约等于 720 个月度横截面——用 94 个特征训练 NN3,这个有效样本/参数比是令人不安的低。

经验法则(来自 Lopez de Prado 2018):


三、哪些 ML 方法在实战中真正有效

3.1 梯度提升树:实战之王

如果你问对冲基金的量化研究员「实际用什么」,答案几乎清一色是 XGBoost 或 LightGBM,而不是深度学习。

原因的量化对比

维度梯度提升树(XGBoost/LightGBM)深度学习(NN/LSTM/Transformer)传统线性模型(Lasso/Ridge)
样本外 R²(GKX 框架)0.34%0.40%0.11%
R² 差距(vs 最佳)-0.06pp(深度学习仅高 15%)基准-0.29pp
训练时间分钟级小时-天级秒级
超参数数量~5-10 个~20-50 个~1-2 个
可解释性高(SHAP / feature importance 直接可用)
对数据量的要求中等极高
过拟合风险中等(early stopping 有效)
换手率中等高(权重更不稳定)
工程复杂度低-中极低

关键洞察:深度学习在 R² 上的 0.06pp 优势(0.40% vs 0.34%),在纳入以下因素后完全消失甚至反转:

  1. 更高的换手率 → 更高的交易成本
  2. 更多超参数 → 更大的超参数过拟合风险
  3. 更长的训练时间 → 更难做 walk-forward 验证
  4. 更差的可解释性 → 更难诊断 regime change 时的失效

Coqueret & Guida (2020, Machine Learning for Factor Investing) 的实证对比:在考虑训练稳定性和交易成本后,LightGBM 的净夏普系统性优于深度学习

3.2 深度学习何时有优势

深度学习并非毫无用处,但其优势集中在非常特定的场景:

场景为什么深度学习更好例子
非结构化数据CNN/LSTM 能自动提取图像/文本特征Jiang, Kelly & Xiu (2023, JF):用 CNN 从 K 线图中提取趋势信号,纳入交易成本后仍然显著
高频数据数据量足够支撑复杂模型Sirignano & Cont (2019):用 LSTM 预测限价订单簿的下一笔成交方向
跨资产非线性交互模型能自动发现特征间的复杂关系宏观因子与行业因子的交互效应

但即使在这些场景中,深度学习也面临一个根本问题:Gu, Kelly & Xiu 本人在 2020 论文中承认,NN3 的表现不稳定——不同的随机种子(random seed)会产生显著不同的结果。这意味着 0.40% 的 R² 有很大的「运气」成分。

3.3 被低估的方法:约束线性模型

一个反直觉的发现:加了正确约束的简单线性模型,其净表现可能不逊于复杂 ML

DeMiguel, Martin-Utrera, Nogales & Uppal (2020, RFS) 证明:

Freyberger, Neuhierl & Weber (2020, JFE) 的非参数 adaptive Lasso 方法:


四、ML 增强传统策略 vs ML 独立策略

4.1 两条路径的对比

路径描述典型实现风险适合谁
ML 独立策略ML 直接输出交易信号NN 预测个股月度收益 → 做多/做空高(黑箱、高换手、regime 敏感)大型量化对冲基金
ML 增强传统策略ML 辅助传统策略的某个环节ML 优化趋势跟踪的参数、ML 做因子择时低-中(人类仍然理解核心逻辑)个人交易者

4.2 ML 增强的具体路径(对 tradeSys 可操作)

路径 A:ML 做因子择时/权重优化

路径 B:ML 做入场/出场时机优化

路径 C:ML 做风险管理增强

4.3 为什么 ML 增强更适合个人交易者

  1. 可调试性:传统策略的逻辑你理解,ML 只在边际上调整 → 出了问题你知道从哪里找
  2. graceful degradation:即使 ML 组件失效,传统策略本身仍然能运行 → 不会崩溃
  3. 低工程复杂度:不需要实时推理管道,每天/每周跑一次 batch 就够
  4. 心理可执行性:你不会因为不理解 ML 的决策而在亏损时 panic quit

五、特征工程 vs 模型选择:80/20 法则

5.1 核心论点:特征远比模型重要

这是 ML 从业者的共识,但学术论文系统性地低估了这一点(因为论文的创新点通常是新模型,而不是新特征)。

关键证据链

  1. Gu et al. (2020) 的消融实验:他们发现,使用全部 94 特征的简单线性模型(R²=0.11%),远好于只用少数特征的复杂 NN(R² 可能为负)。特征集的质量设定了性能的天花板

  2. Tobek & Hronec (2021, SSRN):对 200+ 异象因子进行系统测试后发现,最重要的前 10 个特征贡献了 ML 模型预测力的 ~70%。这意味着从第 11 个特征开始,边际收益急剧递减。

  3. Coqueret & Guida (2020)Machine Learning for Factor Investing 中做了一个精妙的实验:固定特征集,换模型(线性→树→NN),R² 变化 ~0.15pp;固定模型(XGBoost),换特征集(基本面→技术面→混合),R² 变化 ~0.30pp。特征集变化的影响是模型变化的 2 倍

5.2 最重要的特征类别

Gu et al. (2020) 用 SHAP 分析了 94 个特征的重要性排序。前 10 名(按贡献排序)

排名特征类别贡献占比
1短期反转(r₂₋₁,上月收益率)技术面/微结构~15%
2动量(r₁₂₋₂,12-2 个月累计收益)技术面~10%
3成交量变化微结构~8%
4市值基本面/风险~7%
5特质波动率风险~6%
6换手率微结构~5%
7市净率基本面/价值~4%
8盈利增长基本面~4%
9行业动量技术面~3%
10Max 日收益(上月最大单日涨幅)风险/彩票~3%

反直觉发现

  1. 短期反转是最重要的特征,但它的换手率也最高(月度翻转)→ 交易成本极高 → 扣成本后贡献大幅缩水
  2. 技术面 + 微结构特征的贡献 > 基本面特征。这与传统金融理论的直觉相反(传统理论认为基本面才是驱动力)
  3. 宏观特征的贡献极小(<3%)。这意味着 ML 模型主要在做截面选股,而不是时间序列择时

5.3 对 tradeSys 特征工程的具体建议

基于上述分析,tradeSys 的特征优先级应该是:

优先级特征类别具体特征获取难度预期贡献
P0价格动量12-2 月动量、1 月反转低(价格数据即可)
P0波动率已实现波动率、特质波动率、VIX低-中
P1微结构成交量异常、买卖价差、Amihud 非流动性中-高
P1基本面核心ROE、毛利/资产(Novy-Marx)、投资率中(需财报数据)
P2情绪新闻情绪、社交媒体情绪高(需 NLP 管道)低-中
P3宏观收益率曲线斜率、信用利差

关键原则:从 P0 开始,不要在 P2/P3 上花过多时间。用 5 个好特征 + XGBoost > 50 个普通特征 + 深度学习


六、对 tradeSys 的具体建议

6.1 ML 在 tradeSys 中的角色定位

┌─────────────────────────────────────────┐
│            tradeSys 架构                 │
│                                          │
│  信号层(传统策略)                        │
│  ├─ 趋势跟踪(已研究)                    │
│  ├─ 动量策略(已研究)                     │
│  └─ 事件驱动(已研究)                     │
│            │                             │
│            ▼                             │
│  ML 增强层(本报告建议)                   │
│  ├─ 信号置信度评估(XGBoost 分类器)       │
│  ├─ 波动率预测(ML 回归,R²>40%)         │
│  └─ 因子权重微调(LightGBM + SHAP)       │
│            │                             │
│            ▼                             │
│  执行层(风控 + 仓位管理)                 │
│  └─ Kelly/Half-Kelly 仓位(已研究)        │
└─────────────────────────────────────────┘

6.2 建议的技术栈

组件推荐理由
ML 框架LightGBM(首选)/ XGBoost训练快、可解释、对小数据友好
数据处理pandas + polarspolars 在大数据集上速度 10-100x
特征存储简单 parquet 文件对个人交易者无需 feature store 基础设施
回测vectorbt 或自建(Python)避免 zipline/backtrader 的过度工程化
验证方法Purged K-Fold + Walk-Forward时间序列不能用普通 cross-validation
过拟合检测DSR(Deflated Sharpe Ratio)+ Combinatorial Purged CV见回测框架报告
可解释性SHAP values理解模型在不同 regime 下的行为
不推荐TensorFlow/PyTorch(对本场景过重)、AutoML(超参数过拟合风险)、云端 GPU(不需要)

6.3 实施路线图

阶段时间目标风险
Phase 02 周搭建数据管道(价格 + 基本面),计算 P0 级特征数据质量问题(复权、退市处理)
Phase 14 周用 LightGBM 训练波动率预测模型,纳入 tradeSys 风控过拟合(用 walk-forward 验证)
Phase 24 周训练信号置信度评估器,与传统策略集成ML 的「否决」可能过于激进
Phase 38 周用纸面交易(paper trading)验证全系统纸面交易不反映真实滑点
Phase 4持续小仓位实盘,监控 ML 组件的 drift心理压力可能导致过早放弃

6.4 必须避免的坑

  1. 不要从 NN/Transformer 开始。先证明 LightGBM 在你的数据上能工作,再考虑复杂模型。如果 LightGBM 不 work,大概率是数据/特征问题,不是模型不够复杂
  2. 不要追求学术论文级 R²。你的目标是正的净夏普比,不是最高的 R²。一个 R²=0.15% 但低换手的模型可能比 R²=0.40% 但高换手的模型赚更多钱
  3. 不要忽视基准比较。你的 ML 策略必须打败两个基准:(a) 买入持有(SPY),(b) 简单的动量/价值组合。如果打不败,ML 没有增加价值
  4. 不要用未来数据做特征标准化。所有预处理(标准化、PCA、特征选择)必须在每个时间点只用该时间点之前的数据
  5. 不要在全部资本上部署 ML 策略。建议 ML 增强部分最多影响总仓位的 20%,80% 由传统策略控制

检查线自检

事实来源列表

编号核心事实来源
F1NN3 月度样本外 R²=0.40%,OLS R²=-2.4%Gu, Kelly & Xiu (2020), Review of Financial Studies, 33(5), 2223-2273
F2ML 预测力集中于小市值低流动性股票Avramov, Cheng & Metzker (2023), Journal of Financial Economics
F3ML 策略月换手率 30-60%Novy-Marx & Velikov (2016), Review of Financial Studies
F4纳入交易成本后净夏普从 >2 降至 <0.5Chen, Pelger & Zhu (2024), Journal of Finance; DeMiguel et al. (2020), RFS
F520 次试验即可在噪声中找到夏普 >2Bailey, Borwein, Lopez de Prado & Zhu (2014), Notices of the AMS
F6ML 模型固定窗口 5 年后衰减到基线Israel, Kelly & Moskowitz (2020), Journal of Financial Economics
F7波动率预测 R² >40%Bollerslev, Hood, Huss & Pedersen (2018), Journal of Econometrics
F8短期反转是 GKX 框架最重要特征Gu, Kelly & Xiu (2020), SHAP analysis, 原论文 Table 7
F9特征集变化的影响是模型变化的 2 倍Coqueret & Guida (2020), Machine Learning for Factor Investing
F10前 10 特征贡献 ML 预测力的 ~70%Tobek & Hronec (2021), SSRN working paper
F11CNN 从 K 线图中提取趋势信号在扣成本后显著Jiang, Kelly & Xiu (2023), Journal of Finance
F12带交易成本约束的均值-方差优化净夏普接近无约束 MLDeMiguel, Martin-Utrera, Nogales & Uppal (2020), RFS
F1365% 异象用原始方法无法复现Hou, Xue & Zhang (2020), Review of Finance
F14Campbell & Thompson: 月度 R²>0.5% 即可产生可观经济收益Campbell & Thompson (2008), Review of Financial Studies
F15LightGBM 净夏普系统性优于深度学习Coqueret & Guida (2020), 实证对比章节

独到见解摘要

编号见解为什么独到
I1ML 在 S&P 500 大盘股上的样本外 R² 接近零——预测力集中在你最不想交易的股票大多数 ML 教程不区分股票池,给人「ML 能预测市场」的错觉
I2散户级交易成本下,ML 策略几乎必然亏钱(月换手 40% + 30bps 单边 = 年化亏 19%)大多数论文假设 5-10bps 机构成本,不提散户场景
I3深度学习在 R² 上的 0.06pp 优势在纳入换手率、训练稳定性和交易成本后完全消失「深度学习更强」是 ML 在金融领域最大的误导之一
I4ML 波动率预测的 R² >40%,是收益率预测(<1%)的 40 倍以上——这是 ML 在 tradeSys 中真正可靠的应用大多数人专注于用 ML 预测收益率方向,忽略了波动率预测这个更肥的低垂果实
I5特征集变化的影响是模型变化的 2 倍——5 个好特征 + XGBoost > 50 个普通特征 + 深度学习违反「更复杂模型 = 更好表现」的直觉,但有实证支持
I6ML 应该作为传统策略的「否决器」而不是「信号生成器」——只做减法不做加法大多数 ML 在交易中的教程都假设 ML 独立输出信号,这是一条死路
I7固定窗口训练的 ML 模型 5 年就会衰减到基线——必须持续重训练,但重训练又增加换手这是一个几乎无解的工程困境,很少被讨论

本报告与 tradeSys-factor-models.md 互补:因子模型报告提供了 Gu et al. 的基本数字,本报告深入展开实战鸿沟。与 tradeSys-backtest-pitfalls.md 互补:回测报告覆盖通用过拟合检测,本报告聚焦 ML 特有的五种过拟合形式。