2026-03-30

Modelos GARCH

Volatilidade refere-se às mudanças aleatórias e autocorrelacionadas na variância exibidas por muitas séries temporais financeiras. A

família de modelos GARCH (Engle, 1982; Bollerslev, 1986) captura muito bem o agrupamento de volatilidade, bem como as distribuições de cauda pesada frequentemente encontradas em séries temporais financeiras, como retornos de ações e taxas de câmbio.

A família de modelos GARCH é discutida com mais detalhes em livros didáticos que tratam de séries temporais financeiras (Enders, 2010; Chan, 2010; Tsay, 2010; Cryer e Chan, 2008; Shumway e Stoffer, 2011; Hamilton, 1994).

Definição

Uma sequência \(r_t\) segue um modelo \(\mbox{GARCH}(p,q)\) em \(t=\cdots,-1,0,1,\cdots\) se satisfaz a forma \[ r_t=\sigma_t\epsilon_t \] e \[ \sigma_t^2=\alpha_0+\sum_{i=1}^p \alpha_i r_{t-i}^2+\sum_{j=1}^q \beta_j \sigma_{t-j}^2, \] onde \(\alpha_0>0\), \(\alpha_i\geq 0\) e \(\beta_j\geq 0\) são parámetros.

Os erros \(\epsilon_t\) são considerados independentes e identicamente distribuídos a partir de uma distribuição paramétrica, como a normal, a distribuição de erros generalizada (GED), a \(t\)-Student ou variações assimétricas dessas distribuições.

Enquanto os modelos ARMA lidam com esperança condicional não constante, os modelos GARCH lidam com variância condicional não constante. Às vezes, esses dois modelos são combinados para formar a família de modelos ARMA/GARCH.

Uma descrição abrangente desses modelos também é apresentada no livro de Zivot e Wang (2006). Este livro também serve como documentação para o conhecido módulo adicional do S-Plus, Finmetrics. Muitos dos métodos fornecidos pelo Finmetrics para GARCH e modelos relacionados agora estão disponíveis no pacote fGARCH (Wuertz et al., 2009a).

A seguir, apresentamos uma breve discussão sobre o uso do fGARCH para simulação, ajuste e inferências. As principais funções deste pacote incluem garchSpec, garchSim e garchFit, além de funções de métodos relacionados. O pacote fGARCH permite uma variedade de suposições de distribuição para a sequência de erros \(\epsilon_t\).

Exemplo

Como um exemplo ilustrativo, simulamos um GARCH(1,1) com \(\alpha_0 = 10^{-6}\), \(\alpha_1 = 0.2\) e \(\beta_1 = 0.7\) e com uma distribuição GED assimétrica com coeficiente de assimetria 1.25 e parâmetro de forma 4.8. A série simulada é mostrada na figura a continuação.

spec <- fGarch::garchSpec(model = list(omega = 1e-06, alpha = 0.2, 
                          beta = 0.7, skew = 1.25, shape = 4.8), cond.dist = "sged")
set.seed(3765)
x <- fGarch::garchSim(spec, n = 1000)

No pacote fGarch do R, a Distribuição de Erro Generalizada Assimétrica (SGED) é definida seguindo a metodologia de Fernandez e Steel (1998), mas reparametrizada por Wuertz et al. para garantir que os parâmetros de localização, escala, forma e assimetria sejam independentes entre si.

Seja \(g(z)\) a densidade da distribuição GED padronizada, média 0 e variância 1. A densidade da SGED para uma variável \(x\) com parâmetros de média \(\mu\), desvio padrão \(\sigma\), forma \(\nu\) (kurtosis) e assimetria \(\xi\) é dada por: \[ f(x \, | \, \mu,\sigma,\xi) = \dfrac{2}{\xi+\frac{1}{\xi}}\dfrac{1}{\sigma}\left(g\Bigg(\dfrac{x-\mu}{\sigma}\xi\Bigg)\mbox{I}(x<\mu)+g\Bigg(\dfrac{x-\mu}{\sigma\xi}\Bigg)\mbox{I}(x\geq \mu) \right), \] sendo \(\xi(\nu)\) é o parâmetro de assimetria. Se \(\xi=1\), a distribuição é simétrica, ou seja, a GED padrão.

CaracterĂ­sticas Principais

  1. Independência de Parâmetros: Ao contrário da formulação original de Fernandez e Steel, a implementação no fGarch (via funções como dsged) isola o efeito da assimetria do desvio padrão, facilitando a interpretação estatística.

  2. Flexibilidade: Ela consegue modelar tanto o “pico” da distribuição quanto o peso das caudas, atravĂ©s de \(\nu\), e a direção da inclinação, atravĂ©s de \(\xi\).

  3. Uso em GARCH: É amplamente utilizada como a distribuição condicional dos resĂ­duos em modelos de volatilidade para capturar o “leverage effect” e caudas pesadas comuns em dados financeiros.

Dados

par(mar=c(3,3,1,1))
plot(x)
grid()

GARCH(1,1) simulado com \(\alpha_0=10^{-6}\), \(\alpha_1=0.2\) e \(\beta_1=0.7\).

Para ajustar os dados simulados acima com GARCH(1,1), poderĂ­amos usar:

out <- fGarch::garchFit(~garch(1, 1), data = x, trace = FALSE)

Algumas das inferências que podem ser realizadas usando os resultados. Incluem os testes de normalidade de Jarque-Bera e Shapiro-Wilk, vários testes de ruído branco de Ljung-Box e testes de efeito ARCH.

out@fit$matcoef
##             Estimate   Std. Error    t value     Pr(>|t|)
## mu     -3.733466e-05 8.334692e-05 -0.4479428 6.541944e-01
## omega   1.226856e-06 3.689725e-07  3.3250618 8.839894e-04
## alpha1  2.553109e-01 4.240275e-02  6.0210933 1.732429e-09
## beta1   6.241413e-01 6.142800e-02 10.1605335 0.000000e+00

Resultados

par(mar=c(3,3,1,1))
plot.ts(x)
lines(out@fit$series$z, col = "cyan")
grid()

Como não percebemos diferença, mostramos as diferenças das séries

par(mar=c(3,3,1,1))
plot.ts(x-out@fit$series$z)
grid()