ComenzarEmpieza gratis

Comparación de CVaR y VaR

El valor en riesgo condicional (CVaR), o déficit esperado (ES), pregunta cuál será la pérdida media condicional, que depende de que las pérdidas superen algún umbral con un determinado nivel de confianza. Utiliza el VaR como punto de partida, pero contiene más información porque tiene en cuenta la cola de la distribución de pérdidas.

Primero calcularás el VaR del 95 % para una distribución normal de pérdidas de portafolio, con la misma media y la misma desviación típica que las portfolio_losses del banco de inversión en 2005-2010. A continuación, utilizarás el VaR para calcular el CVaR del 95 % y representarás los dos frente a la distribución normal.

Las portfolio_losses están disponibles en tu espacio de trabajo, así como la distribución normal norm de scipy.stats.

Este ejercicio forma parte del curso

Gestión cuantitativa de riesgos en Python

Ver curso

Instrucciones de ejercicio

  • Calcula la media y la desviación típica de portfolio_losses y asígnalas a pm y ps, respectivamente.
  • Halla el VaR del 95 % utilizando .ppf() method de norm: toma argumentos loc para la media y scale para la desviación típica.
  • Utiliza el VaR del 95 % y el método .expect() de norm para hallar la tail_loss, y utilízala para calcular el CVaR con el mismo nivel de confianza.
  • Añade líneas verticales que muestren el VaR (en rojo) y el CVaR (en verde) a un histograma de la distribución normal.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

# Compute the mean and standard deviation of the portfolio returns
pm = portfolio_losses.____
ps = portfolio_losses.____

# Compute the 95% VaR using the .ppf()
VaR_95 = norm.ppf(0.95, loc = ____, scale = ____)
# Compute the expected tail loss and the CVaR in the worst 5% of cases
tail_loss = norm.____(lambda x: x, loc = ____, scale = ____, lb = VaR_95)
CVaR_95 = (1 / (1 - 0.95)) * ____

# Plot the normal distribution histogram and add lines for the VaR and CVaR
plt.hist(norm.rvs(size = 100000, loc = pm, scale = ____), bins = 100)
plt.axvline(x = VaR_95, c='r', label = "VaR, 95% confidence level")
plt.axvline(x = ____, c='g', label = "CVaR, worst 5% of outcomes")
plt.legend(); plt.show()
Editar y ejecutar código