backtrader高级walk forward多股滚动回测

许多朋友在做策略参数优化时,都陷入了一个误区,那就是简单地在历史数据上执行参数优化,发现最优参数下,策略绩效极好,然后使用这个最优参数投入实盘,这样做基本等于自杀,过拟合的可能性太大了。

稍微好一点的做法,是将历史数据分层成两部分,一部分是训练集,另一部分是测试集。在训练集上做参数优化,然后拿到最优参数后,在测试集上回测,看看回测效果如何,如何好,就投入实盘,如何回测效果不好,就继续修改策略。这样做,比较浪费数据,测试量也不够大。

更好的评价参数优化效果的方法,是所谓walk forward滚动回测的方法。

这里,以上图所示这个小例子,介绍滚动回测的原理。

(1)训练阶段

首先,把数据按时间顺序划分为5组,然后开始迭代,进入训练阶段:在迭代1,组1,2作为训练集,组3作为测试集,在训练集上执行参数优化回测,确定最佳参数(注意,这时暂时不在测试集上执行回测)。然后在迭代2,在训练集组2,3上执行参数优化回测,确定最佳参数。在迭代3,在训练集组3,4上执行参数优化回测,确定最佳参数。这样就得到对应三次迭代的三组最佳参数。

(2)测试阶段

把3,4,5组测试数据连接起来,作为一组数据送入策略,策略内next方法迭代到每根bar时,要识别该bar的时间,如果是组3的数据,则应用迭代1确定的最佳参数来计算指标,如果是组4的数据,则应用迭代2的最佳参数来计算指标,如果是组5的数据,则应用迭代3的最佳参数,来计算指标。测试集回测结束得到的绩效指标作为参数优化的最终绩效评价指标。

虽然网上有一些backtrader做滚动回测的文章和代码,但都没有正确实现如上算法。特别是有些算法是在每个测试集上单独进行测试回测,这样例子中要进行3次回测,这种回测是有问题的,比如在进行测试集组3的回测时,在结束日临近下的单,可能要到组4才能成交,单独回测无法很好地处理这个问题。再比如在进行组5的回测时,一开始会缺少计算指标所需的历史数据,因此会浪费一部分起始数据来预热指标。网上另外一些滚动回测只能处理单股的情况,无法处理多股场景。

我们在
《扫地僧 Backtrader 给力教程系列二:量化回测与实盘交易高级篇》已完美实现了高级walk forwalk多股滚动回测,大家可参考教程学习使用。

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地僧量化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值