如何通过向量化操作提升策略回测速度?

相信很多投资者在做量化投研时都会有一种共识:量化投资领域里,成本最大的毫无疑问就是研发策略所消耗的时间成本,其中90%的时间都被消耗在因子挖掘、策略回测与优化等大型运算上。

如何提高运算程序的效率,成为了众多量化投资者面临的难题

而在Python编程中,有许多方法可以提高量化交易策略的回测速度,使用向量化操作就是一种行之有效的方法。

向量化操作是一种在整个数组或矩阵上执行操作的技术,可以大大提高代码的效率。在Python中,NumPy是一种非常流行的向量化操作库,可以加速数学计算和数据处理。当涉及到大量的计算时,我们可以尝试使用NumPy、Pandas或者其他库来进行向量化操作。

此处,我们以掘金量化终端中提供的示例策略【双均线策略(期货)】为例,尝试对其进行提速。

移动平均线是一种常用的技术分析指标,用于平滑价格数据。使用NumPy的向量化操作,可以进一步提升计算速度。

图片

示例策略第59行以及60行中,原策略代码中用到了rolling来进行滚动计算。我们可以考虑使用numpy.convolve对向量进行卷积计算,并与原策略代码进行回测对比:

1、向量化:使用np.array对prices进行向量化操作,再使用flatten进行降维;

2、卷积:使用np.convolve进行卷积计算长短均线,边缘的点进行无效化处理;

3、回测:运行回测并进行耗时比对。

修改后的代码如下:

图片

我们开始进行回测。

  • 回测时间:2023-04-17至2023-07-26

  • 回测品种:螺纹钢主力合约

  • 初始资金:10万

  • 手续费:0.0007(双边万二佣金+单边千一印花税,共千1.4,即双边万7)

  • 滑点:万分之一(双边)

结果如下图:

图片

图片

图片

通过对比发现,原均线策略回测耗时为44秒;但经过向量化操作以后,耗时降低至34秒,速度提升了22.7%,提速效果明显。但是,最大回撤以及夏普比率出现了微小的偏差。我们将均线结果print出来进行比对,结果如下:

图片

上图为均线数据的部分片段。左边是原策略的均线数据,右边是向量化操作后的均线数据。不难发现,向量化后均线数据精度更高,因此在回测结果中虽微小差异,但不会对策略总体效果造成较大影响。

除了Python内置的库之外,还有许多第三方库可以帮助加速代码。例如,当需要执行高性能数学计算时,可以尝试使用SciPy或NumPy等库;需要处理大量数据时,可以尝试使用Dask或Apache Spark等分布式计算框架。大家可以根据具体需求进行取舍。

完整代码的文件已分享至掘金量化社区,可通过下方链接前往自取:https://bbs.myquant.cn/thread/3509

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值