El mito del Rally navideño
Como no podía ser de otra forma, si voy a escribir algo en vísperas navideñas, no puedo no hablar de la navidad y el espíritu navideño, si bien parece raro relacionar esto con la bolsa, no lo es tanto..
No me pregunten cómo se originó, pero por alguna razón existe un mito bolsero de un supuesto "rally navideño", algunos explican que puede originarse en temas fiscales, otros en un cierto espíritu optimista de estas fechas, en fin, sea cual fuera la razón que intenten aludir para darnos una explicación de algún fenómeno, lo mejor es siempre desconfiar y sacar nuestras propias conclusiones
Voy a ser sincero, lo primero que me vino a la mente ayer cuando un lector me preguntó por este mito fue "bueno, vamos a demostrar estadísticamente que es una pavada y nada mas que un simple mito"
Mi postura ante cualquier comentario que intente incidir en el comportamiento de la gente ante situaciones en la bolsa es siempre el mismo en realidad: desconfiar.
Y los invito a que tomen el mismo camino, así venga de la persona que mas respetan en el mundo de la bolsa. Es más, desconfíen de esto que están leyendo ahora mismo, no me crean, intenten siempre ponerse en la vereda opuesta, eso los va a llevar indefectiblemente a tener que buscar un razonamiento propio, no vale desconfiar "porque si" tienen que buscar argumentos duros, refutar de alguna manera científica lo que les dicen.
Con esa postura empecé a buscar argumentos para demostrar que el rally navideño es puro mito, pero lamentablemente no encontré la forma de refutarlo, de hecho, encontré (para mi sorpresa) alguna leve evidencia de que el mito tiene un sustento estadístico cierto
Bueno, al menos, le doy el beneficio de la duda, lo cual, partiendo de la base inicial donde lo había considerado "una pavada", ya es algo, al menos para mi.
Pero basta de cháchara (sarasa como le decimos en Argentina) y vamos a los números duros
La historia semana a semana del SP500
Hago un pequeño disclaimer antes que nada, en mis artículos me referiré por lo general al índice de acciones de USA por dos motivos, por un lado porque es un índice referente, y por otro lado, porque es un índice que tiene mucha historia y accesible de forma gratuita para todo el mundo
El objetivo principal de este blog es difundir herramientas quantitativas a nivel popular, asimismo con el uso de Python para realizar cálculos quantitativos, con lo cual valoro siempre herramientas de fácil acceso para todos y sobre todo gratuitos como el SDK de yfinance que nos brinda data histórica de casi 100 años del SP500 gratis
Ya se que yahoo no es precisamente la mejor fuente de datos, tiene sus pequeños errores, pero es muy práctica y está al alcance de todos, por eso uso esta herramienta
Hecha esas salvedades, veamos que nos dicen los números respecto al supuesto "rally navideño"
Para comenzar nos bajamos todos los datos del SP500 desde 1928, y calculamos el rendimiento de cada semana, hay muchas formas de hacerlo, se me ocurrió esta, pero hay muchas otras, como utilizar resampleos de la serie original diaria a semanal etc.
Como verán, bajé los datos, luego le aplico en la misma línea la función pct_change() que me calcula la variación diaria en cada fecha, le sumo 1 para obtener un factor multiplicativo que me permita calcular un rendimiento compuesto semanal.
Luego le genero un agrupamiento por año y semana y a ese agrupamiento le aplico el producto ya que tenía los factores, le resto 1 nuevamente para volver a tener un valor porcentual y finalmente le reseteo el índice para tenerlo sin multi-index (que es mas engorroso para trabajar luego)
Gráficas de la "estacionalidad" navideña
Bien, ahora que ya tenemos las series de datos de los rendimientos porcentuales de cada semana desde 1928 hasta hoy, nos toca armar un gráfico de estacionalidad o algo que se le parezca para ver si hay un "efecto navideño" notorio en esa última semana del año
Lo primero que se me ocurrió fue hacer un heatmap, para ello, antes debo armar mi dataset como una matriz, los años en las filas y las semanas en las columnas, lo puedo hacer con python usando el método de pandas pivot(), quedaría algo así:
Dataset matricial de los rendimientos semanales del SP500 1928-2020
Lo multipliqué por 100 para tenerlo en términos porcentuales que es más familiar de leer
Bien, ahora si, puedo graficar un heatmap a partir de esta matriz, esto es muy sencillo de hacer con seaborn (librería de la que les vengo hablando en notas anteriores)
Heatmap de rendimientos semanales SP500 1928-2020
Las zonas mas "azules" serían las de mejor rendimiento, por lo que de haber un rally navideño se debería ver un sesgo azulado en la ultima franja.. ¿medio complicado de visualizar no?
Lo ampliamos:
Heatmap de rendimientos semanales SP500 1928-2020
Bueno, tampoco se ve nada claro, en realidad confieso que de entrada vi un leve sesgo azulado tanto en la última, como en la primera semana de todos los años (así como en la semana nro 27), pero mi instinto de desconfiar de todo me llevó a seguir probando otros gráficos mas claros
Lo primero que se me ocurrió fue hacer un heatmap, para ello, antes debo armar mi dataset como una matriz, los años en las filas y las semanas en las columnas, lo puedo hacer con python usando el método de pandas pivot(), quedaría algo así:
Lo multipliqué por 100 para tenerlo en términos porcentuales que es más familiar de leer
Bien, ahora si, puedo graficar un heatmap a partir de esta matriz, esto es muy sencillo de hacer con seaborn (librería de la que les vengo hablando en notas anteriores)
Las zonas mas "azules" serían las de mejor rendimiento, por lo que de haber un rally navideño se debería ver un sesgo azulado en la ultima franja.. ¿medio complicado de visualizar no?
Lo ampliamos:
Bueno, tampoco se ve nada claro, en realidad confieso que de entrada vi un leve sesgo azulado tanto en la última, como en la primera semana de todos los años (así como en la semana nro 27), pero mi instinto de desconfiar de todo me llevó a seguir probando otros gráficos mas claros
Gráficas de funciones de distribución "kernelizadas"
Una de mis gráficas favoritas para ver claramente como se distribuyen los valores, tanto positivos como negativos es un histograma o mejor aun una función kernelizada de la misma (la KDE o función kernel de una distribución viene a ser como una simplificación de la PDF o función de densidad de probabilidades de la distribución real o población)
De nuevo, este tipo de gráficas se simplifica mucho con herramientas de alto nivel como pandas, fíjense que sencillo se resuelve en python esto:
Como ven, simplemente genero un "filtro" para las semanas del "rally navideño" que son la primera y la última de todos los años (agrego la semana 53 al "rally" que según la convención ISO sólo existe en los años que comienzan en lunes (y los bisiestos que comienzan en domingo)
Ese filtro representa las semanas pertenecientes al "rally" y las grafico en VERDE, mientras que a todas las semanas en general las ubico en la distribución que grafico en ROJO.
Como se puede observar, aquí si que se ve claramente un leve sesgo con mas valores positivos en la curva del rally (curva VERDE por encima de la ROJA en valores positivos)
Y lo mismo al revés en los negativos, es menos probable un valor negativo en las del rally (curva VERDE por debajo de la ROJA en los negativos)
Obviamente la diferencia es muy sutil, el diferencial de probabilidades entre ambas curvas es la diferencia del área bajo esas mismas curvas, hay que resolver la integral definida en ambos KDEs, no es gran cosa pero hay un diferencial de probabilidad en torno al 5% en cada caso, es decir que hay un 5% mas de probabilidades de suba en las semanas del "rally" y un 5% menos de probabilidades de baja en las mismas.
Esto de un 5% mas probable de alza y un 5% menos en las bajas puede resultar un tanto engañoso, a priori parece muy poca diferencia, pero esto no nos dice nada de que tan altas las altas y que tan bajas las bajas, si se fijan mas detenidamente en los KDEs la diferencia entre ambas curvas pareciera acentuarse un poco mas mas cerca de las colas, así que para ver el efecto haciendo pesar mas las colas, quizá conviene ver los promedios de cada semana entre los 93 años de historia que tenemos
Tabla de posiciones por semana
Veamos entonces lo que sería el equivalente a una tabla de posiciones semanal, sería algo así:
mejores 20 semanas desde 1928 por media de rendimiento semanal SP500
Por último agrego a pedido del público una tabla completa con los rendimientos promedio de todas las semanas en los 93 años de historia en forma de grafico de barras
Ordenado por mejor a peor rendimiento:
Rendimiento medio desde 1928 del SP500 según semana del año
Ordenado por orden de sucesión de semanas
Rendimiento medio desde 1928 del SP500 según semana del año
Bueno, la mejor semana del año tomando el promedio de los 93 años de historia es la primera semana del año, vaya casualidad no? bueno, debo aclarar que me sorprendí particularmente con esto, no era lo que esperaba ver, pero son los datos.. Luego vemos que la semana 52 está en el puesto 6, y las semanas 51 y 53 están en el top 20 de 53 semanas totales, es decir que esto del espíritu navideño puede tener cierto crédito, al menos en el SP500
En fin, les mando un saludo a los lectores de este blog, hace muy poco empecé a escribir para Rankia y ya veo muchos lectores que se suscriben a este humilde blog de difusión de temas quant, así que muy agradecido por ello con todos ustedes queridos lectores, les mando un afectuoso saludo navideño, y buenas inversiones a todos!
Por último agrego a pedido del público una tabla completa con los rendimientos promedio de todas las semanas en los 93 años de historia en forma de grafico de barras
Ordenado por mejor a peor rendimiento:
Ordenado por orden de sucesión de semanas
Bueno, la mejor semana del año tomando el promedio de los 93 años de historia es la primera semana del año, vaya casualidad no? bueno, debo aclarar que me sorprendí particularmente con esto, no era lo que esperaba ver, pero son los datos.. Luego vemos que la semana 52 está en el puesto 6, y las semanas 51 y 53 están en el top 20 de 53 semanas totales, es decir que esto del espíritu navideño puede tener cierto crédito, al menos en el SP500
En fin, les mando un saludo a los lectores de este blog, hace muy poco empecé a escribir para Rankia y ya veo muchos lectores que se suscriben a este humilde blog de difusión de temas quant, así que muy agradecido por ello con todos ustedes queridos lectores, les mando un afectuoso saludo navideño, y buenas inversiones a todos!