Zijn we zeker dat dit aandeel mean-reverting is?
In het vorige hoofdstuk zag je dat de autocorrelatie van de wekelijkse rendementen van MSFT -0,16 was. Die autocorrelatie lijkt groot, maar is die statistisch significant? Met andere woorden: kun je zeggen dat de kans kleiner is dan 5% dat we zo’n grote negatieve autocorrelatie zouden waarnemen als de werkelijke autocorrelatie nul is? En zijn er autocorrelaties op andere lags die significant van nul verschillen?
Zelfs als de werkelijke autocorrelaties op alle lags nul zijn, zul je in een eindige steekproef van rendementen niet exact nul als schatting zien. Sterker nog, de standaardafwijking van de steekproefautocorrelatie is \(\small 1/\sqrt{N}\), waarbij \(\small N\) het aantal waarnemingen is. Als \(\small N=100`, is de standaardafwijking van de ACF bijvoorbeeld 0,1, en omdat 95% van een normale verdeling tussen +1,96 en -1,96 standaardafwijkingen van het gemiddelde ligt, is het 95%-betrouwbaarheidsinterval \)\small \pm 1.96/\sqrt{N}$. Deze benadering geldt alleen wanneer de werkelijke autocorrelaties allemaal nul zijn.
Je gaat het werkelijke en het benaderde betrouwbaarheidsinterval voor de ACF berekenen en dit vergelijken met de lag-één-autocorrelatie van -0,16 uit het vorige hoofdstuk. De wekelijkse rendementen van Microsoft zijn vooraf ingeladen in een DataFrame genaamd returns.
Deze oefening maakt deel uit van de cursus
Tijdreeksanalyse in Python
Oefeninstructies
- Bereken de autocorrelatie van de wekelijkse rendementen in de Series
'Adj Close'in hetreturns-DataFrame opnieuw. - Bepaal het aantal waarnemingen in het
returns-DataFrame met de functielen(). - Benader het 95%-betrouwbaarheidsinterval van de geschatte autocorrelatie. De wiskundefunctie
sqrt()is geïmporteerd en kun je gebruiken. - Plot de autocorrelatiefunctie van
returnsmetplot_acfdie is geïmporteerd uit statsmodels. Zetalpha=0.05voor de betrouwbaarheidsintervallen (dat is de standaard) enlags=20.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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()