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
Instrucciones de ejercicio
- Calcula la media y la desviación típica de
portfolio_losses
y asígnalas apm
yps
, respectivamente. - Halla el VaR del 95 % utilizando
.ppf() method
denorm
: toma argumentosloc
para la media yscale
para la desviación típica. - Utiliza el VaR del 95 % y el método
.expect()
denorm
para hallar latail_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()