已发表因子的选择偏差:Harvey-Liu-Zhu 论点
为什么已发表的因子目录不是真相目录:Harvey、Liu 和 Zhu 的多重检验论证、316 变量因子动物园,以及决定什么值得投入资本的实际标准。
令人不安的标题
已发表的因子不是发现的自然法则。它是一个经过搜索过程、审稿过程、编辑过程和引用过程后存活的结果。这些过滤器不是中性的。它们选择吸引人的 t 统计量、整洁的故事,以及看起来比平均水平更好的结果。Campbell Harvey、Yan Liu 和 Heqing Zhu (2016) 的论文让选择问题无法忽视。
他们的目录包含 316 个已发表的变量,这些变量曾被提出来解释股票收益的横截面。这个数字不是存在的因子数,而是已发表的声明数。这个区别听起来学究气,直到你记起研究过程被设计来发表正面发现。空结果墓地很少在文献中可见,因为空结果很少被邀请赴宴。
实际结论不是每个因子都是假的。它是,一旦研究社区测试了数百个相关思想, 的常规阈值就过于宽松。Harvey、Liu 和 Zhu 主张更高的门槛,通常总结为新因子的 t 统计量约 3.0,具体阈值取决于检验的数量和依赖性(Harvey, Liu, and Zhu 2016)。
316 个变量代表什么
316 个变量跨越熟悉的特征,如规模、价值、动量、盈利能力、投资、发行、应计、流动性、分析师行为,以及许多不那么有名的构造。它们不是独立实验。几个是同一会计信息的变换。其他是戴不同标签的表亲:账面市值比、收益价格比、销售价格比和现金流价格比都讲估值,但它们的检验仍然是寻找模式的独立机会。
这是值得做出的第一个区分:
- 因子是收益中共同变化的经济或统计来源。
- 因子声明是论文关于变量预测收益的陈述。
- 已发表因子是发表通过的声明。
第三类是被选择的。如果研究人员测试足够多的特征、投资组合、样本、基准和标准误选择,已发表集合将包含异常大的统计量,即使潜在效应适中。文献因此可能看起来丰富而潜在信噪比差。
Fama 和 French 早期因子工作没有因为后来研究人员测试更多变量而变得错误。问题不同:一旦框架包含数百个声称的添加,下一个添加的举证责任必须考虑搜索历史。一个 t 统计量为 2.1 的新变量可能有趣。如果研究社区已隐式尝试了几十个附近的变量,它就不是强证据。
假装独自的单检验 p 值
对简单多空组合,让因子 的月度收益差为 。平均差是
常规检验报告
在理想化零假设下, 近似标准正态。双边 5% 检验在 (常四舍五入到 2.0)时拒绝。对单个预先指定的假设,这规则合理。在 316 个假设之后它不是保持合理的魔法法则。
暂时假设所有 316 个因子有零真实期望收益且检验统计量独立。每个检验有概率 产生名义显著结果。假阳性预期计数因此为
至少一个假阳性的概率为
该概率实质上是 1。有趣问题不是文献是否包含几个幸运赢家。而是表面文献中有多少是被选择的运气。
独立性是简化假设,不是因子研究的描述。相关检验改变有效检验次数,但它们不使问题消失。如果二十个定义都是估值的噪声测量,它们不是二十个独立掷硬币。它们也不是一个。正确调整介于两者之间,找到那个有效数需要判断。
Bonferroni 作为钝器
Bonferroni 校正控制家族错误率,即至少犯一次错误拒绝的概率。如果期望家族水平是 且有 个检验,将每个 p 值与下式比较
对 和 ,
对双边正态检验,对应临界值约
该临界值严厉。它也清晰地说明了这一点:在单检验约定下看起来印象深刻的结果,在考虑获得它的机会数量后,看起来普通。
检验相关时 Bonferroni 保守。如果两个检验几乎重复,将它们视为完全独立收取太多统计租。Holm 的逐步下降程序在保持家族控制的同时改进了原始 Bonferroni 规则。错误发现率程序如 Benjamini-Hochberg 回答不同问题:在我们称为显著的发现中,假发现的预期份额是多少?这对探索可能合适,但决定稀缺资本放在哪里的组合经理可能更喜欢更严厉的家族解释。
Harvey、Liu 和 Zhu 不简单地说“除以 316 然后回家”。他们的框架用因子发现历史和检验之间可能的相关性来推导更实际的阈值。难忘的建议是新提出的因子通常应清除约 3.0 而不是 2.0 的 t 统计量。确切数字依赖于上下文。方向不是。
为什么因子动物园比目录大
316 个已发表的变量是检验数的下界。对每篇进入印刷的论文,可能有未发表的变量失败。在一篇论文中,可见因子可能是几个候选定义中最好的。研究人员经常把特征描述为仿佛在观察收益前就已指定,而实际路径涉及尝试替代的极值处理规则、样本窗口、组合排序、权重方案和基准。
称有效尝试次数为 。如果零假设下估计 t 统计量是独立标准正态,预期最大值约增长为
对 ,该粗略预期约 3.0。一旦包括极值修正,确切有限样本值更小,但方向是重要部分:大搜索中最好看的统计量可以很大而没有真实信号。
发表过程增加另一选择层。编辑偏好有清晰结果的论文。审稿人要求稳健性检验,但如果设计在看到结果后改变,那些检验可能变成额外搜索。读者引用易于解释和有利记忆的因子。文献因此是赢家档案,不是研究尝试的无偏样本。
这就是为什么 p 值不能在没有其来源的情况下被解释。在预先指定检验中得到的 p 值 0.03 不等同于尝试定义一年后得到的 p 值 0.03。页面上的数字可能匹配。证据意义不匹配。
结果的贝叶斯读法
多重检验常被教导为对 p 值的修正,但更深层的问题是先验概率。假设候选变量中只有部分 有经济上有意义的预测能力。设检验对真因子有功效 ,对噪声有类型 I 错误 。显著结果的阳性预测值为
如果 小,假阳性主导,即使检验技术上校准良好。例如,对 、功效 、,
在这些假设下只有约 64% 的显著发现是真的。如果真正有用的新因子的先验流行率是 2%,阳性预测值降到 25% 以下。确切数字是说明性的,不是文献的估计,但它们显示为什么“p < 0.05”不是因子真实的概率。
更高阈值有帮助因为它降低 。独立样本外证据有帮助因为它提高通过第一筛选的候选的有效先验。经济理论有帮助因为它在检验运行前使零假设不那么可信。单独都不足够;它们一起改变后验几率。
什么存活什么不存活
13% 数字是警告标签,不是定罪因子清单。严格校正可以拒绝真实但小的因子,特别是在样本短或检验有噪声时。家族错误控制被设计来避免错误发现,所以它牺牲功效。一个未通过 Bonferroni 的因子未被证明是假的。它只是在该标准下未被证明。
该区别在资产定价中重要。一些效应经济上真实但在特定样本中太小而无法产生惊人 t 统计量。其他效应统计上强但差幅、市场影响、短借费、能力限制和延迟后无法交易。一个因子可以真实但仍是差投资。相反,因子可以在有噪声样本中看起来弱但仍有用作为多样化组合的一个组件。
明智反应是分离三个问题:
- 变量在报告样本中是否与收益相关?
- 这种相关性是否可能多于选择运气?
- 残差效应是否足够大且稳定以在成本后交易?
Harvey、Liu 和 Zhu 主要锐化第二个问题。McLean 和 Pontiff 通过展示异常收益如何在样本外和发表后衰减来应对第三个问题。将任一论文视为丢弃所有因子的许可证错过要点。它们在要求更好的过滤器。
实际校正工作流
对新的因子项目,在运行最终检验之前写下研究族。该族可能包括所有估值代理、所有回看期、或所有从同一经济思想派生的候选信号。计算可见检验并估计隐藏的。如果你不能计算它们,报告这种不确定性而不是假装计数是一。
然后运行几层证据:
- 报告原始估计和名义 p 值。
- 在声明的研究族内应用 Holm 或 Bonferroni。
- 如果项目是探索性的,报告错误发现率结果。
- 陈述用于选择最终规格的试验次数。
- 预留真正未触及的时期用于确认。
- 估计净现实成本和融资后的收益。
- 显示跨越合理规格的完整分布,不只是冠军。
有用的实现记录选择之前的每个候选结果。数据表应包含信号名称、样本、组合规则、基准、成本假设、平均收益、t 统计量以及规格是否预先声明。如果笔记的第一个版本只包含赢家,研究过程已丢失其记忆。
import numpy as np
from scipy.stats import norm
p_values = np.asarray([0.001, 0.012, 0.031, 0.048, 0.20])
alpha = 0.05
order = np.argsort(p_values)
cutoffs = alpha / (len(p_values) - np.arange(len(p_values)))
rejected = np.zeros(len(p_values), dtype=bool)
for rank, index in enumerate(order):
if p_values[index] <= cutoffs[rank]:
rejected[index] = True
else:
break
print(rejected)
print(norm.ppf(1 - alpha / (2 * 316)))
代码故意无聊。这是特点。多重检验校正不是研究项目应该表达其创造力的地方。
工作标准
对今天发现的因子,t 统计量 2.0 应被视为线索。接近 3.0 的 t 统计量更严重但仍非交易系统。具有强经济动机、稳定单调组合、跨时间和市场持续性、未触及的保留样本以及净成本表现的因子,即使原论文未清除完美统计障碍,也值得关注。无理论、单一幸运样本、t 统计量 2.4 的因子值得怀疑而非更大头寸。
因子动物园不是空的。它只是人口过多。Harvey、Liu 和 Zhu 给量化一个有用习惯:在问因子是否显著之前,问研究过程有多少机会让它看起来显著。这个问题没新 alpha 名字那么光鲜。它也更可能省钱。
如何使用数字而不滥用它
13% 存活数字最好被视为研究程序的先验。它说新因子诞生在拥挤邻里。研究人员应假设名义 t 统计量是乐观的,直到因子通过独立检验。它不是说因子在测试前就被判死刑。
有用的决策规则是将证据分到三个桶中。只有名义 t 统计量的因子是发现。存活声明的多重检验族并有稳定后续样本的因子是候选。还存活成本、能力和合理机制的因子是可部署证据。标签阻止研究对话直接从表格跳到头寸。
族应围绕经济思想而非变量名定义。如果假设是“投资者对慢速移动的盈利能力信息反应不足”,那么毛利率、营业利润、修正及相关会计代理属于同一族。测试一个代理并称其他四个为“无关的稳健性检验”是低估搜索的便利方法。
最有用的输出可能是空结果。如果一族估值代理失败严格校正和未触及的时期,团队已学到不再花六个月调整断点。研究时间是资本。防止另一轮数据挖掘的校正有正期望值,即使它不产生交易。
最后,报告依赖假设。316 个变量但有效计数 60 的因子列表支持不同于 316 个几乎独立信号库的阈值。如果有效计数不确定,显示敏感表。关于不确定性的精度比作为神圣算术呈现的单一阈值更可信。
实际标准简单:新因子必须解释它为什么存在、有多少机会让它看起来好、以及当原样本停止帮助时发生了什么。该标准会拒绝一些真实但弱的效应。它会拒绝远多假信心,这是昂贵部分。
- Harvey, C. R., Liu, Y., and Zhu, H. (2016). “…and the Cross-Section of Expected Returns.” The Review of Financial Studies, 29(1), 5-68. doi:10.1093/rfs/hhv059.
- Aronson, D. (2006). Evidence-Based Technical Analysis. Wiley, 第 9-12 章.
- Benjamini, Y. and Hochberg, Y. (1995). “Controlling the False Discovery Rate.” Journal of the Royal Statistical Society: Series B, 57(1), 289-300.
- Holm, S. (1979). “A Simple Sequentially Rejective Multiple Test Procedure.” Scandinavian Journal of Statistics, 6(2), 65-70.
- López de Prado, M. (2018). Advances in Financial Machine Learning. Wiley, 第 1 章和第 11-15 章.