Evite complexidade desnecessária

Modelos GARCH em R

Kris Boudt

Professor of finance and econometrics

Evite complexidade desnecessária

  • Se você sabe
    • A dinâmica da média é negligenciável
    • Não há efeito de alavancagem na variância
    • A distribuição é simétrica e de caudas pesadas

Então, uma média constante, GARCH(1, 1) padrão com distribuição t de Student é uma especificação adequada:

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

Restrinja as estimativas dos parâmetros

  • Se você sabe que os parâmetros
    • são iguais a um certo valor
    • ou estão dentro de um intervalo
  • Então imponha isso na especificação usando os métodos
    • setfixed()
    • setbounds()
Modelos GARCH em R

Aplicação a taxas de câmbio

Especificação e estimação

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

Resultados da estimação

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

Exemplo de setfixed()

  • Se você sabe que alpha1 = 0.05 e shape = 6: imponha esses valores na estimação.
  • Como? Use o método setfixed() em um objeto ugarchspec
setfixed(garchspec) <- list(alpha1 = 0.05, shape = 6)

Resultado

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

Limites nos parâmetros

  • Os parâmetros GARCH podem ser restringidos a um intervalo.
  • Às vezes o intervalo de valores plausíveis é amplo:
    • Para garantir variância positiva, exigimos, por exemplo, que todos os parâmetros de variância ($\omega$, $\alpha$, $\beta$, $\gamma$) sejam positivos.
  • Às vezes o intervalo é menor:
    • Valores prováveis de $\alpha$ ficam entre 0,05 e 0,2
    • Valores prováveis de $\beta$ ficam entre 0,7 e 0,95
  • Tais limites nos parâmetros podem ser impostos com o método setbounds().
Modelos GARCH em R

Exemplo de setbounds()

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

Use sua intuição para evitar complexidade desnecessária.

Use as informações que você tem:

  • para construir modelos simples (e inteligentes)
  • para fixar valores de parâmetros ou definir limites
  • para tornar a dinâmica GARCH realista:

    • reversão à média da volatilidade em torno do desvio padrão amostral
      sd(EURUSDret) # retorna um valor de 0.006194049
      
Modelos GARCH em R

Aglomeração e reversão à média da volatilidade

Modelos GARCH em R

Variance targeting

  • Matematicamente, isso significa que a variância incondicional implícita pelos modelos GARCH é igual à variância amostral $\hat \sigma^2$.
  • Como? Definindo o argumento variance.targeting = TRUE em variance.model de ugarchspec():
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
Modelos GARCH em R

Vamos impor restrições no modelo GARCH

Modelos GARCH em R

Preparing Video For Download...