Volatilitet och strukturbrott
Att visualisera förändringar i volatilitet hjälper till att identifiera möjliga strukturbrottspunkter i tidsserier. Genom att se när volatiliteten verkar förändras kan man göra ett välgrundat val av brytpunkt, som sedan kan användas för vidare statistisk analys (till exempel Chow-testet).
Du ska undersöka två visualiseringar av volatilitet för investmentbankportföljen från 2008–2009, med två tillgängliga portföljvikter: weights_with_citi och weights_without_citi. Dessa motsvarar likaviktade portföljer med respektive utan Citibank, som (som du såg i kapitel 1) uppvisade den högsta volatiliteten av de fyra tillgångarna under perioden.
Portföljpriserna för 2008–2009 med Citibank finns tillgängliga som prices_with_citi, och utan Citibank som prices_without_citi.
Den här övningen är en del av kursen
Kvantitativ riskhantering i Python
Övningsinstruktioner
- Beräkna avkastningsserien för de två portföljerna med hjälp av
weights_with_citiochweights_without_citi. - Beräkna rullande 30-dagars standardavvikelser för båda portföljerna.
- Kombinera båda Pandas
Series-objekten till ett endaDataFrame-objekt med namnet "vol". - Rita innehållet i
vol-objektet för att jämföra de två portföljernas volatilitet över tid.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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()