核心要点
大多数回测过于乐观,因为它们受到未经训练的眼睛难以察觉的偏差影响。生存偏差、前视偏差、数据挖掘以及对执行成本的不切实际假设,共同制造出在纸面上看起来出色但在实盘交易中失败的策略。通过理解这些陷阱并应用紧缩夏普比率和前推分析等严格方法,你可以将真正的阿尔法与统计幻觉区分开来。
回测悖论
回测是量化策略开发的基石。每个系统化交易者都从将想法在历史数据上进行测试开始。逻辑很简单:如果一个策略在过去有效,那么在市场结构没有根本性改变的前提下,它在未来应该有合理的概率继续有效。
问题在于,错误地进行回测极其容易。Harvey、Liu和Zhu在2016年发表于Review of Financial Studies的研究考察了已发表的因子发现的全貌,并得出结论:大多数可能是假阳性。作者们认为,考虑到学术文献中测试的因子数量之庞大,传统的统计标准(t统计量大于2.0)过于宽松。他们建议将标准提高到t统计量3.0以上——这一标准会排除大多数已发表的异常现象。
这是一个令人警醒的发现。如果在顶级期刊发表论文的专业学者产出的结果大多是虚假的,那么控制更少的个人和机构回测几乎肯定更糟糕。
生存偏差
生存偏差可能是最广为人知的回测错误,但它仍然困扰着策略开发。当回测使用仅包含存活到样本期末的证券的数据集,而排除了退市、破产或被收购的证券时,就会产生这种偏差。
其影响是系统性和方向性的:生存偏差总是让回测看起来比现实更好。Elton、Gruber和Blake(1996)估计,生存偏差每年将共同基金收益膨胀约0.9个百分点。在股票回测中,这种效应可能达到每年1到2个百分点,因为策略往往持有那些退市概率不成比例地高的小盘股或困境股票头寸。
原则上解决方案很简单:使用包含退市证券且有适当收益调整的无生存偏差数据库。CRSP、包含退市收益的Compustat,以及FactSet或Bloomberg等供应商的时点数据库提供了这种覆盖。困难在于成本——干净的时点数据价格昂贵,这就是为什么许多个人研究者仍然使用有偏差的数据集。
前视偏差
前视偏差发生在回测无意中使用了在交易决策时本不可用的信息时。这比生存偏差更加微妙,通常也更难检测。
常见来源包括在财务报表数据的实际发布日期之前使用该数据。一家公司的第四季度盈利可能在2月报告,但许多数据库将数据标记为12月。使用12月标记的数据进行1月交易的回测是作弊——那些信息当时还不存在。
另一个频繁的来源是指数成分。如果你在当前的标普500成分股上回测策略,你就隐含地知道哪些股票足够成功以至于被纳入指数。正确的方法是使用时点指数成分,仅交易在每个历史日期实际属于指数的股票。
甚至价格数据也可能引入前视偏差。使用包含未来股票拆分和股息的调整收盘价可能会微妙地扭曲信号。解决方案是在未调整数据上计算所有信号,仅在收益计算中应用调整。
数据挖掘与多重检验问题
数据挖掘偏差——也称为数据窥探或p值操纵——可以说是最危险的陷阱,因为它最难完全避免。每次测试策略的一个变体,你就消耗了一个统计自由度。测试足够多的变体,你将不可避免地在纯随机数据中找到一个看起来令人印象深刻的策略。
考虑White(2000)的思想实验:如果你在同一个数据集上测试100个独立的策略变体,每个的假阳性率为5%,你预计会发现大约5个纯粹由于偶然而看起来统计显著的策略。测试1,000个变体,你将找到大约50个。研究者随后发表其中最好的一个,真诚地相信自己发现了阿尔法。
这个问题在金融领域的规模是惊人的。McLean和Pontiff(2016)研究了97个已发表的股票市场异常现象,发现发表后收益平均下降了26%,在调整了学者为复制或扩展原始发现而进行的发表后数据挖掘后,下降幅度达到58%。
紧缩夏普比率
Bailey和Lopez de Prado(2014)提出了一个严格的解决方案:紧缩夏普比率(DSR)。DSR根据进行的试验次数、收益的偏度和峰度以及样本长度来调整策略的观测夏普比率。
直觉很简单。如果你在得出最终规格之前测试了200个策略变体,最好的那个具有正期望收益的概率远低于其独立t统计量所暗示的水平。DSR计算在考虑所有试验后,观测夏普比率超过零的概率。
一个从500次试验中选出的夏普比率为1.5的策略,其DSR调整后的概率可能低于50%——这意味着它真正具有正期望收益的概率不到掷硬币的概率。这是一个强有力的现实检验。
不切实际的执行假设
即使没有统计偏差的回测也可能通过不切实际的执行假设产生误导。
交易成本。 许多回测假设零或最低交易成本。实际上,成本包括佣金、买卖价差、市场冲击和滑点。对于高频策略,这些成本主导收益。即使是月度再平衡的投资组合,现实的成本假设也可能将夏普比率降低0.2到0.4。
市场冲击。 回测隐含地假设你的交易不会移动价格。这对小规模投资组合大致成立,但在规模扩大时就会崩溃。一个在100万美元规模下有效的策略在1亿美元时可能没有收益性,因为仅买入压力就会将价格推向不利方向。Almgren和Chriss(2001)提供了市场冲击建模的基础框架。
流动性。 回测通常假设你可以在历史价格下交易任何规模。现实中,流动性差的股票可能有宽价差和浅盘口。集中在微型股的策略可能显示出惊人的回测收益,但在实践中无法交易。
卖空约束。 许多策略需要空头头寸,但借入成本、定位要求和卖空限制在不同市场和时期之间差异巨大。韩国和印度股票市场有特别严格的卖空规则。
样本外验证
对抗过度拟合的首要防线是样本外(OOS)测试。原理很简单:使用数据的一部分开发策略,在你从未检查过的另一部分上进行验证。
常见的分割是60/40或70/30,前期用于开发,后期用于验证。策略必须在不做任何参数修改的情况下,在OOS期间表现良好。
然而,即使OOS测试也有局限性。如果你在查看OOS结果后反复修改策略,OOS期间实际上就变成了样本内。这被称为适应性数据挖掘,它会使整个练习失效。需要严格的纪律:在查看OOS数据之前完全定义你的策略,并将OOS失败视为策略不起作用的真正信号。
前推分析
前推分析是一种更复杂的方法,解决了单一OOS测试的局限性。其过程如下:
- 定义一个初始样本内窗口(例如5年数据)。
- 在此窗口上优化策略。
- 在下一个样本外期间(例如1年)测试优化后的策略。
- 向前滑动窗口并重复。
结果是一系列真正的样本外收益,每个都由仅在先前数据上估计的参数生成。将这些OOS期间连接起来,就产生了现实的绩效估计。
前推分析还揭示了策略最优参数随时间的稳定性。如果最佳回望期在连续窗口中从3个月跳到12个月再跳到1个月,策略很可能是在拟合噪声而非真正的信号。
相对于单一OOS分割的关键优势在于,前推分析将整个数据集用于优化和验证两方面,同时永远不会污染评估。它是历史数据所能提供的最接近实盘交易的近似。
构建诚实的回测:清单
构建可靠的回测需要系统性的纪律。以下清单凝练了数十年学术和实践研究的经验教训。
数据完整性。 使用包含适当退市调整的无生存偏差数据库。验证所有基本面数据是反映实际发布日期的时点数据。确保指数成分是历史的而非当前的。
信号构建。 仅使用交易决策时可用的信息计算所有信号。在信号生成和交易执行之间应用现实的延迟——至少一天,使用基本面数据的策略则更长。
执行建模。 包含基于历史买卖价差的现实交易成本。将市场冲击建模为交易规模相对于日均成交量的函数。对空头头寸应用借入成本。对流动性差的证券假设部分成交。
统计严谨性。 报告测试的策略变体数量。计算紧缩夏普比率或应用邦费罗尼校正。对单一策略要求t统计量3.0以上,大规模搜索则更高。进行前推分析而非依赖单一的样本内/样本外分割。
稳健性检查。 在多个子期间、地区和相关资产类别中进行测试。验证绩效不依赖于少数异常交易。检查因子暴露以确保收益不被已知风险溢价所解释。
谦虚。 接受即使构建良好的回测也会高估实盘表现。对回测收益应用30%到50%的折扣作为实际实施的基准预期。如果经过此调整后策略仍然具有吸引力,那么可能值得追求。
局限性
没有任何回测方法论能够完全复制实盘交易条件。体制变化、结构性断裂和拥挤效应从历史数据中本质上是不可预测的。前推分析减少但不能消除过度拟合风险。紧缩夏普比率依赖于诚实报告试验次数,这需要难以强制执行的纪律。即使诚实的回测也可能因底层市场动态变化而失败。回测与实盘表现之间的差距仍然是量化金融的核心挑战之一。
参考文献
- Harvey, C. R., Liu, Y., & Zhu, H. (2016). "...and the Cross-Section of Expected Returns." The Review of Financial Studies, 29(1), 5-68. https://doi.org/10.1093/rfs/hhv059
- McLean, R. D., & Pontiff, J. (2016). "Does Academic Research Destroy Stock Return Predictability?" The Journal of Finance, 71(1), 5-32. https://doi.org/10.1111/jofi.12365