Você tem certeza de que essa ação está se revertendo à média?
No último capítulo, você viu que a autocorrelação dos retornos semanais das ações do MSFT era de -0,16. Essa autocorrelação parece grande, mas ela é estatisticamente significativa? Em outras palavras, você pode dizer que há menos de 5% de chance de observarmos uma autocorrelação negativa tão grande se a autocorrelação verdadeira fosse realmente zero? E há alguma autocorrelação em outras defasagens que seja significativamente diferente de zero?
Mesmo que as autocorrelações verdadeiras fossem zero em todas as defasagens, em uma amostra finita de retornos você não verá a estimativa das autocorrelações exatamente zero. De fato, o desvio padrão da autocorrelação da amostra é \(\small 1/\sqrt{N}\), em que \(\small N\) é o número de observações, portanto, se \(\small N=100\), por exemplo, o desvio padrão do ACF é 0,1 e, como 95% de uma curva normal está entre +1,96 e -1,96 desvios padrão da média, o intervalo de confiança de 95% é \(\small \pm 1,96/\sqrt{N}\). Essa aproximação só é válida quando as autocorrelações verdadeiras são todas zero.
Você calculará o intervalo de confiança real e aproximado para ACF e o comparará com a autocorrelação defasada de -0,16 do último capítulo. Os retornos semanais da Microsoft são pré-carregados em um DataFrame chamado returns
.
Este exercício faz parte do curso
Análise de séries temporais em Python
Instruções de exercício
- Recompute a autocorrelação dos retornos semanais na série
'Adj Close'
no DataFramereturns
. - Encontre o número de observações no DataFrame de retorno usando a função
len()
. - Aproxime o intervalo de confiança de 95% da autocorrelação estimada. A função matemática
sqrt()
foi importada e pode ser usada. - Trace a função de autocorrelação de
returns
usandoplot_acf
que foi importado de statsmodels. Definaalpha=0.05
para os intervalos de confiança (esse é o padrão) elags=20
.
Exercício interativo prático
Experimente este exercício preenchendo este código de exemplo.
# Import the plot_acf module from statsmodels and sqrt from math
from statsmodels.graphics.tsaplots import plot_acf
from math import sqrt
# Compute and print the autocorrelation of MSFT weekly returns
autocorrelation = returns['Adj Close'].___
print("The autocorrelation of weekly MSFT returns is %4.2f" %(autocorrelation))
# Find the number of observations by taking the length of the returns DataFrame
nobs = ___
# Compute the approximate confidence interval
conf = 1.96/___
print("The approximate confidence interval is +/- %4.2f" %(conf))
# Plot the autocorrelation function with 95% confidence intervals and 20 lags using plot_acf
plot_acf(___, alpha=0.05, ___)
plt.show()