为什么实盘不如回测?如何检验多重测试导致的回测过拟合
回测(Backtesting)是量化策略研发中的核心环节,也是量化投资和传统主动投资的关键区别。回测指将一个可被准确刻画的投资策略,在历史模拟环境中进行模拟交易,并利用该策略在历史上的表现推断其在未来的表现,从而对多组策略进行取舍,以形成最终的投资决策。本文在关于回测过拟合的简单介绍基础上,进一步讨论交易策略历史表现的量化评估指标,重点考虑回测过程中多重测试导致的假阳性。量化交易使用计算机程序实现自动化交易,其与传统主动投资的关键区别在于依赖”回测”验证所提出策略的有效性并对其预期性能作出估计。在计算机算力增长与算法发展的背景下,研究人员实施的回测次数增多,多重测试导致假阳性频繁出现,回测期内貌似显著的最佳策略缺乏在样本外数据上的泛化能力。这一现象被称为回测过拟合,如何估计发生回测过拟合的概率,并调整夏普比率等预期业绩指标,以正确反映多重测试的影响下策略的真实性能成为一个新兴的研究方向。
绪论
股票交易通过买卖公司股票,利用市场波动性优化资本的投资回报。量化股票交易策略是指能够在市场中自动调整持仓以战胜市场的交易代理,即决定以什么价格和多少数量交易哪些股票的计算机程序。随着计算机技术发展,机器学习算法与数据可用性不断进步,量化交易策略层出不穷,市场规模也不断扩大。
回测(Backtesting)是量化策略研发中的核心环节,也是量化投资和传统主动投资的关键区别。回测指将一个可被准确刻画的投资策略,在历史模拟环境中进行模拟交易,并利用该策略在历史上的表现推断其在未来的表现,从而对多组策略进行取舍,以形成最终的投资决策。
然而通过回测验证所提出的策略有效性这一方法论正受到挑战。原因在于计算机算力飞速增长,研究人员得以在同一段历史数据中进行成千上万次实验,发现假阳性的概率也因此增加[@rupert2012simultaneous]。具体来说,如果一名量化交易策略的研究人员从经济学规律角度出发编写了一种策略,回测表现良好,那么这种策略很可能真的有效。但如果他是随意编写了一组交易规则,然后随机搜索数十万种超参数配置下策略表现最佳的情况,那么他最终也会得到一个回测表现良好的量化策略。最后他可以宣称最佳策略显著有效,甚至上线实盘交易。但是这种策略是在多重测试影响下因为随机性出现的,不包含对市场中可获利模式的归纳,因此未来表现一定会大幅衰减。
投资策略在未来表现弱于历史回测表现的现象称为”回测过拟合”(Backtest Overfitting)。当我们考虑回测过拟合问题,我们的核心关切是:候选策略中表现最佳的策略有多大概率是多重测试产生的虚假发现?如果策略在样本外数据上性能衰减无可避免,怎样调整它在回测期间的性能指标,才能更准确的反映未来实际性能?随着回测过拟合问题愈发受到重视,近年来已有一系列策略评估算法被提出,但都有不足之处。本文旨在提出并实现一种新的回测过拟合评估算法,对策略在未来的表现作出更合理的估计。
量化交易与回测过拟合
量化交易是由算法给出交易指令的自动化软件交易系统,其目标是利用统计数学、计算机算法和计算资源实现投资组合风险最小化与收益最大化。随着计算机技术发展,机器学习算法与数据可用性不断进步,量化交易蓬勃发展,市场规模不断扩大。
量化交易的工作流程包括六个阶段:数据收集,数据预处理,交易分析,投资组合构建,回测和执行[@ta2018prediction]。其中策略回测阶段是量化交易与传统投资管理方法的关键区别,策略研发人员在确定具体交易规则并获取可用历史数据后通过仿真模拟,计算该策略在历史市场环境下的盈亏情况[@chan2021quantitative]。策略在回测期间的统计值,例如年化收益率、夏普比(Sharpe Ratio)和信息系数(Information Ratio)会成为策略评估和选择的依据。
一般来说,量化交易的未来实际表现与历史回测表现并不一致,并且策略的实际性能表现策略通常弱于在回测期间的性能。例如,文献[@suhonen2017quantifying]复现了当时已发表的215个另类beta策略,所有策略在回测期(策略发表前)的夏普比中位数为1.20,而在回测期之后的测试数据上,夏普比中位数减少至0.31,衰减约73%。
文献[@bailey_pseudo-mathematics_2014]首次讨论了这一策略在样本内数据上表现出色却在样本外表现不佳的现象,并把它称作回测过拟合。其中样本内(in-sample, IS)数据是指用于开发这一策略所用到的历史数据,对于数据驱动的策略来说同时包括训练集、验证集以及所有用于回测的数据,样本外(out-of-sample, OOS)数据指策略开发中没有用到的数据,通常是未来数据。”过拟合”则是从机器学习领域借用的概念,用来描述模型针对特定样本优化而没有提升泛化性能。
论文[@bailey_probability_2016]首次在交易策略选择的背景下给出了回测过拟合的形式化定义。考虑希望通过回测在策略\(S_1,…,S_K\) 中选择最优策略的过程,对于给定的性能度量(如夏普比),策略在样本内和样本外的表现分别表示为向量\(\mathbf{R} = (R_1, R_2, …, R_K)\) 和\(\mathbf{\overline{R}} = (\overline{R_1}, \overline{R_2}, …, \overline{R_K})\), 用向量 \(r, \overline{r}\) 表示 \(\mathbf{R}, \mathbf{\overline{R}}\)中元素的排序。例如有3个策略参与回测,以夏普比作为性能指标,且\(\mathbf{R}^c = (0.5, 1.1, …, 0.7)\)和 \(\mathbf{\overline{R}}^c = (0.6, 0.7, …, 1.3)\)。那么此时\(r = (1,3,2), \overline{r}=(1,2,3)\)。在上述的选择过程背景下,我们可以定义回测过拟合。
在一个策略集合中,如果具有最优样本内性能的策略在样本外的性能低于中位数,那么称这一策略选择过程发生了过拟合,
$$ \sum_{i=1}^{K}{E[\overline{r_i}|r_i=K]Prob[r_i=K]} < K/2. $$
量化策略研发人员不仅需要定性分析策略是否过拟合,还需要定量地评估策略过拟合的概率和策略在样本内数据上的性能指标的调整系数,以更好地选择模型。在贝叶斯意义上回测过拟合不是确定性的事实,我们定义回测过拟合的概率(probability of backtest overfitting, PBO),$$ PBO = \sum_{i=1}^{K}{Prob[\overline{r_i} < K/2 | r_i=K]Prob[r_i=K]}. $$
我们为获得对未来业绩的现实估计,需要从样本内夏普比率中扣除的百分比定义为Haircut,
$$HC = 1 - \frac{E[SR_{OOS}]}{SR_{IS}}.$$
对于策略夏普比在实测期间的衰减程度,在业界常用 \(HC=0.5\)的经验法则。[@harvey_backtesting_2015]
回测过拟合出现的重要原因是多重检验。当研究人员在相同数据集上进行多重测试时,发现假阳性的概率会随着测试次数增加而增加[@rupert2012simultaneous]。在随机性的作用下,投资策略在样本内的优异表现来源于对数据的过度拟合而不是对真实规律的归纳,样本外性能衰减。如今计算机算力与数据可用性飞速发展,研究人员可以在有限的金融时间序列上测试大量交易策略,这也使得出现回测过拟合的概率大幅提升。文献[@bailey_pseudo-mathematics_2014]推导了在每次实验夏普比独立且\(\hat{SR} \sim \mathcal{N}(0,1)\) 的情况下,最佳结果与实验次数\(N\)的关系,
$$ E\left[\max _{N}\right] \approx(1-\gamma) Z^{-1}\left[1-\frac{1}{N}\right] +\gamma Z^{-1}\left[1-\frac{1}{N} e^{-1}\right], $$
其中 \(Z\)是标准正态分布的累积分布函数, \(\gamma \approx 0.5772156649…\) 为欧拉常数。当一个研究者尝试了十次独立的策略回测,即使所有实验的夏普比期望都是零,最优策略样本内的夏普比期望也达到了1.57。多重测试导致的回测过拟合是量化交易领域一个亟待解决的问题,近年来也愈发受到重视,一系列算法被提出以评估回测过拟合的程度。
策略性能与回测过拟合评估算法
传统方法
夏普比(SR)
夏普比(sharpe ratio, SR)[@Sharpe1994The; @1966Mutual]是评估投资组合性能的经典指标,事前(ex-ante)夏普比的定义是平均超额收益(超过无风险资产的部分,如政府债券)与其标准差之比,
$$SR=\frac{E\left[R-R_{b}\right]}{\sqrt{\operatorname{var}\left[R-R_{b}\right]}},$$
其中 \(R\)为资产收益,\(R_b\)代表无风险回报。为了比较不同交易频率的策略性能,一般需要计算夏普比的年化形式。在每日超额收益\(r_t\) 独立同分布且 \(r_t \sim \mathcal{N}(\mu, \sigma^2)\)的假设下,年化夏普比的计算公式[@lo2002statistics]为
$$SR^a = \frac{\mu}{\sigma}\sqrt{q},$$
其中 \(q\) 为每年观察周期数,例如每年243个交易日。
在量化研究中策略的事前夏普比是无法预知的,所以用回测期间策略的实际表现计算事后(ex-post)夏普比作为策略的性能度量,事后夏普比的计算公式与事前夏普比相同,但用实际实现的收益计算,
$$\widehat{SR}^a = \frac{\hat{\mu}}{\hat{\sigma}}\sqrt{q},$$
其中\(\hat{\mu}, \hat{\sigma}\)分别是样本的均值和标准差。通常认为 \(\widehat{SR}>1\)代表了较好的策略性能。
基于t检验的方法
检验单一策略性能显著性的传统方法是应用t检验,例如策略\(S_c\)在\(T\)个观测期内收益的均值为\(\mu_c\),方差为\(\sigma_c\),计算t值
$$ TR = \frac{\mu_c}{\sigma_c\sqrt{T}},$$
双侧p值$$ p^S = Prob[|X|>TR], $$
其中 \(X\) 是服从自由度为 \(T-1\)的t分布的随机变量。这里隐含的假设是收益服从正态分布。如果计算出的p值\(p^S\)足够小,例如0.01,那么t检验的结论是该策略极大概率发现了正收益。
对于给定t值可以计算其所要求的最小年化夏普比,
$$\widehat{SR}_k^a = \frac{\mu_k}{\sigma_k}\sqrt{q} = TR_k \sqrt{\frac{q}{T}},$$
通过这个式子可以完成年化夏普比与t值的相互转换。概率夏普比PSR
论文[@lo2002statistics]证明了在收益服从正态分布假设下,当回测期内收益采样个数\(T \rightarrow{\infty}\),事后夏普比\(\widehat{SR}\)渐进收敛于正态分布,
$$\widehat{S R} \stackrel{a}{\longrightarrow} \mathcal{N}\left[S R, \frac{1+\frac{S R^{2}}{2 q}}{T}\right].$$
[@mertens2002comments]扩展了上述结论,论证了收益独立同分布但不满足服从正态分布条件时,事后夏普比仍满足正态分布$$ \widehat{S R} \stackrel{a}{\rightarrow} N\left(SR, \frac{1+\frac{1}{2} S R^{2}-\gamma_{3} S R+\frac{\gamma_{4}-3}{4} S R^{2}}{T}\right), $$
其中\(\gamma_3\)为收益偏度, \(\gamma_4\)为收益峰度。
基于上述结论,[@bailey_sharpe_2012]提出概率夏普比(Probabilistic Sharpe ratio, PSR),PSR定义为策略未来实际夏普比\(SR\)超过给定基准\(SR^*\)(可以设置为0)的概率
$$ \begin{aligned} \widehat{P S R}\left(S R^{*}\right) & = \operatorname{Prob}[S R \leq \widehat{S R}] \\ & = \int_{-\infty}^{\widehat{S R}} z\left(S R \mid S R^{*}, \hat{\sigma}_{\widehat{S R}}\right) \cdot d S R \\ & = Z\left[\frac{\left(\widehat{S R}-S R^{*}\right) \sqrt{T-1}}{\sqrt{1-\widehat{\gamma}_{3} \widehat{S R}+\frac{\hat{\gamma}_{4}-1}{4} \widehat{S R}^{2}}}\right], \end{aligned} $$
其中 \(Z\) 表示标准正态分布的累积分布函数。
PSR是从概率角度提出的策略性能评价指标,与直接使用 \(\widehat{SR}\) 作为对未来SR的估计相比,不仅考虑 \(\widehat{SR}\)的大小,还考虑了收益结构(偏度、峰度)和采样个数对\(SR\)分布的影响。具体来说,对于给定的基准性能 \(SR^*\) ,策略在回测期间 \(\widehat{SR}\) 越高、采样点T数量越多、收益偏度越大、峰度越小,策略真实SR超过基准性能的概率就越大,即PSR越高。
针对回测过拟合问题改进后的传统方法
基于t检验的改进方法
[@harvey_backtesting_2015]指出对于单一策略夏普比的p值计算公式不能体现出研究人员对K个候选策略依次回测,直到发现显著结果的过程,提出了考虑多重测试问题的p值计算公式
$$p^M = Prob[max\{|X_i|,i=1,...,K\}>TR],$$
其中 \(X_i\)是K个服从自由度为 \(T-1\)的t分布的随机变量。对于由K个策略表现计算得出的单一p值\(p_i^S,i=1,…,K\),可以使用若干种不同的矫正方法将其转化为考虑多重测试的p值\(p^M\)。如应用Bonferroni矫正将\(p^S\)扩大K倍,
$$p^{Bonferroni}_i = min\{Kp^S_i,1 \} ,i=1,...,K,$$
类似的p值调整方法还有Holm校正和BHY方法。这些方法本质上都是随着测试次数增多,对单次p值作出更严格的限制。收缩夏普比DSR
PSR的计算公式同样没有考虑到多重测试影响下,最佳\(\widehat{SR}\)的期望随着测试次数增加的事实,导致对策略真实SR估计出现偏差。因此作者在论文[@bailey_deflated_2014]中结合\(E(max{\widehat{SR}_i})\)与实验次数的关系,提出了收缩夏普比(Deflated Sharpe Ratio, DSR),
$$ \widehat{D S R} \equiv \widehat{P S R}\left(\widehat{S R}_{0}\right)=Z\left[\frac{\left(\widehat{S R}-\widehat{S R}_{0}\right) \sqrt{T-1}}{\sqrt{1-\widehat{\gamma}_{3} \widehat{S R}+\frac{\hat{\gamma}_{4}-1}{4} \widehat{S R}^{2}}}\right], $$
其中
$$\widehat{S R}_{0}=\sqrt{Var\left[\left\{\widehat{S R}_{n}\right\}\right]}\left((1-\gamma) Z^{-1}\left[1-\frac{1}{N}\right]+\gamma Z^{-1}\left[1-\frac{1}{N} e^{-1}\right]\right),$$
N为独立实验次数。本质上,DSR是根据实验次数N与 \(\widehat{SR}\) 的方差调整PSR中要求的性能基准 \(SR^*=0\)。DSR的值表示考虑多重测试影响下,真实SR超过0的概率。
组合对称交叉验证(CSCV)
组合对称交叉验证(combinatorially symmetric cross-validation,CSCV)[@bailey_probability_2016]是在pbo框架下提出的一种PBO计算方法,该方法的整体思路把模型选择的过程重复多次,统计回测过拟合的频率,作为PBO的期望,同时拟合\(SR_{IS}\)和\(SR_{OOS}\)的关系。具体方法是多次切分数据集,模拟通过样本内表现选策略的过程。
CSCV把收益矩阵\(R^{T \times K}\)分成S个块,一半作为模拟的样本内数据\(R^{T/2 \times K}\),另一半作为模拟的样本外数据\(R^{T/2 \times K}\),一共有\(C_S^{S/2}\)种样本内/样本外组合,对每一种组合进行一次模拟的策略选择过程:根据回测过拟合定义,如果样本内的最佳策略在样本外性能低于中位数,那么此次回测计为回测过拟合,所有组合测试完成后统计回测过拟合出现的频率,作为PBO的预估值。再统计\(SR_{IS}\)与\(SR_{OOS}\)的关系,作为对未来最佳策略性能衰减的预估。
CSCV的缺点是只能对一组候选策略算出一个PBO预估值,不能对单个策略作出评价。而且它对于\(SR_{IS}\)与\(SR_{OOS}\)关系的预测明显是有偏的:考虑一组平均回报率相同的策略,每次在样本上选出的最佳策略,样本外表现大概率不佳,\(SR_{OOS}\)与\(SR_{IS}\)呈负相关。
国内的[@许睿2020基于组合对称交叉验证]复现了CSCV方法并研究了其在A股市场的应用。
基于贝叶斯推断的方法
[@witzany_bayesian_2021]提出使用贝叶斯推断评估回测过拟合的算法。文中使用随机变量对策略产生收益的过程建模,再使用马尔可夫链蒙特卡洛方法(MCMC)从参数的后验分布中采样。最后根据获得的采样,通过蒙特卡洛模拟生成新的收益矩阵,模拟策略回测、实测过程,根据模拟数据计算PBO、Haircut等指标。
文中共提出两个模型,其中第一个模型是,假设收益矩阵\(R^{T \times K}\)的每一行都服从多元正态分布,
$$R_t=[r_{t,1},r_{t,2}...r_{t,K}] \sim \mathcal{N}(\mu,\Sigma).$$
第二个模型对上述模型改进,引入服从伯努利分布的隐变量\(\gamma \sim Ber(p)\)指示策略是不是真实发现:
$$R_t=[r_{t,1},r_{t,2}...r_{t,K}] \sim \mathcal{N}(\mu^*,\Sigma),$$
其中$$\mu^*_i=\gamma_i \mu$$
这一贝叶斯相较于上述方法的重大改进是引入协方差矩阵\(\Sigma\),考虑了多策略之间的相关性。在实际策略开发过程中,由于要对相同模型进行参数搜索,策略回测结果往往是十分相关的。但其多策略每期收益服从多元正态分布的假设与实际情况有较大出入——量化交易策略会根据市场信息动态控制仓位,并不是静态的投资组合。
为什么实盘不如回测?如何检验多重测试导致的回测过拟合