Suntem siguri că această acțiune este mean-reverting?
În capitolul anterior, ai văzut că autocorela randamentelor săptămânale ale acțiunii MSFT era de -0,16. Această valoare pare mare, dar este ea semnificativă din punct de vedere statistic? Cu alte cuvinte, poți afirma că există mai puțin de 5% șanse să observăm o autocorelare negativă atât de mare dacă autocorela reală ar fi de fapt zero? Și există autocorelări la alte lag-uri care diferă semnificativ de zero?
Chiar dacă autocorelările reale ar fi zero la toate lag-urile, într-un eșantion finit de randamente estimările nu vor fi exact zero. De fapt, deviația standard a autocorelatiei eșantionului este \(\small 1/\sqrt{N}\), unde \(\small N\) este numărul de observații. Astfel, dacă \(\small N=100\), deviația standard a ACF este 0,1, iar deoarece 95% dintr-o distribuție normală se află între +1,96 și -1,96 deviații standard față de medie, intervalul de încredere de 95% este \(\small \pm 1.96/\sqrt{N}\). Această aproximare este valabilă doar atunci când autocorelările reale sunt toate zero.
Vei calcula intervalul de încredere real și cel aproximativ pentru ACF și îl vei compara cu autocorela la lag-ul unu de -0,16 din capitolul anterior. Randamentele săptămânale ale Microsoft sunt preîncărcate într-un DataFrame numit returns.
Acest exercițiu face parte din cursul
Analiza seriilor de timp în Python
Instrucțiuni pentru exercițiu
- Recalculează autocorela randamentelor săptămânale din Seria
'Adj Close'în DataFrame-ulreturns. - Găsește numărul de observații din DataFrame-ul
returnsfolosind funcțialen(). - Aproximează intervalul de încredere de 95% al autocorelatiei estimate. Funcția matematică
sqrt()a fost importată și poate fi utilizată. - Reprezintă grafic funcția de autocorelare a
returnsfolosindplot_acf, importată din statsmodels. Seteazăalpha=0.05pentru intervalele de încredere (aceasta este valoarea implicită) șilags=20.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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()