ComenzarEmpieza gratis

Volatilidad y rupturas estructurales

Visualizar los cambios de volatilidad ayuda a revelar posibles puntos de ruptura estructural en las series temporales. Al identificar cuándo parece cambiar la volatilidad, se puede hacer una elección informada del punto de ruptura que, a su vez, puede utilizarse para otros análisis estadísticos (como la prueba de Chow).

Examinarás dos visualizaciones de la volatilidad del portafolio de banco de inversión de 2008-2009, para dos pesos de portafolio disponibles: weights_with_citi y weights_without_citi. Estos corresponden, respectivamente, a portafolios de igual peso con y sin Citibank, que mostró (como viste en el capítulo 1) la mayor volatilidad de los cuatro activos durante el periodo.

Los precios del portafolio para 2008-2009 con Citibank están disponibles como prices_with_citi y sin Citibank, como prices_without_citi.

Este ejercicio forma parte del curso

Gestión cuantitativa de riesgos en Python

Ver curso

Instrucciones del ejercicio

  • Halla las series de rentabilidades de los dos portafolios utilizando weights_with_citi y weights_without_citi.
  • Calcula las desviaciones típicas de la ventana deslizante de 30 días de ambos portafolios.
  • Combina ambos objetos Pandas Series en un único objeto "vol" del DataFrame.
  • Representa el contenido del objeto vol para comparar las volatilidades de los dos portafolios a lo largo del tiempo.

Ejercicio interactivo práctico

Prueba este ejercicio completando el código de muestra.

# 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()
Editar y ejecutar código