Порівняння CVaR і VaR
Умовна вартість під ризиком (CVaR), або очікуваний недоотриманий прибуток (ES), відповідає на запитання: яким буде середній збиток за умови, що збитки перевищують певний поріг за заданого рівня довіри. Вона використовує VaR як відправну точку, але містить більше інформації, оскільки враховує хвіст розподілу збитків.
Спочатку ви обчислите 95% VaR для нормального розподілу збитків портфеля з тим самим середнім і стандартним відхиленням, що й у portfolio_losses інвестбанку за 2005–2010 роки. Потім ви використаєте цей VaR, щоб обчислити 95% CVaR, і нанесете обидва на графік разом із нормальним розподілом.
portfolio_losses доступні у вашому робочому середовищі, так само як і нормальний розподіл norm з scipy.stats.
Ця вправа є частиною курсу
Кількісне управління ризиками в Python
Інструкції до вправи
- Обчисліть середнє та стандартне відхилення
portfolio_lossesі присвойте їх зміннимpmтаpsвідповідно. - Знайдіть 95% VaR за допомогою методу
norm.ppf()— він приймає аргументиlocдля середнього таscaleдля стандартного відхилення. - Використайте 95% VaR і метод
norm.expect(), щоб знайтиtail_loss, і за ним обчисліть CVaR на тому самому рівні довіри. - Додайте вертикальні лінії на гістограму нормального розподілу: для VaR (червона) і для CVaR (зелена).
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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()