Estymacja parametrów: skośny rozkład normalny
W poprzednim ćwiczeniu okazało się, że dopasowanie rozkładu normalnego do danych portfela banku inwestycyjnego z lat 2005–2010 dało słabe wyniki według testu Andersona-Darlinga.
Sprawdzisz teraz dane za pomocą funkcji skewtest() z biblioteki scipy.stats. Jeśli wynik testu różni się istotnie statystycznie od zera, dane wskazują na rozkład skośny.
Następnie parametrycznie wyestymuj 95% VaR, dopasowując rozkład strat przy użyciu rozkładu skośnego normalnego skewnorm z biblioteki scipy.stats. Jest to rozkład ogólniejszy niż normalny – pozwala na niesymetryczny rozkład strat. Można się spodziewać skośności strat w okresie kryzysu, gdy straty portfela były bardziej prawdopodobne niż zyski.
Dostępne są dane losses (straty portfela) dla okresu 2007–2009.
To ćwiczenie jest częścią kursu
Ilościowe zarządzanie ryzykiem w Pythonie
Instrukcje do ćwiczenia
- Zaimportuj
skewnormiskewtestz bibliotekiscipy.stats. - Sprawdź skośność danych
lossesza pomocą funkcjiskewtest. Test wskazuje na skośność, gdy wynik różni się istotnie statystycznie od zera. - Dopasuj dane
lossesdo skośnego rozkładu normalnego, korzystając z metody.fit(). - Wygeneruj i wyświetl estymację 95% VaR na podstawie dopasowanego rozkładu.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Import the skew-normal distribution and skewness test from scipy.stats
from scipy.stats import skewnorm, skewtest
# Test the data for skewness
print("Skewtest result: ", ____(____))
# Fit the portfolio loss data to the skew-normal distribution
params = ____.____(losses)
# Compute the 95% VaR from the fitted distribution, using parameter estimates
VaR_95 = ____.____(0.95, *params)
print("VaR_95 from skew-normal: ", VaR_95)