Vermeide unnötige Komplexität

GARCH-Modelle in R

Kris Boudt

Professor of finance and econometrics

Vermeide unnötige Komplexität

  • Wenn du weißt:
    • Die Mittendynamik ist vernachlässigbar
    • Es gibt keinen Leverage-Effekt in der Varianz
    • Die Verteilung ist symmetrisch und fett-schwänzig

Dann ist ein konstantes Mittel, ein Standard-GARCH(1, 1) mit Student-t-Verteilung eine passende Spezifikation:

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

Parameterschätzungen einschränken

  • Wenn du weißt, dass die Parameter
    • einem bestimmten Wert entsprechen
    • oder in einem Intervall liegen
  • Dann solltest du das in der Spezifikation erzwingen mit
    • setfixed()
    • setbounds()
GARCH-Modelle in R

Anwendung auf Wechselkurse

Spezifikation und Schätzung

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

Schätzergebnisse

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

Beispiel für setfixed()

  • Wenn du alpha1 = 0.05 und shape = 6 kennst: setze diese Werte in der Schätzung fest.
  • Wie? Mit der Methode setfixed() auf einem ugarchspec-Objekt
setfixed(garchspec) <- list(alpha1 = 0.05, shape = 6)

Ergebnis

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-Modelle in R

Schranken für Parameter

  • Die GARCH-Parameter können auf ein Intervall beschränkt werden.
  • Manchmal ist das Intervall plausibler Werte groß:
    • Um positive Varianz zu sichern, verlangen wir z. B., dass alle Varianzparameter ($\omega$, $\alpha$, $\beta$, $\gamma$) positiv sind.
  • Manchmal ist das Intervall kleiner:
    • Plausible Werte für $\alpha$ liegen zwischen 0,05 und 0,2
    • Plausible Werte für $\beta$ liegen zwischen 0,7 und 0,95
  • Solche Schranken kannst du mit der Methode setbounds() vorgeben.
GARCH-Modelle in R

Beispiel für setbounds()

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

Nutze deine Intuition, um unnötige Komplexität zu vermeiden.

Nutze die Informationen, die du hast:

  • um einfache (und clevere) Modelle zu bauen
  • um Parameter zu fixieren oder Schranken zu setzen
  • um die GARCH-Dynamik realistisch zu machen:

    • Mittelwertrückkehr der Volatilität um die Stichproben-Standardabweichung
      sd(EURUSDret) # gibt 0.006194049 zurück
      
GARCH-Modelle in R

Volatilitätscluster und Mittelwertrückkehr der Volatilität

GARCH-Modelle in R

Variance Targeting

  • Mathematisch heißt das: Die bedingungslose Varianz aus dem GARCH-Modell entspricht der Stichprobenvarianz $\hat \sigma^2$.
  • Wie? Indem du das Argument variance.targeting = TRUE in variance.model von ugarchspec() setzt:
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-Modelle in R

Lass uns Beschränkungen auf das GARCH-Modell anwenden

GARCH-Modelle in R

Preparing Video For Download...