Structurele breuken

Kwantitatief risicobeheer in Python

Jamsheed Shorish

Computational Economist

Risico en verdeling

  • Toolkit risicobeheer
    • Risicomitigatie: MPT
    • Risicometing: VaR, CVaR
  • Risico: spreiding, volatiliteit
    • Variantie (standaarddeviatie) als risicodefinitie
  • Koppeling tussen risico en verdeling van risicofactoren als willekeurige variabelen
Kwantitatief risicobeheer in Python

Stationariteit

  • Aanname: verdeling is gelijk door de tijd
  • Onveranderlijke verdeling = stationair
  • Efficiënte grens tijdens de mondiale financiële crisis
    • Niet stationair
  • Schattingstechnieken vereisen stationariteit
    • Historisch: onbekende stationaire verdeling uit historische data
    • Parametrisch: veronderstelde stationaire verdelingsklasse
    • Monte Carlo: veronderstelde stationaire verdeling voor trekkingen
Kwantitatief risicobeheer in Python

Structurele breuken

  • Niet-stationair => verdeling verandert mogelijk in de tijd
  • Neem specifieke tijdstippen van verandering aan
    • Splits data in subperiodes
    • Binnen elke subperiode: aanname stationariteit
  • Structurele breuk(en): moment(en) van verandering
    • Verandering in ‘trend’ van gemiddelde en/of volatiliteit van data
Kwantitatief risicobeheer in Python

Voorbeeld: groei van de Chinese bevolking

  • Bekijk periode 1950 - 2019
  • Trend is grofweg lineair...

Grafiek van de Chinese bevolking in de tijd, 1950-2019

Kwantitatief risicobeheer in Python

Voorbeeld: groei van de Chinese bevolking

  • Bekijk periode 1950 - 2019
  • Trend is grofweg lineair...
  • ...maar lijkt te vertragen rond 1990
  • Mogelijke structurele breuk rond 1990.
  • Impliceert dat verdeling van netto bevolking (geboorten - sterfgevallen) is veranderd
  • Mogelijke oorzaken: overheidsbeleid, levensstandaard, enz.

Grafiek van de Chinese bevolking in de tijd met trendpijlen, 1950-2019

Kwantitatief risicobeheer in Python

De Chow-test

  • Vorig voorbeeld: visueel bewijs voor structurele breuk
  • Kwantificatie: statistische maat
  • Chow-test:
    • Test op bestaan van structurele breuk gegeven lineair model
    • Nulhypothese: geen breuk
    • Vereist drie OLS-regressies
      • Regressie voor gehele periode
      • Twee regressies, voor en _na_ de breuk
    • Verzamel som van gekwadrateerde residuen
    • Teststatistiek volgt de F-verdeling
Kwantitatief risicobeheer in Python

De Chow-test in Python

  • Hypothese: structurele breuk in 1990 voor de Chinese bevolking
  • Neem lineair “factormodel” aan: $$\log(\text{Population}_t) = \alpha + \beta * \text{Year}_t + u_t$$
  • OLS-regressie met statsmodelsOLS over de hele periode 1950 - 2019
    • Haal som van gekwadrateerde residuen op: 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
Kwantitatief risicobeheer in Python

De Chow-test in Python

  • Splits 1950 - 2019 in subperiodes 1950 - 1989 en 1990 - 2019
  • Voer OLS-regressies uit per subperiode
    • Haal res_before.ssr en res_after.ssr op
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
Kwantitatief risicobeheer in Python

De Chow-test in Python

  • Bereken de F-verdeelde Chow-teststatistiek
    • Bereken de teller
      • k = 2 vrijheidsgraden = 2 OLS-coëfficiënten $\alpha$, $\beta$
    • Bereken de noemer
      • 66 vrijheidsgraden = totaal aantal datapunten (70) - 2*k
numerator = (ssr_total - (ssr_before + ssr_after)) / 2

denominator = (ssr_before + ssr_after) / 66
chow_test = numerator / denominator print("Chow-teststatistiek: ", chow_test, "; Kritieke waarde, 99.9%: ", 7.7)
Chow-teststatistiek: 702.8715822890057; Kritieke waarde, 99.9%: 7.7
Kwantitatief risicobeheer in Python

Laten we oefenen!

Kwantitatief risicobeheer in Python

Preparing Video For Download...