python 加速方法_用 Python 做策略回测,耗时很长,有什么加速办法?

刚刚优化完自己的策略和回测程序,正好来回答一下

1,升级硬件,双路服务器架构,从i7-9700K 升级到双路金牌8180M性能大概能提高7-8倍性能。能用钱解决的问题真比优化代码简单暴力多了。

2,使用 Parallel库和Ray库进行并行计算和分布式并行计算。

Parallel(n_jobs=max_usage_of_cores)(delayed(回测函数)(codelist,

frequency,

model_account,

portfolio_batch,

verbose) for frequency,

verbose,

model_account,

portfolio_batch,

codelist in codelist_grouped)

可以简单实现并发回测,同时回测CPU核心数量的标的。

3,尽量少用Pandas.DataFrame,多用numpy,非用不可的情况下少用loc,iloc赋值,多用at.,iat。尽量不要用Dataframe.Apply处理复杂函数,这里可以发掘出大概10倍性能。

4,Numba,cython重写部分模块,注意需要在函数调用时将Dataframe转为numpy和做变量声明减少LLVM推导参数类型,这里大概可以提高6-7倍性能。

5,计算指标使用向量计算,& | ~ 是向量的and or not计算,可以同时用于ndarray和dataframe,这里比for循环可以提高大概60~70倍速度。

6,尝试不同的回测引擎,Zipline和Backtrader,检查测试选择最快的,这里可以提高大约2-3倍性能,这部分我不太推荐自己写cyhton,因为金融计算夏普率年化统计滑点手续费都是比较严谨的,拥有大量的公式和处理,自己写计算结果容易和这种成熟框架的不一致。这里要调整会花费大量的时间。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值