摘要
介绍
在武当山上,殷素素在张翠山自杀后立即自杀。她临死前告诉儿子张无忌:“永远不要相信美女。女人越漂亮,越会骗人。”在量化投资中,回测就是这样的美女。
众所周知,金融数据中的信噪比很低。当我们在回测中尝试大量的参数,或者在选股中测试大量的因素时,找到最佳的一组参数或者一个因素,总能得到非常好的结果。但这是一个很大的概率,因为他们只在复试期间对噪声进行精确建模。
“如果研究人员尝试了足够多的策略配置,后验测试总是可以满足固定样本长度的任何预期性能。”
对于给定的样本长度,只要尝试了足够多的参数配置,总能达到期望的风险收益特征。
看一个例子。
以中证500成份股为选股池,以2010年1月至2018年10月为回测期,评估不同选股因子的效果——以该因子选取的前50只股票构建的纯做多组合的最终净值评估因子。在测试了20个不同的因子后,最佳因子的净值为2.29。这20个因素的净值如下图所示。
如果测试因子从20个增加到50个,选股效果会进一步提高,最佳因子的净值会从2.29增加到2.40。下图是50个因素的选股效果。紫色加粗曲线仍然是前20个因子中最好的,红色加粗曲线是这50个因子中最好的。
最后,我们将测试次数增加到100次。在这100个因子中,最佳因子的净值为2.43,是在前50个因子的基础上进一步提高的。下图黑色加粗曲线代表所有100个因子中最好的一个的选股净值。
考虑到这些因素并不完全相关,如果把这三个因素结合起来,配合更复杂的交易算法,在回测期一定会得到更好的选股结果。但是,如果仅仅因为最终策略只使用了三个因素就认为没有过度拟合,那就大错特错了,因为这三个因素的发现背后有97次失败的尝试。
当进行多重检验时,即使效果最好的一个具有统计学意义,它是错误发现的概率仍然很高。可惜这是金融界学术界的通病。学者在顶级期刊上发表一个有效的策略或因子时,并没有告诉读者这个发现的背后有多少失败的尝试。失败的尝试越多,这个发现实际上是假的概率就越高。
当我们愿意测试不同的参数组合或者尝试不同的因素时,我们实际上只做了一件事——过度拟合。最后往往会挑出过度拟合带来的误发现。回测中过拟合的直接结果是无法在样本之外准确评估策略的效果。如果过度拟合非常严重,也就是策略本身就是针对噪音建立的,那么在实盘中可能完全无效,等待它的只有亏损。
鉴于过拟合的普遍存在和过拟合的严重后果,在回测中量化过拟合的概率是非常重要的。本文介绍了一种定量计算回测中过拟合概率的方法。
先说夏普比率。
围绕夏普比率的讨论
为了计算回测的过拟合概率,需要比较不同参数下策略的效果。为了比较不同策略的效果,必须选择合适的指标。在众多评价投资策略的指标中,夏普比率无疑是最重要的。这是下文介绍的PBO框架中使用的战略评估指标。值得一提的是,这个框架本身并不依赖于所选取的指标,因此用户也可以尝试其他评估策略的指标。学术界和工业界有一些关于后验过拟合如何夸大夏普比率的有趣讨论。这里简单梳理一下。
根据一般经验,该策略在实盘中的夏普比率为其回测期夏普比率的50%。哈维和刘定量计算了样本外不同夏普比率的“折现度”,发现了剪发与夏普比率之间的非线性关系。折扣度理发的值在0到1之间,等于1表示100%折扣,即样本外的夏普率为零。
下图来自Harvey和Liu,显示了后验测试期内不同测试次数下理发与夏普比率的关系。三条不同的曲线代表了考虑多重测试影响的三种不同方式。从图中不难看出,当样本中的夏普比率很小时,由于过拟合,折现率为1,即样本外的夏普比率为零。这种情况随着测试次数的增加而加剧。
此外,贝利和洛佩斯·德·普拉多还讨论了夏普比率膨胀的问题。在构建量化策略时,人们往往会选择一种策略类型,如趋势跟踪或统计套利,然后利用历史数据寻找给定模型下的最佳参数。在这个前提下,Bailey和Lopez de Prado假设不同参数的策略的Sharpe率满足均值为E[SR]方差为v的正态分布,在这个假设下,他们计算出从N组不同参数得到的最大Sharpe率的期望满足:
其中γ为欧拉-马斯切罗尼常数,约为0.5772;z是标准正态分布的累积密度函数。从上式不难看出,样本中的最大夏普比率随着N和v的增加而增加。
下图显示,当E[SR] = 0时,仅通过增加N和V就可以逐渐提高最佳夏普比率。增加n对应的是增加回测的测试次数,增加v对应的是漫无目的的扩大参数范围,不考虑业务基础。这些都是过度拟合的原因。
以上介绍说明,过拟合必然会高估策略的夏普率,从而影响对策略有效性的评价。因此,有必要定量计算回测中过拟合的概率。它要回答的不是一个“是”或“不是”的问题,而是对过度拟合程度的定量评价。
过拟合概率
本节介绍Bailey等人提出的框架,用于计算回测中的过拟合概率。首先,定义后验超拟合的概率。定义:假设有一个构造N组不同参数的策略,使得n*代表样本中最佳的一组参数;设SR_OOS代表样本外第N组参数的锐率,设ME[SR_OOS]代表样本外所有N组参数的中位数;过拟合后验概率的定义如下:
因为样本中存在过拟合,所以样本中的最优参数不一定是样本外的最优参数。回测PBO中的过拟合概率定义为样本外最优参数n*的锐度小于样本外所有N组参数的中值的概率。
有了PBO的定义,我们来介绍一下计算PBO的框架。它的名字是组合对称交叉验证。假设我们一共测试了N组参数,回测周期长度为t,CSCV由以下步骤组成:
第一步:首先,在回测期,我们采用运行每组参数的策略,得到T期每组参数的收益率序列,从而构造一个T × N阶的矩阵M,M的每一列代表某组参数N的T收益率序列。
第二步:将M矩阵按行划分成S个不相交的T/S × N个子矩阵。比如假设原T = 1000周期,我们可以取S = 10,把M分成10个子集,每个子集是一个100 × N阶矩阵。
第三步:从所有S中取出S/2个子矩阵,设C_s代表所有可能的组合。例如,如果S = 10,从10个子集的5个中有252个组合,C_s是这252个组合的集合。
步骤4:对于C_s中的每个特定组合C,执行以下操作:
4a。把C中包含的子矩阵放在一起,形成一个训练集J,它是一个S/2 × N阶的矩阵;
4b。把所有S个子矩阵中C不包含的所有子矩阵放在一起,形成测试集J_c,也是一个S/2 × N矩阵;
4c。在训练集J矩阵中,计算每个收益率序列的夏普率,其中夏普率最大的对应策略n*为样本中的最优策略;
4d。在对应的测试集J_c矩阵中,计算收益率序列各列的夏普比率,找出这组参数在样本外的相对排名W。W的值在0到1之间,1表示样本n*中的最优策略也是样本外的最优策略。
4e。如下定义logit变量:
根据定义,若样本外n*的表现等于样本外所有参数的夏普比率的中位数,则w = 0.5,λ = 0。
第五步:经过上一步,将得到λ的经验分布F,从中可以求出PBO:
通过考察PBO的大小,我们可以定量评估一个战略是否可靠:真正有效的战略的PBO应该更小。
CSCV的发明者之一Marcos Lopez de Prado博士在一次题为“回测中要寻找什么”的讲座中指出,这种方法有以下优点:
1.CSCV确保训练集和测试集的大小相同,以便样本内外的夏普比率具有可比性。
2.因为考虑了所有的组合,所以任何作为训练集的组合都会依次作为测试集,这样就保证了训练集和测试集的数据是对称的。所以样本外夏普率的降低只能来自于过拟合。
3.CSCV将整个T期数据划分为长度为T/S的S个子集,而不是从T期随机选取一定长度的数据,保证了策略收益的时序相关性。
4.求解PBO的全过程是无模型、无参数的;它获得λ的经验分布f,然后计算过拟合的概率,不需要任何关于PBO模型或参数的假设。
接下来,我们将通过一个例子来应用CSCV。
一个例子
在《从CTA趋势策略的表现看量化投资的挑战》一文中,我们利用15个商品期货的指数,定性分析了过去5年趋势跟踪策略的表现。本文的实证研究采用最简单的双均线策略——短周期均线多于长周期均线;短周期均线穿越长周期均线时Do 空。长周期和短周期是需要优化的两个参数。本文介绍的框架用于计算优化这两个参数时的过拟合概率。在回测中,短周期移动平均线参数SW在1到20的范围内,长周期移动平均线参数LW在SW+1到50的范围内,步长为1,因此共有790组参数。回测长度为1000个交易日。分别用这790组参数进行回测,得到每组参数下该策略在这1000个交易日的收益率序列,从而构建原始M矩阵。
用第四节介绍的CSCV框架分析M矩阵,分析中假设S = 10,所以有252对回测+测试集。在计算PBO之前先做个实验。对于每一对,得到样本内最优参数的夏普比率和样本外这组参数的夏普比率,这两个夏普比率构成一个样本点,所以总共有252个样本点。这252个点的散点图如下:
样本内最优参数的夏普率与其样本外夏普率的相关系数为-0.36;上述回归线的负斜率也表明了这种负相关。这说明,对于这种双均线趋势策略,样本内的最佳参数往往在样本外表现较差。
在进一步使用CSCV计算PBO之前,我们观察到了上图中的一些异常现象——这些散乱点的分布面积上限似乎近似位于一条直线上,这意味着这些点对应的训练集和测试集的夏普比率之和大致相同。
造成这种现象的原因是趋势策略非常依赖于价格序列的路径。在整个1000个交易日的回测期间,趋势策略赚钱的表现都集中在某个特定时间。当我们用CSCV把1000个交易日分成252个训练集和各500个测试集时,这些训练集中有相当一部分包含了趋势策略最赚钱的具体时间,这样这些训练集中的最优参数是相同的。
对于这几对训练集和测试集,它们的n*是相同的,所以它们在样本内外所有1000个交易日的收益的平均值都来自策略n*,即平均值相同。虽然这些配对中的训练集和测试集是不同的,但由于收益率的波动性在整个回测期间是相对稳定的,所以训练集和测试集中的夏普比率之和大约等于这两个序列的平均收益率之和。结合以上两点可以解释为什么这些配对样本的内外夏普比率之和非常接近。因为它们对应的n*恰好是整个复试期的最佳参数,所以这些成对的散点构成了上图中散点分布的异常线性上限。
为了减少路径依赖对判断趋势策略过拟合程度的影响,我们对CSCV进行了适当的改进,并引入了一些随机性。
在CSCV的第三和第四步中,不是考虑所有可能的组合,而是随机构造训练集和测试集。具体来说,1000的复试周期分为50个子集,每个子集20个交易日。从这50个子集中,随机选取13个作为测试集,13个作为训练集,因此训练集和测试集的长度各为260个交易日。上述过程重复250次,得到250对训练集和测试集,然后计算λ和PBO的经验分布F。
引入随机性后,重新绘制样本内最优参数的Sharpe率及其在样本外的Sharpe率散点图,原结果中异常的线性上限消失。回归方程的斜率为-0.49,表明样本内外夏普比率呈负相关。
另外,λ的经验分布f如下图所示:
由f求PBO = 0.572使用双均线构造趋势跟踪策略时,回测中过拟合的概率高达0.572。可靠策略的PBO不应该这么高。因此,在使用双移动平均线构建趋势策略时,必须格外小心。
本节中的例子表明,利用CSCV框架可以很容易地计算出PBO,从而评价一个战略是否可靠。此外,本节还花了一些时间指出趋势策略的路径依赖对CSCV结果的影响。它想强调的是,无论多么先进的统计方法,都不应该取代我们的独立思考,我们必须对自己的回测结果负责。
标签
2005年,PLoS Medicine上发表的一篇题为《为什么大多数发表的研究成果都是假的》的文章引起广泛关注。本文指出,科学界,尤其是医学界相当多的所谓显著发现是错误的。原因之一是经过大量的测试,最明显的往往是误发现。2015年,医学领域最权威的同行评审期刊之一《柳叶刀》的主编霍顿博士指出,医学领域有一半的研究结果是错误的。“反对科学的理由很简单:许多科学文献,也许有一半,可能根本就是不真实的。受到样本量小、影响小、探索性分析无效、利益冲突明显的研究的困扰,以及对追求重要性可疑的时尚趋势的痴迷,科学已经转向黑暗。”
虽然比医学界晚了差不多10年,但好在金融圈已经意识到多重检测带来了太多的错误发现。以坎贝尔·哈维(Campbell Harvey)博士和马科斯·洛佩斯·德·普拉多(Marcos Lopez de Prado)博士为代表的学者从几年前就开始呼吁解决这一严重问题,并针对多次检测导致的过高错误发现率提出了解决方案。我之前的一篇文章《最好是幸运的》梳理了Harvey博士的一些研究,本文介绍的后验中过拟合概率的量化方法是Lopez de Prado博士及其合著者提出的。
一个量化策略的提出往往要经过三个阶段:回测、模拟和实盘。后面的测试有很多门道;回溯测试的准确性对于该策略在实盘之外的表现非常重要。由于金融数据的信噪比极低,难以区分哪些是噪声,哪些是因果关系,因此在回测中会出现一定程度的过拟合。现在仅仅通过考察参数平面或者利用有限的训练集和测试集来评估过拟合的危害是远远不够的。希望学术界和业界提出的这些新方法能给我们带来更多的启发。
背面测试越漂亮,欺骗性就越大。
参考
1.贝利、D. H .和洛佩兹·德·普拉多先生。夏普比率有效边界。风险杂志,第15卷,第3–44页。2.贝利、D. H .和洛佩兹·德·普拉多先生。缩小的夏普比率:校正选择偏差、回测过度拟合和非正态性。投资组合管理杂志,第40卷,94–107页。
3.Bailey,D. H .,J. M. Borwein,M. Lopez de Prado,和Q. J. Zhu。回测过度拟合的概率。计算金融杂志,第20卷,39-69页。
4.哈维C. R .和刘y。回溯测试。投资组合管理杂志,第42卷,13-28页。
5.霍顿河。离线:什么是医学的5西格玛柳叶刀,第385卷,1380。
6.约安尼迪斯,J. P. A。为什么大多数发表的研究结果是假的。公共科学图书馆医学,第2卷,696–701。