金融研究失败的最常见七个原因
López de Prado 金融机器学习和量化研究七个失败模式的实用解读,附能经受数据、成本和变化市场考验的修复方法。
失败是基准率
大多数金融研究失败不是因为研究人员不能拟合模型。它失败是因为研究过程回答比投资过程所问更容易的问题。回测问规则能否解释历史样本。组合问规则能否存活于噪声数据、执行成本、变化 regime、风险限制和修复每个失望月的诱惑。
Marcos López de Prado 的“机器学习基金失败的最常见七个原因”演示直率关于该差距(López de Prado 2017)。各版本标题略有不同,但七个反复出现的失败熟悉:对方法理解不足、数据过拟合、风险管理不足、忽视市场动态、测试不足、无法适应以及沟通或团队结构差。
这些不是七个奇异机器学习 bug。它们是七个聪明团队建立无人能安全交易的有说服力伪品的方式。
1. 团队不理解方法
模型不是理解数据生成问题的替代品。团队可以使用随机森林、梯度提升器或神经网络因为方法时尚,然后发现其特征包含未来信息、其标签重叠、且其验证分割无意义。
理解意味着知道算法假设什么、优化什么以及其错误如何出现在组合中。在不平衡标签上训练的分类器可能有优秀准确率同时无法预测重要罕见事件。回归可以最小化平方误差同时产生成本后无用的排名。模型可以统计上胜任且经济上无关。
修复不是禁止复杂模型。它是要求机制和诊断。定义预测目标、其时间范围和信息集。解释为什么特征应在决策时间可用。将模型与简单基线比较。按 regime、流动性和横截面桶检查错误。
团队理解的简单模型通常比无人能询问的复杂模型是更好研究工具。复杂性应购买指定目标的衡量改进,非更漂亮的笔记。
2. 数据过拟合隐藏在每个管道中
数据过拟合发生在模型或研究工作流适应历史样本中的噪声时。López de Prado 将这视为中心失败模式,它应位于任何量化检查清单的前部。
假设研究人员测试 个真实 Sharpe 零的策略。如果每个策略的估计 Sharpe 有标准误 ,预期最大值约为
最好结果因此可以无任何真实 alpha 为正。搜索可以通过模型超参数、特征子集、标签时间范围、整体过滤器、组合权重、执行假设或会议上展示哪张图表发生。
交叉验证只在它包括整个选择程序时帮助。在验证集上选择最佳模型然后报告该验证分数的研究人员已在精神上将验证集用于训练。最终保留应保持密封直到程序被冻结。
修复是分离发现、选择和确认。记录每次试验。使用时间感知分割。必要时清除重叠标签和禁运边界观察。估计有效试验数并应用 deflated Sharpe 或联合测试。如果策略不能存活校正,称它为假设。
3. 风险管理在回测后到达
许多研究团队将风险管理视为在 alpha 发现后添加的包装器。该顺序颠倒。策略收益分布、杠杆、流动性和尾部行为是策略的一部分。
设组合收益为
带权重 。期望收益不足。组合可以有正均值和毁灭性左尾。短波动率策略可以产生美丽 Sharpe 直到样本中隐藏的风险出现。
风险管理应指定暴露限制、杠杆、集中度、流动性、止损或减仓规则(如合适)、压力场景和损失升级。它也应指定当模型数据缺失或过时时会怎样。每日产生交易但不能解释缺失价格的模型不稳健;它是乐观的。
修复是在优化策略前在冲击下评估它。压力测试波动率、相关性、价差、借券和市场缺口的变化。测试组合能否解卷。从现实执行计算回撤,不只从理论收市到收市收益。使用承认偏度和序列依赖的风险测度。
风险管理不能创造 alpha。它可以防止小 alpha 估计被用来证明大且脆弱头寸合理。
4. 市场变化而笔记静止
在历史数据上训练的模型假设特征和收益之间的关系稳定到有用。金融市场无义务尊重该假设。
当交易所改变规则、流动性提供者改变行为、监管改变卖空、指数产品重定向流量或技术缩短信息延迟时,市场结构变化。因子可以衰减因为它变得众所周知。宏观关系可以反转因为政策 regime 变化。模型可以持续产生预测而其特征含义已移动。
忽视动态也包括忽视测量过程。基本特征可能被修订,供应商可能更改回填约定,可投资整体可能向更大公司转移。模型可以显得退化因为数据管道改变,或显得有效因为历史数据以有利方式被修订。
修复是监控分布、暴露、特征可用性和按 regime 的表现。使用 walk-forward 测试和滚动诊断。不要在每个新观察上自动重新训练;那可以追逐噪声。定义与信息半衰期、模型稳定性和漂移证据绑定的重新训练策略。
静态模型可以适当。静态假设应是选择而非意外。
5. 测试太窄
测试不足意味着模型在它被设计来表现好的一个环境中被测试。测试可能使用一个样本、一个整体、一个基准、一个成本模型、一个参数化和一个表现度量。
有用测试矩阵只变化对声称重要的维度。对横截面因子,那可能包括市场、样本时期、流动性组、组合权重和成本假设。对预测模型,那可能包括标签时间范围、缺失数据模式、执行延迟和 regime 窗口。
泛化数学不是保证。如果测试样本有 观察且收益依赖,有效样本大小低于 。如果策略评估重叠持仓,一个月收益可能包含远少于日历所示的独立赌注。
使用表现分布而非单一标题。设 表示资产整体 和时期 下的表现。报告
与离散度、最差情况和成本后盈利的单元分数一起。策略在一个单元中工作并在其他十一个中失败不稳健因为其平均值有小数点。
修复是在查看结果前设计测试矩阵,然后保留未触及确认路径。更多测试不自动改进研究;预先指定测试改进。
6. 团队无法适应或持续适应
“无法适应”听起来像过拟合的对立面,但两个错误都发生。从不更新的模型可以变得陈旧。每当表现失望时更新的模型变成将噪声转为复杂性的机器。
正确适应节奏遵循机制。财务报表信号不应每分钟重新训练。微观结构信号不应依赖十年滚动窗口无理由。在评估表现前定义适应规则。
模型版本应有日期、代码修订、数据快照、特征模式、参数状态和改变原因。如果新模型在回撤后被引入,记录它在回撤后被选择。不要将其结果拼接到旧回测。
使用变点诊断、特征漂移测度和滚动样本外表现来决定适应是否合理。Regime 检测器应作为其自己模型验证。“图表看起来不同”是观察;不是重新训练策略。
适应也适用于执行。价差、借券和容量可以在信号本身改变前改变。模型仍可预测收益而策略不再支付捕获它们所需的交易。
7. 沟通和团队结构破坏研究
量化策略是交接链:数据、研究、组合构建、执行、风险和监控。接口处歧义创建隐藏模型变化。研究人员假设执行团队可以收盘交易。执行团队用次日开盘。表现报告将两者标记为相同策略。
差沟通也隐藏关于假设的分歧。一个人认为因子是风险补偿,另一个认为它捕捉慢信息。团队随后以两个不兼容的存在原因报告同一策略。
修复是与模型一起移动的研究规格。包括特征时序、整体、信号方向、再平衡计划、成本假设、约束、基准和版本。要求实施团队签署可交易的内容。保持变更的决策日志。
团队结构重要因为独立审查应在资本处于风险前发生。研究人员不应是唯一能复现结果的人。风险审查员应在策略实时后才发现借券约束。干净接口非企业装饰;它是对抗沉默乐观的控制。
共同线索:研究是系统
七个失败看起来分开直到你跟随策略从想法到订单。方法理解缺失导致无效标签。无效标签创造表面技能。过拟合选择脆弱模型。弱测试漏掉脆弱性。忽视市场动态侵蚀信号。差风险管理放大损失。差沟通阻止团队诊断原因。
系统需要显式合同:
- 数据是点时且版本化;
- 特征有可用时间戳;
- 标签不当重叠训练和测试信息;
- 模型选择被记录;
- 组合构建可执行;
- 成本在结果被庆祝前包括;
- 风险限制是目标的一部分;
- 生产行为对照研究假设被监控。
这不是过度工程。它是知道回测和实时策略是否相同对象的最低要求。
最小研究评分卡
对每个候选,记录:
| Area | 问题 |
|---|---|
| 方法 | 团队能解释为什么模型应泛化吗? |
| 数据 | 每个特征在决策时间可用吗? |
| 搜索 | 尝试了多少模型、特征和规格? |
| 风险 | 在缺口、价差、相关性和流动性压力下会发生什么? |
| 测试 | 结果能存活时间、整体和成本变化吗? |
| 适应 | 什么触发重新训练或退休? |
| 沟通 | 另一个人能复现和交易规则吗? |
评分卡不替代判断。它防止判断悄悄改变成功定义。
小漂移监控
监控应比较实时特征分布与参考时期,不假装一个统计量诊断每个失败。
import numpy as np
reference = np.array([0.2, 0.4, 0.5, 0.6, 0.8])
live = np.array([0.1, 0.2, 0.3, 0.4, 0.5])
reference_q = np.quantile(reference, [0.1, 0.5, 0.9])
live_q = np.quantile(live, [0.1, 0.5, 0.9])
print(live_q - reference_q)
真实监控需要更长样本、缺失检查、群体稳定测度、表现归因和漂移出现前设定的警报阈值。点是操作的:如果无人测量假设,模型不在适应;它在暗中老化。
要点
López de Prado 的七个原因有用因为它们将讨论从模型时尚移开。常见失败不是机器学习太强。是金融研究太容易看起来有说服力且太难保持诚实。
理解方法。记录搜索。管理尾部。尊重变化市场。测试多于冠军路径。按规则适应。沟通被交易的精确对象。
如果策略通过那些测试,它仍可能亏钱。那是金融。如果它失败它们,损失不是意外。是设计选择。
将七个原因转为关卡
当每个失败模式有必须通过的关卡时研究过程变得更可靠。第一关卡是概念性的:写目标、信息集、机制和基线。如果团队不能说出模型预测什么和为什么,它不应继续调整。
第二关卡是数据:验证点时可用性、标识符、缺失、退市、修订和整体成员资格。存储原始记录及其时间戳样本。模型不能比其特征表更诚实。
第三关卡是搜索:记录每个候选、参数、特征集和评分规则。声明最终保留。估计试验计数或用联合测试。无锦标赛记录的冠军是轶事。
第四关卡是风险:压力测试杠杆、集中度、相关性、波动率、缺口、价差、借券和容量。在优化目标中包括约束。选择后添加的风险限制可以变成隐藏模型变化。
第五关卡是验证:运行 walk-forward 或清除时间序列测试,比较简单基线,并报告窗口级结果分布。保持保留密封直到整个管道冻结。
第六关卡是适应:定义什么触发重新训练、重新校准、节流或退休。版本化每个改变。不要称新模型为相同策略因为它继承旧代码。
第七关卡是沟通:让第二个人复现结果并描述实时实施。交接应包括信号时序、再平衡规则、成本假设和失败行为。如果实施团队需要猜测,研究未完成。
这些关卡故意无聊。它们将模糊置信变为可检查证据。团队通过它们后仍可能亏钱。它至少会知道损失来自显式风险还是隐藏假设。
- López de Prado, M. (2017). “The 7 Reasons Most Machine Learning Funds Fail (Presentation Slides).” SSRN Working Paper 3031282.
- López de Prado, M. (2018). Advances in Financial Machine Learning. Wiley, 第 1、7 和 11-15 章.
- Aronson, D. (2006). Evidence-Based Technical Analysis. Wiley, 第 9-12 章.
- White, H. (2000). “A Reality Check for Data Snooping.” Econometrica, 68(5), 1097-1126.
- McLean, R. D. and Pontiff, J. (2016). “Does Academic Research Destroy Stock Return Predictability?” The Journal of Finance, 71(1), 5-32.