Volatiliteit en structurele breuken
Het visualiseren van veranderingen in volatiliteit helpt om mogelijke structurele breukpunten in tijdreeksen te ontdekken. Door te identificeren wanneer de volatiliteit lijkt te veranderen, kun je een weloverwogen keuze maken voor een breukpunt, dat op zijn beurt kan worden gebruikt voor verdere statistische analyses (zoals de Chow-toets).
Je bekijkt twee visualisaties van de volatiliteit voor de portefeuille van een investeringsbank uit 2008–2009, voor twee beschikbare portefeuillegewichten: weights_with_citi en weights_without_citi. Deze komen overeen met, respectievelijk, gelijkgewogen portefeuilles met en zonder Citibank, die (zoals je in Hoofdstuk 1 zag) de hoogste volatiliteit van de vier activa in die periode liet zien.
De portefeuilleprijzen voor 2008–2009 mét Citibank zijn beschikbaar als prices_with_citi, en zónder Citibank als prices_without_citi.
Deze oefening maakt deel uit van de cursus
Kwantitatief risicobeheer in Python
Oefeninstructies
- Bepaal de rendementenseries voor de twee portefeuilles met
weights_with_citienweights_without_citi. - Bereken voor beide portefeuilles de 30-daagse rolling window-standaarddeviaties.
- Combineer beide Pandas
Series-objecten in éénDataFramemet de naam "vol". - Plot de inhoud van het
vol-object om de twee portefeuilleverolatiliteiten in de tijd te vergelijken.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Find the time series of returns with and without Citibank
ret_with_citi = prices_with_citi.____.dot(weights_with_citi)
ret_without_citi = prices_without_citi.pct_change().____(____)
# Find the average 30-day rolling window volatility as the standard deviation
vol_with_citi = ret_with_citi.____.std().dropna().rename("With Citi")
vol_without_citi = ret_without_citi.rolling(30).____.dropna().rename("Without Citi")
# Combine two volatilities into one Pandas DataFrame
vol = pd.concat([____, ____], axis=1)
# Plot volatilities over time
vol.____().set_ylabel("Losses")
plt.show()