Czy mamy pewność, że ta akcja wykazuje powrót do średniej?
W poprzednim rozdziale zobaczyłeś, że autokorelacja tygodniowych zwrotów akcji MSFT wyniosła -0,16. Wydaje się to dużą wartością – ale czy jest ona istotna statystycznie? Innymi słowy, czy można powiedzieć, że prawdopodobieństwo zaobserwowania tak dużej ujemnej autokorelacji, gdyby prawdziwa autokorelacja wynosiła zero, jest mniejsze niż 5%? Czy autokorelacje przy innych opóźnieniach również różnią się istotnie od zera?
Nawet jeśli prawdziwe autokorelacje są zerowe dla wszystkich opóźnień, w skończonej próbie zwrotów estymowane autokorelacje nie będą dokładnie równe zeru. Odchylenie standardowe próbkowej autokorelacji wynosi \(\small 1/\sqrt{N}\), gdzie \(\small N\) to liczba obserwacji. Jeśli więc \(\small N=100\), odchylenie standardowe ACF wynosi 0,1 – a ponieważ 95% rozkładu normalnego mieści się między +1,96 a -1,96 odchylenia standardowego od średniej, 95-procentowy przedział ufności to \(\small \pm 1.96/\sqrt{N}\). Przybliżenie to jest trafne tylko wtedy, gdy wszystkie prawdziwe autokorelacje są równe zero.
Obliczysz rzeczywisty i przybliżony przedział ufności dla ACF, a następnie porównasz go z autokorelacją dla opóźnienia pierwszego, wynoszącą -0,16, uzyskaną w poprzednim rozdziale. Tygodniowe zwroty Microsoftu są wczytane do ramki danych o nazwie returns.
To ćwiczenie jest częścią kursu
Analiza szeregów czasowych w Pythonie
Instrukcje do ćwiczenia
- Oblicz ponownie autokorelację tygodniowych zwrotów z serii
'Adj Close'w ramce danychreturns. - Wyznacz liczbę obserwacji w ramce danych
returnsza pomocą funkcjilen(). - Wyznacz przybliżony 95-procentowy przedział ufności dla estymowanej autokorelacji. Funkcja
sqrt()z modułu math jest już zaimportowana i możesz jej użyć. - Wykreśl funkcję autokorelacji
returnsprzy użyciuplot_acfzaimportowanego ze statsmodels. Ustawalpha=0.05dla przedziałów ufności (to wartość domyślna) orazlags=20.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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()