Uma estratégia popular que usa autocorrelação
Uma anomalia intrigante das ações é que os investidores tendem a reagir de forma exagerada às notícias. Após grandes saltos, tanto para cima quanto para baixo, os preços das ações tendem a se reverter. Isso é descrito como reversão à média nos preços das ações: os preços tendem a se recuperar, ou reverter, para os níveis anteriores após grandes movimentos, que são observados em horizontes de tempo de cerca de uma semana. Uma forma mais matemática de descrever a reversão à média é dizer que os retornos das ações são negativamente autocorrelacionados.
Essa ideia simples é, na verdade, a base de uma estratégia popular de fundos de hedge. Se você estiver curioso para saber mais sobre essa estratégia de fundo de hedge (embora não seja uma leitura necessária para qualquer outra coisa mais adiante no curso), veja aqui.
Você analisará a autocorrelação dos retornos semanais das ações do MSFT de 2012 a 2017. Você começará com um DataFrame MSFT
de preços diários. Você deve usar o método .resample()
para obter preços semanais e, em seguida, calcular os retornos a partir dos preços. Use o método pandas .autocorr()
para obter a autocorrelação e mostrar que a autocorrelação é negativa. Observe que o método .autocorr()
só funciona em Series, não em DataFrames (mesmo DataFrames com uma coluna), portanto, você terá de selecionar a coluna no DataFrame.
Este exercício faz parte do curso
Análise de séries temporais em Python
Instruções de exercício
- Use o método
.resample()
comrule='W'
seguido da função.last()
para converter dados diários em dados semanais. - Crie um novo DataFrame,
returns
, de alterações percentuais nos preços semanais usando o método.pct_change()
. - Calcule a autocorrelação usando o método
.autocorr()
na série de preços de fechamento das ações, que é a coluna'Adj Close'
no DataFramereturns
.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
# 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))