CVaR и выбор покрытия убытков
В предыдущих упражнениях вы убедились, что оба распределения — T и Gaussian KDE — достаточно хорошо описывают портфельные убытки в кризисный период. Какое из них лучше подходит для управления рисками? Один из способов выбора — остановиться на распределении, которое даёт наибольшее покрытие убытков и тем самым учитывает «наихудший из худших сценариев».
Распределения t и kde доступны и подогнаны под портфельные losses за 2007–2008 годы (подобранные параметры t хранятся в p). Вы вычислите однодневную оценку 99% CVaR для каждого распределения; наибольшая из оценок CVaR будет считаться «наиболее консервативным» резервным размером, покрывающим ожидаемые убытки, превышающие 99% VaR.
Экземпляру kde специально для этого упражнения добавлен метод .expect() для вычисления ожидаемого значения, необходимого при расчёте CVaR.
Это упражнение является частью курса
Количественное управление рисками на Python
Инструкции к упражнению
- Найдите 99% VaR с помощью
np.quantile(), применённой к случайным выборкам из распределенийtиkde. - Вычислите интеграл, необходимый для оценки CVaR, используя метод
.expect()для каждого распределения. - Найдите и выведите оценки 99% CVaR для обоих распределений.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Find the VaR as a quantile of random samples from the distributions
VaR_99_T = np.quantile(t.rvs(size=1000, *p), ____)
VaR_99_KDE = np.quantile(kde.resample(size=1000), ____)
# Find the expected tail losses, with lower bounds given by the VaR measures
integral_T = t.____(lambda x: x, args = (p[0],), loc = p[1], scale = p[2], lb = ____)
integral_KDE = kde.____(lambda x: x, lb = ____)
# Create the 99% CVaR estimates
CVaR_99_T = (1 / (1 - ____)) * integral_T
CVaR_99_KDE = (1 / (1 - ____)) * integral_KDE
# Display the results
print("99% CVaR for T: ", CVaR_99_T, "; 99% CVaR for KDE: ", CVaR_99_KDE)