Passen die GARCH‑Prognosen gut zu den beobachteten Renditen?

GARCH-Modelle in R

Kris Boudt

Professor of finance and econometrics

Bewertungskriterium

  • Hängt davon ab, was du bewerten willst
    • den prognostizierten Mittelwert
    • die prognostizierte Varianz
    • die prognostizierte Verteilung der Renditen
GARCH-Modelle in R

1) Güte der Mittelwertprognose

Auf Basis des geschätzten GARCH‑Modells haben wir:

Implementierung

e <- residuals(tgarchfit) 
mean(e ^ 2)
GARCH-Modelle in R

2) Güte der Varianzprognose

Das GARCH‑Modell führt zu:

Implementierung

e <- residuals(tgarchfit)
d <- e ^ 2 - sigma(tgarchfit) ^ 2 
mean(d ^ 2)
GARCH-Modelle in R

Beispiel für EUR/USD‑Renditen

tgarchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
   variance.model = list(model = "sGARCH", variance.targeting = TRUE),
   distribution.model = "std")
tgarchfit <- ugarchfit(data = EURUSDret, spec = tgarchspec)
# Mittleren quadratischen Prognosefehler für den Mittelwert berechnen
e <- residuals(tgarchfit) ^ 2
mean(e ^ 2) # 3.836205e-05
# Mittleren quadratischen Prognosefehler für die Varianz berechnen
d <- e ^ 2 - sigma(tgarchfit) ^ 2
mean(d ^ 2) # 5.662366e-09
GARCH-Modelle in R

3) Güte der Verteilung

  • Das GARCH‑Modell liefert eine prognostizierte Dichte für alle Renditen in der Stichprobe
    • Je höher die Dichte, desto wahrscheinlicher ist die Rendite unter dem geschätzten GARCH‑Modell
    • Die Likelihood der Stichprobe basiert auf dem Produkt all dieser Dichten. Sie misst, wie wahrscheinlich es ist, dass die beobachteten Renditen aus dem geschätzten GARCH‑Modell stammen
    • Je höher die Likelihood, desto besser passt das Modell zu deinen Daten
GARCH-Modelle in R

Beispiel für EUR/USD‑Renditen

likelihood(tgarchfit) # returns 18528.58

Analysiere im Vergleich mit anderen Modellen:

# Komplexes Modell mit vielen Parametern
flexgarchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
                            variance.model = list(model = "gjrGARCH"),
                            distribution.model = "sstd")
flexgarchfit <- ugarchfit(data = EURUSDret, spec = flexgarchspec)
likelihood(flexgarchfit) # returns 18530.49
GARCH-Modelle in R

Risiko von Overfitting

Achtung: Wir verwenden eine In‑Sample‑Bewertung, bei der Schätz‑ und Bewertungssample übereinstimmen.

Gefahr des Overfittings:

Overfitting bedeutet, zu komplexe Modelle zu wählen, die die Renditen im verwendeten Schätz‑Sample gut abbilden, aber nicht die zukünftigen Renditen außerhalb der Stichprobe.

GARCH-Modelle in R

Lösung: Güte der Anpassung mit Strafterm für Komplexität ausbalancieren

  • Ein GARCH‑Modell ist sparsam, wenn es hat:
    • eine hohe Likelihood
    • und eine relativ geringe Zahl an Parametern
GARCH-Modelle in R

Informationskriterien

  • Sparsamkeit wird über Informationskriterien gemessen.

Informationskriterium = - Likelihood + Strafterm(Anzahl Parameter)

  • Je niedriger, desto besser.

Faustregel zur Auswahl:
Wähle das Modell mit dem niedrigsten Informationskriterium.

GARCH-Modelle in R

Ergebnisse Informationskriterien

Die Methode infocriteria() gibt die Informationskriterien für verschiedene Strafterme aus

infocriteria(tgarchfit)

out Akaike -7.468081 Bayes -7.462833 Shibata -7.468083 Hannan-Quinn -7.466241 `

Zur Interpretation musst du mit den Informationskriterien anderer Modelle vergleichen.

GARCH-Modelle in R

Illustration zu EUR/USD‑Renditen

tgarchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
   variance.model = list(model = "sGARCH", variance.targeting = TRUE),
   distribution.model = "std")
tgarchfit <- ugarchfit(data = EURUSDret, spec = tgarchspec)
length(coef(tgarchfit)) # nur 5 Parameter
likelihood(tgarchfit)   # entspricht 18528.58
flexgarchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
   variance.model = list(model = "gjrGARCH"), distribution.model = "sstd")
flexgarchfit <- ugarchfit(data = EURUSDret, spec = flexgarchspec)
length(coef(flexgarchfit)) # jetzt 8 Parameter
likelihood(flexgarchfit) #  18530.49: Likelihood gestiegen
GARCH-Modelle in R

Welches Modell ist für EUR/USD‑Renditen am sparsamsten?

Höhere Likelihood ist besser. Niedrigeres Informationskriterium ist besser.

infocriteria(tgarchfit) # Einfaches Modell
Akaike       -7.468435
Bayes        -7.464499
infocriteria(flexgarchfit) # Komplexes Modell
Akaike       -7.467239
Bayes        -7.456742

Das einfache Modell hat das niedrigste Informationskriterium und sollte hier bevorzugt werden.

GARCH-Modelle in R

Ergebnis ist fallabhängig: Fall MSFT‑Renditen

tgarchfit <- ugarchfit(data = msftret, spec = tgarchspec)
flexgarchfit <- ugarchfit(data = msftret, spec = flexgarchspec)
infocriteria(tgarchfit)
Akaike       -5.481895
Bayes        -5.477833
infocriteria(flexgarchfit) 
Akaike       -5.489087
Bayes        -5.478255

Das komplexe Modell hat das niedrigste Informationskriterium und sollte hier bevorzugt werden.

GARCH-Modelle in R

KISS: Keep it Sophisticatedly Simple

GARCH-Modelle in R

Preparing Video For Download...