Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Bepaal de rendementenseries voor de twee portefeuilles met weights_with_citi en weights_without_citi.
  • Bereken voor beide portefeuilles de 30-daagse rolling window-standaarddeviaties.
  • Combineer beide Pandas Series-objecten in één DataFrame met 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()
Code bewerken en uitvoeren