Volatilità e break strutturali
Visualizzare i cambiamenti di volatilità aiuta a individuare possibili punti di break strutturale nelle serie temporali. Identificando quando la volatilità sembra cambiare, puoi scegliere in modo informato un punto di break che potrà poi essere usato per ulteriori analisi statistiche (come il test di Chow).
Esaminerai due visualizzazioni della volatilità per il portafoglio di investment banking nel periodo 2008 - 2009, per due pesi di portafoglio disponibili: weights_with_citi e weights_without_citi. Corrispondono, rispettivamente, a portafogli a pesi uguali con e senza Citibank, che ha mostrato (come hai visto nel Capitolo 1) la volatilità più alta dei quattro asset nel periodo.
I prezzi del portafoglio per il 2008 - 2009 con Citibank sono disponibili come prices_with_citi, e senza Citibank come prices_without_citi.
Questo esercizio fa parte del corso
Gestione quantitativa del rischio in Python
Istruzioni dell'esercizio
- Trova le serie dei rendimenti per i due portafogli usando
weights_with_citieweights_without_citi. - Calcola le deviazioni standard su finestra mobile a 30 giorni per entrambi i portafogli.
- Combina entrambi gli oggetti
Seriesdi Pandas in un unico oggettoDataFramechiamato "vol". - Traccia il contenuto dell'oggetto
volper confrontare le due volatilità di portafoglio nel tempo.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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()