回测效果如何评估?

文献来源Campbell R. Harvey and Yan Liu. Backtesting. Journal of portfolio management, 2015. 

推荐原因:量化实践中的过拟合问题一直饱受诟病,在最新的学术文献中不少学者已经开始反思学术界各类α因子是否只是数据挖掘的产物,一些文章尝试提出更加严格规范的α因子挖掘框架。我们选取了一篇颇具代表性的论文,探究其中关于克服回测过拟合问题的一些技术方法。日常量化实践中研究人员会进行大量实验并选取其中最好的一种进行效果展示,这个过程会带来较大的过拟合问题,本文提出了一种考虑测试次数的策略效果评价调整方法。

1、简介

通常来讲,为了评估某一交易策略的回测结果,实践中经常将计算出的夏普比率按0.5打折处理作为样本外实践的预期值。这个折扣数值一般基于数据挖掘后的经验法则,本文的目的即为搭建一种分析方法来决定这个折扣数值的大小。

我们的框架依赖于多次检验方法的统计理论。假设你有一些新数据,记为因变量Y,并且你认为自变量X能解释Y。接着你进行统计检验,发现在95%的置信水平下,X和Y间有显著的相关关系,t检验值为2。我们将这个过程称为一次检验。接着我们希望解释自变量X1、X2至X100和因变量Y间的相关关系。这种情况下,你不能再用同样的显著性水平。而Harvey和Liu的研究发现,随着自变量数目的增加,t检验值大小递增。那么该选择多大的显著性水平呢?

接下来介绍本文所研究的方法。任一给定的策略都会产生夏普比率,我们将夏普比率转变为t检验值。假设t检验值为3,尽管这一数值在某一检验中是高度显著的,但在多次检验中情况会发生改变。为了计算p值,我们还需要对之前测试的数目进行假设。假设调整后的p值为0.05,这种情况下调整后的t检验值为2,基于此,我们设定新的夏普比率。原始夏普比率和调整后的夏普比率之间的百分比差值即为“折扣”。

我们发现,常规做法将折扣定为50%是不正确的,测试次数与折扣比例的内在关系并不线性。最高的夏普比率调整后改变的少而一般的夏普比率调整后改变极大。

同时,本文的研究也提供了一些有用的启示。首先,高夏普比率可能是异常回报的结果,折扣系数太高并不合适。其次,夏普比率未必能控制风险,策略的波动性可能无法反映真实的风险。重要的是,我们的方法也适用于因为使用因子模型而产生的信息比率。第三,在多重测试框架中,有必要确定适当的显著性水平,例如,应该选择0.10还是0.05?第四,需要对多次测试方法进行选择。我们给出了三种方法的结果以及这些方法的平均值。最后,需要一些判断来确定测试次数。

2、方法

2.1 单一测试和夏普比率

2.2 多次测试后修正夏普比率

3、多次测试框架

3.1 第一类错误

3.2 FWER下的修正P值

 3.3 FDR下的修正P值

方法还有如下不同:1. 分析的目的是不同的。我们的研究重点在于识别产生非零回报的策略组,而Lopez de Prado则评估适合于样本的特定策略的相对性能。例如,当有一组因素都为真时,在我们的多次测试下框架下,具有最小t-比率的策略仍可能被拒绝。2.我们的方法基于单个测试统计量,该统计量总结了策略在整个样本上的性能,而他们的方法以多种方式对整个样本进行划分和连接,每种方式对应于人工的“保持”周期。因此,我们的方法更符合多重测试的统计文献,而他们的工作更多地涉及样本外测试和交叉验证。第三,Harvey和刘(2015)中的扩展统计框架只需要检验统计量,而他们的工作很大程度上依赖于每一个策略的时间序列。虽然数据密集,但在Lopez de Prado方法中,没有必要对返回的数据生成过程做出假设。因此,他们的方法更接近机器学习文献,而我们更接近于计量经济学文献。最后,PBO方法评估策略选择过程是否容易过度拟合。它不与任何特定的性能统计相关联。我们主要关注夏普比率,因为它们直接与t统计量联系在一起,因此p值是多个测试调整所需的输入数据。只要其他性能统计信息也有概率解释,我们的框架可以很容易地被推广到合并其他性能统计信息。

3.5 样本内vs样本外多次测试

本文的多次测试是基于样本内回测,实际上,样本外测试(OOS)也常被用在多种策略选择中。

但OOS测试也有局限性。1.如果某一次测试失败,研究人员修改策略后再次测试,那么第二次测试很可能不是样本外测试;2.样本外测试仅在概率意义上成立。3.考虑到交易策略包含了经济变量,因此使用历史数据的样本外测试都不是真正意义上的样本外测试。

另一个本文的多次测试模型可以解决的关于OOS的问题是:第一类错误(错误发现)和第二类错误(遗漏发现)的权衡。例如,假设我们有1000个样本,将样本分成两半并研究100个不同的策略,其中我们发现了10个有潜力的策略,接着我们用这10个策略进行OOS测试并发现两个策略有效。但是值得注意的是,这种研究方法是有遗漏的。

为了解决这个问题,我们将样本分成两组,一组90个,一组10个,其中我们发现了15个有潜力的策略。虽然这种更长时间的样本内研究过程减少了发生第二类错误的可能性,但更短的样本外研究过程也提供了更少的可信结论。

在我们的观点中,最有潜力的研究方式是将两种研究方法结合起来。理想情况下,我们希望投资策略能既通过小样本的OOS测试也能通过全样本的多次测试。但问题是如何处理被遗漏的真实发现。补救方法是:我们可以先进行IS测试,然后用OOS测试来得出结论,同时我们对全样本进行多次测试。最后我们找出IS/OOS测试和多次测试后得出的样本数据的交集。

4、应用

4.1 三种策略

为了解释修正后夏普比率的效果,我们测试了三种投资策略。所有这些策略都是美国股票截面的多空0头寸组合。这三种策略分别为:收益-价格比(E/P)、动量(MOM)和β因子策略.

计算修正后的夏普比率有两个数值非常重要:一是原始夏普比率数值,二是测验次数。为了突出这两种因素的影响,我们只分析最简单的独立情况。

由上图看出,三种策略之中,基于E/P的策略有最低收益,月平均收益率为0.43%,标准差为3.47%,夏普比率为0.43。单一测试的p值为0.003,超过基准5%。但是进行多次测试后,p值增加至0.029。

修正后夏普比率值与原始数值相关。在这三种投资策略中,夏普比率的范围从0.43至0.78,且对于不同的原始夏普比率值,所打折扣也非线性。例如,当测试次数为50时,对于盈利最弱的E/P策略来说折扣接近50%,但对于盈利最好的BAB策略来说折扣仅为7.9%。

4.2 新策略的夏普比率修正

4.3 交易策略的最低盈利能力

在显著性水平给定(例如0.05)的情况下,我们的方法可以计算出投资策略的最小月平均收益率。不过为了得出结果,我们需要样本数量和测试次数等数据。

Table2中举了一个例子:我们有四个不同的样本数量和三种不同水平的年化波动率,并假设总测试次数为300。结果表明,单一测试和多次测试下收益率差距较大。例如,单一测试中,240个样本和10%的年华波动率导致了0.365%的最小月平均收益率;然而,对于BHY来说,月收益率为0.616%。

5、结论

我们的研究方法分为如下几步:1.将夏普比率转变为t检验值;2.确定合适的显著性水平,即p值;3.基于新的p值,将相对应的t检验值转变为修正后的夏普比率,该比率是在考虑了数据挖掘后进行多次测试得到的。

本文的方法可用于确定投资策略的最小收益率。通过在我们提供的开放代码中输入显著性水平、样本数量、测试次数等数据,可以得到该策略的最小平均月收益率。

当然,对于某一策略的样本外检验可以清楚地评价该策略的可行性。对于一些策略来说,模型可以用新数据或不同市场上的数据进行测试。但是,对于大多数交易策略来说,仅仅只有样本外检验是不够的。本文的方法可以在实际情况中帮助投资者对策略的可行性进行分析,进而做出投资决策。

常规来说,为了评估某一交易策略的回测结果,实践中经常将计算出的夏普比率按0.5处理作为样本外实践的预期值。这个折扣数值一般基于经验,本文的目的即为搭建一种分析方法来决定这个折扣数值的大小。

我们的框架依赖于多次检验方法的统计理论。假设你有一些新数据,记为因变量Y,并且你认为自变量X能解释Y。接着你进行统计检验,发现在95%的置信水平下,X和Y间有显著的相关关系,t检验值为2。我们将这个过程称为一次检验。接着我们希望解释自变量X1、X2至X100和因变量Y间的相关关系。这种情况下,你不能再用同样的显著性水平。而Harvey和Liu的研究发现,随着自变量数目的增加,t检验值大小递增。那么该选择多大的显著性水平呢?

接下来介绍本文所研究的方法。任一给定的策略都会产生夏普比率,我们将夏普比率转变为t检验值。假设t检验值为3,尽管这一数值在某一检验中是高度显著的,但在多次检验中情况会发生改变。为了计算p值,我们还需要对之前测试的数目进行假设。假设调整后的p值为0.05,这种情况下调整后的t检验值为2,基于此,我们设定新的夏普比率。原始夏普比率和调整后的夏普比率之间的百分比差值即为“折扣”。

我们发现,常规做法将折扣定为50%是不正确的,因为多次测试后得到的结果并不成线性关系。最高的夏普比率调整后改变的少而边际夏普比率调整后改变极大。

同时,本文的研究也提供了一些启示。首先,高夏普比率可能是非正常回报的结果,例如,期权式策略具有高的前负偏斜。处理这些非正常回报是未来研究的主题。其次,夏普比率不一定控制风险。也就是说,战略的波动性可能无法反映真实的风险。重要的是,我们的方法也适用于因为使用因子模型而产生的残差的信息比率。第三,在多重测试框架中,有必要确定适当的显著性水平,例如,应该选择0.10还是0.05?第四,需要对多次测试方法进行选择。我们给出了三种方法的结果以及这些方法的平均值。最后,需要一些判断来确定测试次数。

来源:量化先行者   作者:吴先兴

推荐阅读:

1.一个量化策略师的自白(好文强烈推荐)

2.市面上经典的量化交易策略都在这里了!(源码)

3.期货/股票数据大全查询(历史/实时/Tick/财务等)

4.干货| 量化金融经典理论、重要模型、发展简史大全

5.干货 | 量化选股策略模型大全

6.高频交易四大派系大揭

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python回测分析系统源码是一种用Python编写的程序代码,用于实现金融领域的回测分析功能。回测是指通过历史数据来模拟和评估某种投资策略的效果。分析是指对回测结果进行定量和定性的评估和解读。 Python回测分析系统源码主要包括以下几个方面的内容: 1. 数据获取和处理:通过调用金融数据接口,获取所需的历史数据,并进行数据清洗和处理,使其适合进行后续的回测分析。 2. 策略编写和回测:根据特定的投资策略规则,编写相应的策略代码,并在历史数据上进行回测回测的过程是模拟策略在历史数据上的买入和卖出操作,并记录相应的交易结果和收益情况。 3. 统计和评估:对回测结果进行统计和评估,包括计算投资组合的收益率、最大回撤、夏普比率等指标,以及绘制相关的图表,如收益曲线、累计收益图等。 4. 结果可视化:利用Python的数据可视化库,将回测结果以图表形式展示,便于用户直观地了解策略的优劣和风险状况。 5. 参数优化和策略改进:根据回测结果和评估指标,对策略进行参数优化和改进,以寻找更优的投资策略。 总的来说,Python回测分析系统源码是一套用于金融领域回测分析的程序代码,通过获取和处理历史数据、编写策略代码、进行回测评估等步骤,帮助用户评估和改进投资策略,提高投资决策的精度和效果

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值