Covarianties berekenen voor volatiliteit
In MPT kwantificeren we risico via volatiliteit. De wiskunde voor het berekenen van portefeuillevermogen is complex en vereist covarianties van dagelijkse rendementen. We gaan nu door elke maand in de DataFrame returns_monthly loopen en de covariantie van de dagelijkse rendementen berekenen.
Met datetime-indexen in pandas kun je de maand en het jaar benaderen met df.index.month en df.index.year. We gebruiken dit om een mask voor returns_daily te maken dat ons de dagelijkse rendementen geeft voor de huidige maand en het huidige jaar in de lus. Vervolgens gebruiken we het mask om de DataFrame te subsetten zoals: df[mask]. Dit levert de rijen op in de DataFrame returns_daily die binnen de huidige maand en het huidige jaar vallen in elke cyclus van de lus. Tot slot gebruiken we de pandas-methode .cov() om de covariantie van de dagelijkse rendementen te berekenen.
Deze oefening maakt deel uit van de cursus
Machine Learning voor finance in Python
Oefeninstructies
- Loop door de index van
returns_monthly. - Maak een mask voor
returns_dailydat de huidige maand en het huidige jaar uitreturns_monthlygebruikt, en dit matcht met de huidige maand en het huidige jaar vaniin de lus. - Pas het mask toe op
returns_dailyen bereken de covarianties met.cov().
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# Daily covariance of stocks (for each monthly period)
covariances = {}
rtd_idx = returns_daily.index
for i in returns_monthly.____:
# Mask daily returns for each month and year, and calculate covariance
mask = (rtd_idx.month == i.month) & (rtd_idx.____ == i.____)
# Use the mask to get daily returns for the current month and year of monthy returns index
covariances[i] = returns_daily[____].cov()
print(covariances[i])