Backtesting del mercado de valores rápido y confiable. Sugerencias de Pandas n. ° 1

Cualquier backtest de operaciones bursátiles o estrategia de inversión no está completo sin calcular el impulso de las acciones. Así que la tarea consiste en realizar dichos cálculos de forma rápida y, por supuesto, correctamente.

Por lo general, el código de programación más corto: la mayor velocidad de ejecución y la precisión mucho mejor de sus resultados. Entonces, usaremos:

Para estos cálculos, estoy usando precios de acciones históricos, que están concatenados en un DataFrame de pandas:

El conjunto de datos contiene ~ 18 millones de filas y n d 3 columnas (la elección del tipo de precio para calcular los momentos depende de sus preferencias). Para obtener los impulsos mensuales calculados para cada uno de los 5183 días de negociación y 6655 acciones, en lugar de usar bucles “for”, sugiero usar la función pandas pivot_table ():

que nos produce tal tabla resultante:

El tiempo de ejecución del código es de unos 25 segundos (depende de su hardware), lo que no está mal para crear ~ 18 millones de momentos. Finalmente, verifiquemos la exactitud de estos cálculos. Por ejemplo, el cierre ajustado de las acciones de Apple el 2/2/2000 fue de $ 3.049 y el mismo cierre el 1/3/2020 (21 días hábiles antes) fue de $ 3.454, por lo que el momento mensual para el 2/2/2000 fue de 3.049 / 3.454 = 0.8827, este valor lo vemos en la tabla anterior. La verificación de algunas filas adicionales puede confirmar la exactitud de los cálculos del código.

Si conoce la forma más rápida de obtener el mismo resultado calculado, escriba sus comentarios.