CVaR i dobór rezerwy na pokrycie strat
W poprzednich ćwiczeniach przekonałeś się, że zarówno rozkład T, jak i gaussowski KDE całkiem dobrze dopasowują się do strat portfelowych z okresu kryzysu. Które z nich jest lepsze do zarządzania ryzykiem? Jednym ze sposobów wyboru jest wskazanie rozkładu, który zapewnia największą rezerwę na straty – pokrywającą „najgorszy scenariusz" z możliwych.
Rozkłady t i kde są dostępne i zostały dopasowane do strat portfelowych losses z lat 2007–2008 (dopasowane parametry rozkładu t znajdują się w zmiennej p). Wyznaczysz jednodniowe szacunki CVaR na poziomie 99% dla każdego rozkładu. Największe z tych szacunków stanowi wówczas „najbezpieczniejszą" kwotę rezerwy, pokrywającą oczekiwane straty przekraczające VaR na poziomie 99%.
Instancja kde została wyposażona w specjalną metodę .expect() – wyłącznie na potrzeby tego ćwiczenia – służącą do obliczenia wartości oczekiwanej potrzebnej do wyznaczenia CVaR.
To ćwiczenie jest częścią kursu
Ilościowe zarządzanie ryzykiem w Pythonie
Instrukcje do ćwiczenia
- Wyznacz 99% VaR, stosując
np.quantile()do losowych próbek z rozkładówtikde. - Oblicz całkę potrzebną do wyznaczenia CVaR, używając metody
.expect()dla każdego rozkładu. - Wyznacz i wyświetl szacunki 99% CVaR dla obu rozkładów.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)