IniziaInizia gratis

Una strategia diffusa basata sull'autocorrelazione

Una curiosa anomalia dei mercati azionari è che gli investitori tendono a reagire in modo eccessivo alle notizie. Dopo forti salti, verso l’alto o verso il basso, i prezzi tendono a invertire la rotta. Questo fenomeno è descritto come mean reversion dei prezzi azionari: dopo grandi movimenti, i prezzi tendono a rimbalzare, o a tornare, verso livelli precedenti, su orizzonti temporali di circa una settimana. In termini più matematici, la mean reversion implica che i rendimenti azionari siano negativamente autocorrelati.

Questa semplice idea è in realtà alla base di una strategia molto diffusa tra gli hedge fund. Se vuoi saperne di più su questa strategia (anche se non è una lettura necessaria per il resto del corso), dai un’occhiata qui.

Esaminerai l’autocorrelazione dei rendimenti settimanali del titolo MSFT dal 2012 al 2017. Partirai da un DataFrame MSFT con prezzi giornalieri. Usa il metodo .resample() per ottenere i prezzi settimanali e poi calcola i rendimenti a partire dai prezzi. Usa il metodo di pandas .autocorr() per ottenere l’autocorrelazione e mostrare che è negativa. Nota che il metodo .autocorr() funziona solo sulle Series, non sui DataFrame (anche se hanno una sola colonna), quindi dovrai selezionare la colonna nel DataFrame.

Questo esercizio fa parte del corso

Analisi delle serie temporali in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Usa il metodo .resample() con rule='W' seguito dalla funzione .last() per convertire i dati giornalieri in dati settimanali.
  • Crea un nuovo DataFrame, returns, con le variazioni percentuali dei prezzi settimanali usando il metodo .pct_change().
  • Calcola l’autocorrelazione usando il metodo .autocorr() sulla serie dei prezzi di chiusura rettificati, che è la colonna 'Adj Close' nel DataFrame returns.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# Convert the daily data to weekly data
MSFT = MSFT.resample(___).___

# Compute the percentage change of prices
returns = MSFT.___

# Compute and print the autocorrelation of returns
autocorrelation = returns[___].___
print("The autocorrelation of weekly returns is %4.2f" %(autocorrelation))
Modifica ed esegui il codice