Lze potvrdit, že tato akcie mean-revertuje?
V předchozí kapitole sis ukázal/a, že autokorelace týdenních výnosů akcií MSFT byla -0,16. Tato hodnota se zdá být vysoká, ale je statisticky významná? Jinými slovy, lze říct, že pravděpodobnost pozorování tak velké záporné autokorelace, pokud by skutečná autokorelace byla nulová, je menší než 5 %? A existují nějaké autokorelace při jiných zpožděních, které se statisticky významně liší od nuly?
I kdyby skutečné autokorelace byly nulové při všech zpožděních, v konečném vzorku výnosů odhadnuté autokorelace nebudou přesně nulové. Standardní odchylka výběrové autokorelace je \(\small 1/\sqrt{N}\), kde \(\small N\) je počet pozorování. Pokud je například \(\small N=100\), standardní odchylka ACF je 0,1. Protože 95 % normálního rozdělení leží mezi +1,96 a -1,96 směrodatnými odchylkami od průměru, 95% interval spolehlivosti je \(\small \pm 1,96/\sqrt{N}\). Tato aproximace platí pouze tehdy, jsou-li všechny skutečné autokorelace nulové.
Spočítáš skutečný i přibližný interval spolehlivosti pro ACF a porovnáš ho s autokorelací při zpoždění 1 ve výši -0,16 z předchozí kapitoly. Týdenní výnosy Microsoftu jsou předem načteny v DataFrame returns.
Toto cvičení je součástí kurzu
Analýza časových řad v Pythonu
Pokyny k cvičení
- Znovu spočítej autokorelaci týdenních výnosů ze sloupce
'Adj Close'v DataFramereturns. - Zjisti počet pozorování v DataFrame
returnspomocí funkcelen(). - Odhadni 95% interval spolehlivosti vypočtené autokorelace. Matematická funkce
sqrt()je již naimportována a připravena k použití. - Vykresli funkci autokorelace pro
returnspomocíplot_acfnaimportovaného ze statsmodels. Nastavalpha=0.05pro intervaly spolehlivosti (to je výchozí hodnota) alags=20.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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()