用Python 做策略回测,耗时很长,有啥加速办法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Python 做策略回测,耗时很长,有啥加速办法相关的知识,希望对你有一定的参考价值。

1. 在动手优化之前,先profile看看,程序时间都花在哪些地方了:

python -m cProfile -o output.prof your_program
跑完之后,会生成一个output.profile文件。接下来需要对这个文件进行分析,这方面的工具我推荐SnakeViz,神器。安装非常简单,pip install snakeviz 即可。

snakeviz output.prof
运行之后,会打开一个浏览器窗口,好好看看,哪些函数耗时最多,耗时是因为调用次数太多呢,还是因为单次调用耗时长,明确优化重点;
2. 减少重复计算,缓存计算结果。看看 functools.lru_cache。
3. 能用list comprehension的地方,不要用for;能用numpy的地方,不要手写循环,不要用pandas;
4. 看你的回测,40w个tick的话,数据量不算大,应该是直接load到内存里的吧?
5. 还是慢的话,上Numba — Numba,就是安装麻烦一些,使用起来非常方便,速度提高一两个数量级没问题;
6. 如果你用的包PyPy都支持的话,试试pypy;
7. Cython、c module,上面的都没效果的话,这个是最后的候选方案了。
参考技术A   少用for,尽量用numpy/pandas的向量化方法。
  少用自己写的python方法,先看看numpy /pandas是不是已有现成的功能。
  有几个numpy 的加速包,比如numexpr.
  安装Intel MKL.
  最后,可以讲关键部分用c/c++实现。
  如果无法避开python的for,建议使用Numba来提速,理想情况下可以达到和numpy向量化差不多的速度。

以上是关于用Python 做策略回测,耗时很长,有啥加速办法的主要内容,如果未能解决你的问题,请参考以下文章

用Python 做策略回测,耗时很长,有啥加速办法

6个方法解决Python策略回测耗时问题

用 Python 基于均线交叉策略进行回测

用Python徒手撸一个股票回测框架

用Python编程借助现有量化平台编写股票交易策略和回测分析

用Python编程借助现有量化平台编写股票交易策略和回测分析