Red de conocimiento de divisas - conocimientos contables - El backtesting de estrategias con Python lleva mucho tiempo. ¿Hay alguna manera de acelerar esto?

El backtesting de estrategias con Python lleva mucho tiempo. ¿Hay alguna manera de acelerar esto?

1. Antes de comenzar la optimización, verifique el archivo de configuración para ver dónde se gasta el tiempo del programa:

python -m cProfile -o salida prof your_program

Después de ejecutarlo, se generará una salida. archivo .profile generado. A continuación, debemos analizar este archivo. En este sentido, recomiendo el artefacto SnakeViz como herramienta. La instalación es muy simple, simplemente instale Snakeviz.

Salida de Snakeviz

Después de ejecutar, se abrirá una ventana del navegador. Observe detenidamente qué funciones consumen más tiempo. ¿Es porque hay demasiadas llamadas o porque hay una? ¿Una sola llamada lleva demasiado tiempo? El enfoque de optimización es claro;

2. Reducir los cálculos repetidos y los resultados de los cálculos en caché. Eche un vistazo a functools.lru_cache.

3. Donde puedes usar la síntesis de listas sin usar for; donde se puede usar numpy, no escribas bucles ni uses pandas;

4. Si hay ticks de 40w y la cantidad de datos no es grande, se deben cargar directamente en la memoria, ¿verdad?

5. Si todavía es lento, vaya a Numba-Numba. Es más problemático de instalar, pero es muy conveniente de usar. No hay problema en aumentar la velocidad en uno o dos órdenes. magnitud;

6. Si usa Todos los paquetes compatibles con PyPy, pruebe PyPy;

7.

上篇: ¿Es mejor utilizar aceite de motor o aceite hidráulico para enfriar la máquina laminadora de roscas? 下篇: ¿Cómo empezó Luo Jiayan su negocio en Shenzhen?
Artículos populares