As previsões do GARCH se ajustam bem aos retornos observados?

Modelos GARCH em R

Kris Boudt

Professor of finance and econometrics

Critério de avaliação

  • Depende do que você quer avaliar
    • a média prevista
    • a variância prevista
    • a distribuição prevista dos retornos
Modelos GARCH em R

1) Qualidade de ajuste para a previsão da média

Com base no modelo GARCH estimado, temos:

Implementação

e <- residuals(tgarchfit) 
mean(e ^ 2)
Modelos GARCH em R

2) Qualidade de ajuste para a previsão da variância

O modelo GARCH leva a:

Implementação

e <- residuals(tgarchfit)
d <- e ^ 2 - sigma(tgarchfit) ^ 2 
mean(d ^ 2)
Modelos GARCH em R

Exemplo para retornos EUR/USD

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
Modelos GARCH em R

3) Qualidade de ajuste para a distribuição

  • O modelo GARCH fornece uma densidade prevista para todos os retornos da amostra
    • Quanto maior a densidade, mais provável é o retorno sob o modelo GARCH estimado
    • A verossimilhança da amostra é baseada no produto de todas essas densidades. Ela mede quão provável é que os retornos observados venham do modelo GARCH estimado
    • Quanto maior a verossimilhança, melhor o ajuste do modelo aos seus dados
Modelos GARCH em R

Exemplo para retornos EUR/USD

likelihood(tgarchfit) # returns 18528.58

Analise comparando com outros modelos:

# Modelo complexo com muitos parâmetros
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
Modelos GARCH em R

Risco de overfitting

Atenção: Usamos uma avaliação dentro da amostra, em que a amostra de estimação e a de avaliação coincidem.

Risco de overfitting:

Overfitting é escolher modelos complexos demais que se ajustam bem aos retornos na amostra usada para estimação, mas não aos retornos futuros fora da amostra.

Modelos GARCH em R

Solução: Equilibre qualidade de ajuste com penalização pela complexidade

  • Um modelo GARCH é parcimonioso quando tem:
    • alta verossimilhança
    • e um número relativamente baixo de parâmetros
Modelos GARCH em R

Critérios de informação

  • Parcimônia é medida por critérios de informação.

critérios de informação = - verossimilhança + penalidade(número de parâmetros)

  • Quanto menor, melhor.

Regra prática para decidir:
Escolha o modelo com menor critério de informação.

Modelos GARCH em R

Resultados dos critérios de informação

O método infocriteria() imprime os critérios de informação para várias penalidades

infocriteria(tgarchfit)

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

A interpretação exige comparar com os critérios de informação de outros modelos.

Modelos GARCH em R

Ilustração nos retornos EUR/USD

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
Modelos GARCH em R

Qual modelo é mais parcimonioso para retornos EUR/USD?

Maior verossimilhança é melhor. Menor critério de informação é melhor.

infocriteria(tgarchfit) # Modelo simples
Akaike       -7.468435
Bayes        -7.464499
infocriteria(flexgarchfit) # Modelo complexo
Akaike       -7.467239
Bayes        -7.456742

O modelo simples tem o menor critério de informação e, portanto, deve ser preferido aqui.

Modelos GARCH em R

O resultado é específico do caso: retornos da MSFT

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

O modelo complexo tem o menor critério de informação e, portanto, deve ser preferido aqui.

Modelos GARCH em R

KISS: Keep it Sophisticatedly Simple

Modelos GARCH em R

Preparing Video For Download...