Przełomy strukturalne

Ilościowe zarządzanie ryzykiem w Pythonie

Jamsheed Shorish

Computational Economist

Ryzyko i rozkład

  • Zestaw narzędzi zarządzania ryzykiem
    • Ograniczanie ryzyka: MPT
    • Pomiar ryzyka: VaR, CVaR
  • Ryzyko: rozproszenie, zmienność
    • Wariancja (odchylenie standardowe) jako miara ryzyka
  • Związek między ryzykiem a rozkładem czynników ryzyka jako zmiennych losowych
Ilościowe zarządzanie ryzykiem w Pythonie

Stacjonarność

  • Założenie: rozkład jest stały w czasie
  • Niezmienny rozkład = stacjonarność
  • Efektywna granica w okresie globalnego kryzysu finansowego
    • Niestacjonarna
  • Techniki estymacji wymagają stacjonarności
    • Historyczna: nieznany stacjonarny rozkład z danych historycznych
    • Parametryczna: założona stacjonarna klasa rozkładu
    • Monte Carlo: założony stacjonarny rozkład dla losowania
Ilościowe zarządzanie ryzykiem w Pythonie

Przełomy strukturalne

  • Niestacjonarność => rozkład może zmieniać się w czasie
  • Założenie określonych momentów zmiany
    • Podział danych na podokresy
    • W każdym podokresie zakładamy stacjonarność
  • Przełomy strukturalne: punkty zmiany
    • Zmiana „trendu" średniej i/lub zmienności danych
Ilościowe zarządzanie ryzykiem w Pythonie

Przykład: wzrost liczby ludności Chin

  • Analiza okresu 1950 - 2019
  • Trend jest w przybliżeniu liniowy...

Wykres liczby ludności Chin w czasie, 1950-2019

Ilościowe zarządzanie ryzykiem w Pythonie

Przykład: wzrost liczby ludności Chin

  • Analiza okresu 1950 - 2019
  • Trend jest w przybliżeniu liniowy...
  • ...ale zwalnia od około 1990 roku
  • Możliwy przełom strukturalny około 1990 r.
  • Sugeruje zmianę rozkładu przyrostu naturalnego (urodzenia – zgony)
  • Możliwe przyczyny: polityka rządu, standard życia itd.

Wykres liczby ludności Chin w czasie z zaznaczonymi trendami, 1950-2019

Ilościowe zarządzanie ryzykiem w Pythonie

Test Chowa

  • Poprzedni przykład: wizualne dowody przełomu strukturalnego
  • Kwantyfikacja: miara statystyczna
  • Test Chowa:
    • Test istnienia przełomu strukturalnego przy modelu liniowym
    • Hipoteza zerowa: brak przełomu
    • Wymaga trzech regresji OLS
      • Regresja dla całego okresu
      • Dwie regresje: przed i _po_ przełomie
    • Obliczenie sumy kwadratów reszt
    • Statystyka testowa ma rozkład „F"
Ilościowe zarządzanie ryzykiem w Pythonie

Test Chowa w Pythonie

  • Hipoteza: przełom strukturalny w 1990 r. dla liczby ludności Chin
  • Założenie liniowego „modelu czynnikowego": $$\log(\text{Population}_t) = \alpha + \beta * \text{Year}_t + u_t$$
  • Regresja OLS z użyciem obiektu OLS biblioteki statsmodels dla okresu 1950 - 2019
    • Pobranie sumy kwadratów reszt res.ssr
import statsmodels.api as sm
res = sm.OLS(log_pop, year).fit()

print('SSR 1950-2019: ', res.ssr)
SSR 1950-2019: 0.29240576138055463
Ilościowe zarządzanie ryzykiem w Pythonie

Test Chowa w Pythonie

  • Podział okresu 1950 - 2019 na podokresy 1950 - 1989 i 1990 - 2019
  • Regresje OLS dla każdego podokresu
    • Pobranie res_before.ssr i res_after.ssr
pop_before = log_pop.loc['1950':'1989']; year_before = year.loc['1950':'1989'];
pop_after  = log_pop.loc['1990':'2019']; year_after =  year.loc['1990':'2019'];

res_before = sm.OLS(pop_before, year_before).fit() res_after = sm.OLS(pop_after, year_after).fit()
print('SSR 1950-1989: ', res_before.ssr) print('SSR 1990-2019: ', res_after.ssr)
SSR 1950-1989: 0.011741113017411783
SSR 1990-2019: 0.0013717593339608077
Ilościowe zarządzanie ryzykiem w Pythonie

Test Chowa w Pythonie

  • Obliczenie statystyki testu Chowa o rozkładzie F
    • Obliczenie licznika
      • k = 2 stopnie swobody = 2 współczynniki OLS $\alpha$, $\beta$
    • Obliczenie mianownika
      • 66 stopni swobody = łączna liczba obserwacji (70) - 2*k
numerator = (ssr_total - (ssr_before + ssr_after)) / 2

denominator = (ssr_before + ssr_after) / 66
chow_test = numerator / denominator print("Chow test statistic: ", chow_test, "; Critical value, 99.9%: ", 7.7)
Chow test statistic: 702.8715822890057; Critical value, 99.9%: 7.7
Ilościowe zarządzanie ryzykiem w Pythonie

Czas na ćwiczenia!

Ilościowe zarządzanie ryzykiem w Pythonie

Preparing Video For Download...