Passen de GARCH-voorspellingen goed bij de geobserveerde rendementen?

GARCH-modellen in R

Kris Boudt

Professor of finance and econometrics

Evaluatiecriterium

  • Hangt af van wat je wilt evalueren
    • de voorspelde gemiddelde waarde
    • de voorspelde variantie
    • de voorspelde verdeling van de rendementen
GARCH-modellen in R

1) Goodness-of-fit voor de gemiddelde voorspelling

Op basis van het geschatte GARCH-model hebben we:

Implementatie

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

2) Goodness-of-fit voor de variantievoorspelling

Het GARCH-model leidt tot:

Implementatie

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

Voorbeeld: EUR/USD-rendementen

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)
# Compute mean squared prediction error for the mean
e <- residuals(tgarchfit) ^ 2
mean(e ^ 2) # 3.836205e-05
# Compute mean squared prediction error for the variance
d <- e ^ 2 - sigma(tgarchfit) ^ 2
mean(d ^ 2) # 5.662366e-09
GARCH-modellen in R

3) Goodness-of-fit voor de verdeling

  • Het GARCH-model levert een voorspelde dichtheid voor alle rendementen in de steekproef
    • Hoe hoger de dichtheid, hoe waarschijnlijker het rendement onder het geschatte GARCH-model
    • De likelihood van de steekproef is het product van al deze dichtheden. Dit meet hoe waarschijnlijk het is dat de geobserveerde rendementen uit het geschatte GARCH-model komen
    • Hoe hoger de likelihood, hoe beter de fit met je data
GARCH-modellen in R

Voorbeeld: EUR/USD-rendementen

likelihood(tgarchfit) # returns 18528.58

Analyseer door te vergelijken met andere modellen:

# Complex model met veel parameters
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-modellen in R

Risico op overfitting

Let op: we gebruiken een in-sample evaluatie waarbij schattings- en evaluatiesteekproef samenvallen.

Risico op overfitting:

Overfitting is het kiezen van te complexe modellen die goed passen op de schattingssteekproef, maar niet op toekomstige rendementen buiten de steekproef.

GARCH-modellen in R

Oplossing: balans tussen fit en straf voor complexiteit

  • Een GARCH-model is zuinig als het:
    • een hoge likelihood heeft
    • en relatief weinig parameters
GARCH-modellen in R

Informatiecriteria

  • Zuinigheid wordt gemeten met informatiecriteria.

informatiecriterium = - likelihood + straf(aantal parameters)

  • Lager is beter.

Vuistregel: Kies het model met het laagste informatiecriterium.

GARCH-modellen in R

Resultaten informatiecriteria

Methode infocriteria() print de informatiecriteria voor diverse straffen

infocriteria(tgarchfit)

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

Interpretatie vraagt om vergelijking met de informatiecriteria van andere modellen.

GARCH-modellen in R

Illustratie op de EUR/USD-rendementen

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)) # only 5 parameters
likelihood(tgarchfit)   # equals 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)) # we now have 8 parameters
likelihood(flexgarchfit) #  18530.49: likelihood increased
GARCH-modellen in R

Welk model is het zuinigst voor EUR/USD-rendementen?

Hogere likelihood is beter. Lager informatiecriterium is beter.

infocriteria(tgarchfit) # Eenvoudig model
Akaike       -7.468435
Bayes        -7.464499
infocriteria(flexgarchfit) # Complex model
Akaike       -7.467239
Bayes        -7.456742

Het eenvoudige model heeft het laagste informatiecriterium en verdient hier de voorkeur.

GARCH-modellen in R

Resultaat is casusafhankelijk: MSFT-rendementen

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

Het complexe model heeft het laagste informatiecriterium en verdient hier de voorkeur.

GARCH-modellen in R

KISS: Keep it Sophisticatedly Simple

GARCH-modellen in R

Preparing Video For Download...