Una estrategia popular usando autocorrelación
Una anomalía desconcertante en las acciones es que los inversores tienden a sobrerreaccionar a las noticias. Tras saltos grandes, al alza o a la baja, los precios suelen revertir. A esto se le llama reversión a la media en los precios: tienden a recuperarse, o volver, hacia niveles previos después de movimientos bruscos, algo que se observa en horizontes temporales de alrededor de una semana. De forma más matemática, podemos decir que los rendimientos de las acciones presentan autocorrelación negativa.
Esta idea sencilla es en realidad la base de una estrategia popular de hedge funds. Si te pica la curiosidad y quieres saber más sobre esta estrategia (aunque no es necesario para el resto del curso), consulta aquí.
Vas a estudiar la autocorrelación de los rendimientos semanales de la acción de MSFT entre 2012 y 2017. Empezarás con un DataFrame MSFT de precios diarios. Deberías usar el método .resample() para obtener precios semanales y luego calcular los rendimientos a partir de los precios. Utiliza el método .autocorr() de pandas para obtener la autocorrelación y demostrar que es negativa. Ten en cuenta que el método .autocorr() solo funciona en Series, no en DataFrames (ni siquiera en DataFrames con una sola columna), así que tendrás que seleccionar la columna en el DataFrame.
Este ejercicio forma parte del curso
Análisis de series temporales en Python
Instrucciones del ejercicio
- Usa el método
.resample()conrule='W'seguido de la función.last()para convertir datos diarios en datos semanales. - Crea un nuevo DataFrame,
returns, con los cambios porcentuales de los precios semanales usando el método.pct_change(). - Calcula la autocorrelación usando el método
.autocorr()sobre la serie de precios de cierre ajustados, que es la columna'Adj Close'en el DataFramereturns.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# Convert the daily data to weekly data
MSFT = MSFT.resample(___).___
# Compute the percentage change of prices
returns = MSFT.___
# Compute and print the autocorrelation of returns
autocorrelation = returns[___].___
print("The autocorrelation of weekly returns is %4.2f" %(autocorrelation))