El backtesting de estrategias con Python lleva mucho tiempo. ¿Hay alguna manera de acelerar esto?
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.