IniziaInizia gratis

Siamo sicuri che questo titolo sia mean-reverting?

Nel capitolo precedente hai visto che l’autocorrelazione dei rendimenti settimanali di MSFT era -0,16. Sembra un valore elevato, ma è statisticamente significativo? In altre parole, puoi dire che c’è meno del 5% di probabilità di osservare un’autocorrelazione negativa così grande se la vera autocorrelazione fosse in realtà zero? E ci sono autocorrelazioni ad altri ritardi che sono significativamente diverse da zero?

Anche se le vere autocorrelazioni fossero zero a tutti i ritardi, in un campione finito di rendimenti le stime delle autocorrelazioni non saranno esattamente zero. Infatti, la deviazione standard dell’autocorrelazione campionaria è \(\small 1/\sqrt{N}\) dove \(\small N\) è il numero di osservazioni; quindi, se ad esempio \(\small N=100\), la deviazione standard dell’ACF è 0,1 e, poiché il 95% di una curva normale è compreso tra +1,96 e -1,96 deviazioni standard dalla media, l’intervallo di confidenza al 95% è \(\small \pm 1.96/\sqrt{N}\). Questa approssimazione vale solo quando le vere autocorrelazioni sono tutte pari a zero.

Calcolerai l’intervallo di confidenza effettivo e quello approssimato per l’ACF e lo confronterai con l’autocorrelazione al primo ritardo di -0,16 del capitolo precedente. I rendimenti settimanali di Microsoft sono già caricati in un DataFrame chiamato returns.

Questo esercizio fa parte del corso

Analisi delle serie temporali in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Ricalcola l’autocorrelazione dei rendimenti settimanali nella Series 'Adj Close' del DataFrame returns.
  • Trova il numero di osservazioni nel DataFrame returns usando la funzione len().
  • Approssima l’intervallo di confidenza al 95% dell’autocorrelazione stimata. La funzione matematica sqrt() è stata importata e può essere usata.
  • Traccia la funzione di autocorrelazione di returns usando plot_acf importata da statsmodels. Imposta alpha=0.05 per gli intervalli di confidenza (è il valore predefinito) e lags=20.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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()
Modifica ed esegui il codice