Comparando CVaR e VaR
O conditional value at risk (CVaR), ou expected shortfall (ES), pergunta qual será a perda média, condicionalmente às perdas excederem um certo limite em um determinado nível de confiança. Ele usa o VaR como ponto de partida, mas traz mais informação porque leva em conta a cauda da distribuição de perdas.
Você vai primeiro calcular o VaR de 95% para uma distribuição Normal de perdas do portfólio, com a mesma média e desvio padrão do portfolio_losses dos bancos de investimento de 2005–2010. Em seguida, vai usar o VaR para calcular o CVaR de 95% e representar ambos em relação à distribuição Normal.
O portfolio_losses está disponível no seu workspace, assim como a distribuição Normal norm de scipy.stats.
Este exercício faz parte do curso
Gerenciamento Quantitativo de Risco em Python
Instruções do exercício
- Calcule a média e o desvio padrão de
portfolio_lossese atribua-os apmeps, respectivamente. - Encontre o VaR de 95% usando o
.ppf() methoddenorm— ele recebe os argumentoslocpara a média escalepara o desvio padrão. - Use o VaR de 95% e o método
.expect()denormpara encontrar otail_losse use-o para calcular o CVaR no mesmo nível de confiança. - Adicione linhas verticais mostrando o VaR (em vermelho) e o CVaR (em verde) a um histograma da distribuição Normal.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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()