GARCH-Modelle in R
Kris Boudt
Professor of finance and econometrics
Auf Basis des geschätzten GARCH‑Modells haben wir:

Implementierung
e <- residuals(tgarchfit)
mean(e ^ 2)
Das GARCH‑Modell führt zu:

Implementierung
e <- residuals(tgarchfit)
d <- e ^ 2 - sigma(tgarchfit) ^ 2
mean(d ^ 2)
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
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
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.
Informationskriterium = - Likelihood + Strafterm(Anzahl Parameter)
Faustregel zur Auswahl:
Wähle das Modell mit dem niedrigsten Informationskriterium.
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.
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
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.
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