Vermijd onnodige complexiteit

GARCH-modellen in R

Kris Boudt

Professor of finance and econometrics

Vermijd overbodige complexiteit

  • Als je weet dat
    • de meandynamiek verwaarloosbaar is
    • er geen leverage‑effect is in de variantie
    • de verdeling symmetrisch en zwaartstaartig is

Dan is een constante mean, standaard GARCH(1,1) met student‑t‑verdeling passend:

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
                        variance.model = list(model = "sGARCH"),
                        distribution.model = "std")
GARCH-modellen in R

Beperk de parameter‑schattingen

  • Als je weet dat parameters
    • gelijk zijn aan een bepaalde waarde
    • of binnen een interval liggen
  • Leg dit dan vast in de specificatie met
    • setfixed()
    • setbounds()
GARCH-modellen in R

Toepassing op wisselkoersen

Specificatie en schatting

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
                        variance.model = list(model = "sGARCH"),
                        distribution.model = "std")
garchfit <- ugarchfit(data = EURUSDret, spec = garchspec)

Schatresultaten

coef(garchfit)
           mu         omega        alpha1         beta1         shape 
-3.562136e-05  8.005123e-08  3.097322e-02  9.674496e-01  8.821902e+00
GARCH-modellen in R

Voorbeeld van setfixed()

  • Als je weet dat alpha1 = 0.05 en shape = 6: leg die waarden vast bij de schatting.
  • Hoe? Gebruik de methode setfixed() op een ugarchspec‑object
setfixed(garchspec) <- list(alpha1 = 0.05, shape = 6)

Resultaat

garchfit <- ugarchfit(data = EURUSDret, spec = garchspec)

coef(garchfit)
           mu         omega        alpha1         beta1         shape 
-4.142922e-05  2.061772e-07  5.000000e-02  9.489622e-01  6.000000e+00
GARCH-modellen in R

Grenswaarden voor parameters

  • De GARCH‑parameters kun je beperken tot een interval.
  • Soms is het plausibele interval groot:
    • Om de variantie positief te houden eisen we bv. dat alle variantieparameters ($\omega$, $\alpha$, $\beta$, $\gamma$) positief zijn.
  • Soms is het plausibele interval kleiner:
    • Waarschijnlijke waarden voor $\alpha$ liggen tussen 0,05 en 0,2
    • Waarschijnlijke waarden voor $\beta$ liggen tussen 0,7 en 0,95
  • Zulke grensrestricties kun je opleggen met setbounds().
GARCH-modellen in R

Voorbeeld van setbounds()

setbounds(garchspec) <- list(alpha1 = c(0.05, 0.2), beta1 = c(0.8, 0.95))
GARCH-modellen in R

Gebruik je intuïtie om overbodige complexiteit te vermijden.

Gebruik wat je weet:

  • om simpele (en slimme) modellen te bouwen
  • om parameters vast te zetten of grenzen te stellen
  • om de GARCH-dynamiek realistisch te maken:

    • mean reversion van de volatiliteit rond de steekproef-sd
      sd(EURUSDret) # returns a value of 0.006194049
      
GARCH-modellen in R

Volatiliteitsclusters en mean reversion

GARCH-modellen in R

Variance targeting

  • Wiskundig betekent dit dat de onvoorwaardelijke variantie uit het GARCH‑model gelijk is aan de steekproefvariantie $\hat \sigma^2$.
  • Hoe? Door variance.targeting = TRUE te zetten in variance.model van ugarchspec():
garchspec <- ugarchspec(mean.model = list(armaOrder = c(0,0)),
                        variance.model = list(model = "sGARCH",
                        variance.targeting = TRUE),
                        distribution.model = "std")
garchfit <- ugarchfit(data = EURUSDret, spec = garchspec)
all.equal(uncvariance(garchfit), sd(EURUSDret) ^ 2, tol = 1e-4)
TRUE
GARCH-modellen in R

Laten we beperkingen opleggen aan het GARCH‑model

GARCH-modellen in R

Preparing Video For Download...