ПочатиПочніть безкоштовно

Порівняння 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()
Редагувати та запускати код