Aan de slagGa gratis aan de slag

Een populaire strategie met autocorrelatie

Een opvallende anomalie bij aandelen is dat beleggers de neiging hebben te overreageren op nieuws. Na grote sprongen, omhoog of omlaag, keren aandelenkoersen vaak om. Dit heet mean reversion in aandelenkoersen: na grote bewegingen stuiteren prijzen terug, of keren ze terug, naar eerdere niveaus, en dat zie je vaak op tijdshorizonten van ongeveer een week. Wiskundig gezien kun je mean reversion omschrijven als negatief geautocorreleerde aandelenrendementen.

Dit simpele idee is eigenlijk de basis van een populaire hedgefondsstrategie. Als je meer wilt lezen over deze hedgefondsstrategie (niet nodig voor de rest van de cursus), kijk dan hier.

Je bekijkt de autocorrelatie van wekelijkse rendementen van het aandeel MSFT van 2012 tot 2017. Je begint met een DataFrame MSFT met dagelijkse prijzen. Gebruik de methode .resample() om wekelijkse prijzen te krijgen en bereken daarna rendementen uit prijzen. Gebruik de pandas-methode .autocorr() om de autocorrelatie te bepalen en laat zien dat die negatief is. Let op: de methode .autocorr() werkt alleen op Series, niet op DataFrames (ook niet op DataFrames met één kolom), dus je moet de kolom in het DataFrame selecteren.

Deze oefening maakt deel uit van de cursus

Tijdreeksanalyse in Python

Cursus bekijken

Oefeninstructies

  • Gebruik de methode .resample() met rule='W' gevolgd door de functie .last() om dagelijkse data om te zetten naar wekelijkse data.
  • Maak een nieuw DataFrame, returns, met procentuele veranderingen in wekelijkse prijzen met de methode .pct_change().
  • Bereken de autocorrelatie met de methode .autocorr() op de serie van slotkoersen, dat is de kolom 'Adj Close' in het DataFrame returns.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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))
Code bewerken en uitvoeren