交叉验证回测#

12.1 动机#

回测使用过去的观测来评估投资策略的样本外表现。这些过去的观测可以用于两种方式:(1) 狭义上,模拟投资策略的历史表现,就好像它过去运行过一样;(2) 广义上,模拟过去未发生的情景。第一种(狭义)方法也称为走步法(walk-forward),如此流行,以至于事实上「回测」已成为事实上的「历史模拟」的同义词。第二种(广义)方法远不那么为人所知,在本章中,我们将介绍一些执行它的新方法。每种方法都有其优缺点,都应给予仔细考虑。

12.2 走步法#

文献中最常见的回测方法是走步法(Walk-Forward, WF)。WF 是对策略过去表现的模拟。每个策略决策都基于先于该决策的观测。正如我们在第 11 章中所见,执行无瑕疵的 WF 模拟是一项艰巨的任务,需要对数据源、市场微观结构、风险管理、绩效衡量标准(如 GIPS)、多重检验方法、实验数学等有深入了解。遗憾的是,没有进行回测的通用配方。为了准确和有代表性,每个回测都必须定制化以评估特定策略的假设。

WF 有两个关键优势:(1) WF 有清晰的历史解释。其表现可以与纸面交易核对。(2) 历史是一个过滤;因此,使用尾随数据保证测试集是样本外的(无泄露),只要净化被正确实现(见第 7 章第 7.4.1 节)。在 WF 回测中发现泄露是一个常见错误,其中 t1.index 落在训练集内,但 t1.values 落在测试集内(见第 3 章)。WF 回测中不需要禁运,因为训练集总是先于测试集。

12.2.1 走步法的缺陷#

WF 有三个主要缺点:第一,只测试了一个情景(历史路径),这很容易过拟合(Bailey 等 [2014])。第二,WF 不一定代表未来表现,因为结果可能被数据点的特定序列所偏移。WF 方法的支持者通常认为预测过去会导致过于乐观的表现估计。然而,在反向观测序列上拟合一个表现优异的模型,往往会导致 WF 回测表现不佳。事实是,过拟合走步前向回测和过拟合走步后向回测一样容易,改变观测序列产生不一致结果的事实就是过拟合的证据。如果 WF 支持者是对的,我们应该观察到走步后向回测系统性地优于其走步前向对应物。情况并非如此,因此支持 WF 的主要论据相当薄弱。

为了使第二个缺点更清楚,假设一个股票策略使用 WF 在 S&P 500 数据上回测,从 2007 年 1 月 1 日开始。直到 2009 年 3 月 15 日,反弹和抛售的混合将训练策略成为市场中性的,对每个头寸的信心很低。之后,长期反弹将主导数据集,到 2017 年 1 月 1 日,买入预测将占优于卖出预测。如果我们反向播放信息(从 2017 年 1 月 1 日到 2007 年 1 月 1 日,先长期反弹再急剧抛售),表现将非常不同。通过利用特定序列,WF 选择的策略可能让我们为灾难做好准备。

WF 的第三个缺点是初始决策在总样本的较小部分上做出。即使设置了预热期,大部分信息也只被一小部分决策使用。考虑一个具有预热期的策略,使用 T 中的 t0 个观测。该策略一半的决策 在平均数据点数上做出,

这只是观测的 部分。虽然通过增加预热期可以缓解这个问题,但这样做也减少了回测的长度。

12.3 交叉验证法#

投资者经常问,如果策略遭受像 2008 年危机那样不可预见的压力情景,它会表现如何。或互联网泡沫、缩减恐慌、2015-2016 年中国恐慌等。一种回答方式是将观测分为两个集合,一个包含我们希望测试的期间(测试集),另一个包含其余(训练集)。例如,分类器在 2009 年 1 月 1 日至 2017 年 1 月 1 日期间训练,然后在 2008 年 1 月 1 日至 2008 年 12 月 31 日期间测试。我们为 2008 年获得的表现不是历史准确的,因为分类器是在 2008 年之后才可用的数据上训练的。但历史准确性不是测试的目标。测试的目标是让一个不了解 2008 年的策略承受像 2008 年那样的压力情景。

通过交叉验证(CV)回测的目标不是推导历史准确的性能,而是从多个样本外情景中推断未来性能。对于回测的每个期间,我们模拟一个知道除该期间外一切的分类器的性能。

优势

  1. 测试不是特定(历史)情景的结果。事实上,CV 测试 k 种替代情景,其中只有一种对应历史序列。
  2. 每个决策都在相等大小的集合上做出。这使得各期间的结果在用于做出这些决策的信息量方面具有可比性。
  3. 每个观测是一个且仅一个测试集的一部分。没有预热子集,从而实现了尽可能长的样本外模拟。

劣势

  1. 与 WF 一样,模拟了单条回测路径(尽管不是历史路径)。每个观测产生一个且仅一个预测。
  2. CV 没有清晰的历史解释。输出不模拟策略过去会如何表现,而是模拟它未来在各种压力情景下可能如何表现(这本身就是一个有用的结果)。
  3. 因为训练集不尾随测试集,泄露是可能的。必须极其小心地避免将测试信息泄露到训练集中。关于净化和禁运如何帮助防止 CV 上下文中的信息泄露,见第 7 章的讨论。

12.4 组合净化交叉验证法#

在本节中,我将介绍一种新方法,解决 WF 和 CV 方法的主要缺点,即这些方案测试单一路径。我称之为「组合净化交叉验证」(Combinatorial Purged Cross-Validation, CPCV)方法。给定研究者目标的回测路径数 φ,CPCV 生成产生这些路径所需的精确训练/测试集组合数,同时净化包含泄露信息的训练观测。

12.4.1 组合划分#

考虑 T 个观测在无打乱的情况下划分为 N 组,其中组 n = 1, ..., N−1 的大小为 ⌊T/N⌋,第 N 组的大小为 T − ⌊T/N⌋(N−1),⌊·⌋ 是取整函数。对于大小为 k 组的测试集,可能的训练/测试划分数为

由于每个组合涉及 k 个测试组,测试组的总数为 。由于我们计算了所有可能的组合,这些测试组均匀分布在所有 N 组中(每组属于相同数量的训练集和测试集)。其含义是,从 N 组上的 k 大小测试集,我们可以回测总共 φ[N, k] 条路径,

图 12.1 说明了 N = 6 和 k = 2 的训练/测试划分组成。有 个划分,索引为 S1, ..., S15。对于每个划分,图用叉号 (×) 标记包含在测试集中的组,未标记的组构成训练集。每组构成 φ[6, 2] = 5 个测试集的一部分,因此该训练/测试划分方案允许我们计算 5 条回测路径。

图 12.1 φ[6, 2] = 5 生成的路径

图 12.2 显示了每个测试组到一条回测路径的分配。例如,路径 1 是结合来自 (G1, S1)、(G2, S1)、(G3, S2)、(G4, S3)、(G5, S4) 和 (G6, S5) 的预测的结果。路径 2 是结合来自 (G1, S2)、(G2, S6)、(G3, S6)、(G4, S7)、(G5, S8) 和 (G6, S9) 的预测的结果,以此类推。

图 12.2 测试组到 5 条路径的分配

这些路径通过对每个组合的数据部分 θ = 1 − k/N 训练分类器来生成。虽然在 θ < 1/2 的部分上训练在理论上是可能的,但在实践中我们假设 k ≤ N/2。训练集中的数据部分 θ 随 N → T 增加但随 k → N/2 减少。路径数 φ[N, k] 随 N → T 和 k → N/2 增加。在极限情况下,通过设置 N = T 和 k = N/2 = T/2 实现最大路径数,代价是每个组合只在一半数据上训练分类器(θ = 1/2)。

12.4.2 组合净化交叉验证回测算法#

在第 7 章中,我们在 CV 的上下文中引入了净化和禁运的概念。我们现在将这些概念用于通过 CV 进行回测。CPCV 回测算法进行如下:

  1. 将 T 个观测在无打乱的情况下划分为 N 组,其中组 n = 1, ..., N−1 的大小为 ⌊T/N⌋,第 N 组的大小为 T − ⌊T/N⌋(N−1)。
  2. 计算所有可能的训练/测试划分,其中每个划分 N−k 组构成训练集,k 组构成测试集。
  3. 对于任何一对标签 (yi, yj),其中 yi 属于训练集,yj 属于测试集,如果 yi 跨越用于确定标签 yj 的期间,则应用 PurgedKFold 类净化 yi。如果某些测试样本先于某些训练样本,该类还将应用禁运。
  4. 在 个训练集上拟合分类器,并在各自的 个测试集上产生预测。
  5. 计算 φ[N, k] 条回测路径。你可以从每条路径计算一个夏普比率,从而推导策略夏普比率的经验分布(而非像 WF 或 CV 那样的单一夏普比率)。

12.4.3 几个示例#

对于 k = 1,我们将获得 φ[N, 1] = 1 条路径,此时 CPCV 退化为 CV。因此,CPCV 可以理解为 CV 对 k > 1 的推广。

对于 k = 2,我们将获得 φ[N, 2] = N−1 条路径。这是一个特别有趣的情况,因为在对数据的大部分 θ = 1 − 2/N 训练分类器的同时,我们可以生成几乎与组数 N−1 一样多的回测路径。一个简单的经验法则是将数据划分为 N = φ+1 组(其中 φ 是我们目标的路径数),然后形成 个组合。在极限情况下,我们可以为每个观测分配一组,N = T,生成 φ[T, 2] = T−1 条路径,同时对每个组合的数据部分 θ = 1 − 2/T 训练分类器。

如果需要更多路径,我们可以增加 k → N/2,但如前所述,这将以使用更小的数据集部分进行训练为代价。在实践中,k = 2 通常足以通过设置 N = φ+1 ≤ T 生成所需的 φ 条路径。

12.5 组合净化交叉验证如何解决回测过拟合#

给定一个 IID 随机变量样本 xi ~ Z,i = 1, ..., I,其中 Z 是标准正态分布,该样本的期望最大值可以近似为

其中 Z^−1^[·] 是 Z 的 CDF 的逆,γ ≈ 0.5772156649··· 是 Euler-Mascheroni 常数,I ≫ 1(证明见 Bailey 等 [2014])。现在假设研究者在表现得像鞅的工具上回测 I 个策略,夏普比率为 {yi}i=1,...,I,E[yi] = 0,σ²[yi] > 0,且 。即使真实夏普比率为零,我们也期望找到一个夏普比率为

WF 回测表现出高方差 σ[yi] ≫ 0,原因至少有一个:大部分决策基于数据集的一小部分。少数观测将对夏普比率有很大权重。使用预热期将减少回测长度,这可能使方差更高。WF 的高方差导致错误发现,因为研究者会选择具有最大估计夏普比率的回测,即使真实夏普比率为零。这就是为什么在 WF 回测的上下文中控制试验次数 (I) 至关重要。没有这些信息,就无法确定族错误率(FWER)、错误发现率(FDR)、回测过拟合概率(PBO,见第 11 章)或类似的模型评估统计量。

CV 回测(第 12.3 节)通过在相等且大数据集部分上训练每个分类器来解决该方差来源。虽然 CV 比 WF 导致更少的错误发现,但两种方法仍然从策略 i 的单一路径 yi 估计夏普比率,该估计可能高度波动。相比之下,CPCV 从大量路径 j = 1, ..., φ 推导夏普比率分布,均值 E[{yi,j}j=1,...,φ] = μi,方差 σ²[{yi,j}j=1,...,φ] = σ²i。CPCV 路径样本均值的方差为

其中 σ²i 是策略 i 跨路径夏普比率的方差, 是 {yi,j}j=1,...,φ 之间的平均非对角相关性。CPCV 比 CV 和 WF 导致更少的错误发现,因为 意味着样本均值的方差低于样本的方差,

路径越不相关 ,CPCV 的方差越低,在极限情况下 CPCV 将以零方差报告真实夏普比率 E[yi], 。不会有选择偏差,因为从 i = 1, ..., I 中选择的策略将是具有最高真实夏普比率的那个。

当然,我们知道零方差是不可实现的,因为 φ 有上界 。尽管如此,对于足够多的路径 φ,CPCV 可以使回测的方差小到使错误发现的概率可以忽略。

在第 11 章中,我们认为回测过拟合可能是所有数学金融中最重要的开放问题。让我们看看 CPCV 如何在实践中帮助解决这个问题。假设研究者向期刊提交一个策略,由从大量未公开试验中选择的过拟合 WF 回测支持。期刊可以要求研究者使用 CPCV 对给定的 N 和 k 重复他的实验。因为研究者事先不知道要回测的路径的数量和特征,他的过拟合努力将很容易被击败。论文将被拒绝或撤回。希望 CPCV 将被用来减少期刊和其他地方发表的错误发现数量。

练习题#

  1. 假设你在期货合约上开发动量策略,其中预测基于 AR(1) 过程。你使用 WF 方法回测该策略,夏普比率为 1.5。然后你在反向序列上重复回测,达到夏普比率 −1.5。如果有的话,忽略第二个结果的数学依据是什么?

  2. 你在期货合约上开发均值回归策略。你的 WF 回测达到夏普比率 1.5。你增加预热期的长度,夏普比率降至 0.7。你继续只展示夏普比率更高的结果,认为预热期更短的策略更现实。这是选择偏差吗?

  3. 你的策略在 WF 回测中达到夏普比率 1.5,但在 CV 回测中夏普比率为 0.7。你继续只展示夏普比率更高的结果,认为 WF 回测历史准确,而 CV 回测是情景模拟或推断练习。这是选择偏差吗?

  4. 你的策略随时间产生 100000 个预测。你希望通过生成 1000 条路径来推导夏普比率的 CPCV 分布。什么参数组合 (N, k) 能让你实现这一目标?

  5. 你发现一个策略在 WF 回测中达到夏普比率 1.5。你写了一篇解释证明该结果的理论的论文,并提交给学术期刊。编辑回复说一位审稿人要求你使用 CPCV 方法(N = 100,k = 2)重复你的回测,包括你的代码和完整数据集。你遵循这些指示,平均夏普比率为 −1,标准差为 0.5。愤怒之下,你不回复,而是撤回投稿,并重新提交给影响因子更高的另一期刊。6 个月后,你的论文被接受。你安慰自己的良心,认为如果发现是错误的,那是期刊的错,因为期刊没有要求 CPCV 测试。你想,「这不可能是道德问题,因为它是被允许的,而且每个人都这样做。」证明你行为的科学或道德论据是什么?

参考文献#

  1. Bailey, D. and M. López de Prado (2012): "The Sharpe ratio efficient frontier." Journal of Risk, Vol. 15, No. 2 (Winter). Available at https://ssrn.com/abstract=1821643.
  2. Bailey, D. and M. López de Prado (2014): "The deflated Sharpe ratio: Correcting for selection bias, backtest overfitting and non-normality." Journal of Portfolio Management, Vol. 40, No. 5, pp. 94--107. Available at https://ssrn.com/abstract=2460551.
  3. Bailey, D., J. Borwein, M. López de Prado, and J. Zhu (2014): "Pseudo-mathematics and financial charlatanism: The effects of backtest overfitting on out-of-sample performance." Notices of the American Mathematical Society, Vol. 61, No. 5, pp. 458--471. Available at http://ssrn.com/abstract=2308659.
  4. Bailey, D., J. Borwein, M. López de Prado, and J. Zhu (2017): "The probability of backtest overfitting." Journal of Computational Finance, Vol. 20, No. 4, pp. 39--70. Available at https://ssrn.com/abstract=2326253.