昨天有读者咨询,使用sckit-learn等包实现机器学习算法的时候,如何滚动进行参数优化的问题,主要考虑到的一个问题就是滚动优化计算量比较大,如何能够更快实现的问题。
实际上,在前面的教程中,也提到过一些如何实现递进优化参数的问题,如果不考虑实现的效率,按照下面这篇文章的思路实现滚动优化是没有问题的。
68、backtrader的一些高级技巧—backtrader参数的可动态修改性与递进参数优化的实现方法
但是考虑到实际的情况,backtrader是基于python的以事件驱动为主的量化框架,python作为 解释性语言,运行效率并不是特别高,离C/C++等语言效率差了很多,所以如果用事件驱动的思路去实现滚动优化的话,耗时是非常大的。
为了提高回测效率,可以尝试一种事件驱动+向量化回测相结合的方式,向量化的回测框架,速度比较快,主要用于测试在一定时间段内,基于特征值和特定参数产生的信号造成的盈亏状况,从而在进行参数遍历之后,根据自己的方法,选择特定的参数,用于未来一段时间。在事件驱动的框架中,作为主要的回测引擎,用于控制什么时间使用向量化的回测框架去做参数优化得到想要的参数,优化得到的参数在未来多长时间内使用。
这就是目前我能想到的比较好的方式,而且理论上来说也比较容易实现。事件驱动的框架当然是最好使用backtrader,向量化回测框架可以考虑使用