Modelo GARCH
O GARCH (Generalized Autoregressive Conditional Heteroscedasticity) modela a variância condicional de uma série temporal como função de erros ao quadrado passados e de variâncias passadas. Ele captura o fato estilizado mais universal dos retornos financeiros: o agrupamento de volatilidade, em que grandes movimentos tendem a ser seguidos por grandes movimentos, independentemente da direção.
Motivação: agrupamento de volatilidade
Séries de retornos financeiros têm autocorrelação aproximadamente nula em níveis, mas forte autocorrelação em retornos ao quadrado. Isso significa:
- A média é difícil de prever a partir de retornos passados (consistente com a eficiência de mercado).
- A variância é previsível: períodos de alta volatilidade se agrupam.
O ARIMA modela a média condicional, mas assume variância constante. O GARCH modela a variância condicional, que o ARIMA deixa sem explicar.

Grandes oscilações nos retornos (azul) coincidem com alta volatilidade condicional (vermelho). Períodos calmos têm baixa volatilidade condicional. O ARIMA atribuiria variância constante a todos os períodos.
ARCH: o precursor
Robert Engle (1982, Prêmio Nobel 2003) introduziu o ARCH(\(q\)) (AutoRegressive Conditional Heteroscedasticity):
\[r_t = \mu_t + \varepsilon_t, \qquad \varepsilon_t = \sigma_t z_t, \quad z_t \sim \text{i.i.d.}(0,1)\]
\[\sigma_t^2 = \omega + \alpha_1 \varepsilon_{t-1}^2 + \alpha_2 \varepsilon_{t-2}^2 + \cdots + \alpha_q \varepsilon_{t-q}^2\]
A variância condicional \(\sigma_t^2\) é uma função linear de \(q\) resíduos passados ao quadrado. Um choque grande em \(t-1\) aumenta \(\sigma_t^2\), produzindo agrupamento de volatilidade.
Limitação: capturar memória longa na volatilidade exige \(q\) grande, estimando muitos parâmetros \(\alpha_i\). Bollerslev (1986) generalizou isso para o GARCH.
GARCH(\(p,q\))
O ARCH generalizado adiciona \(p\) variâncias condicionais defasadas à equação:
\[\sigma_t^2 = \omega + \sum_{i=1}^q \alpha_i \varepsilon_{t-i}^2 + \sum_{j=1}^p \beta_j \sigma_{t-j}^2\]
A especificação mais comum é o GARCH(1,1):
\[\sigma_t^2 = \omega + \alpha_1 \varepsilon_{t-1}^2 + \beta_1 \sigma_{t-1}^2\]
- \(\omega > 0\): piso de variância de longo prazo.
- \(\alpha_1 \geq 0\): coeficiente de reação. O quanto um choque grande aumenta a variância do próximo período.
- \(\beta_1 \geq 0\): coeficiente de persistência. Com que lentidão a volatilidade decai após um choque.
- \(\alpha_1 + \beta_1\): persistência total. Deve ser \(< 1\) para estacionariedade em covariância.
A variância incondicional (de longo prazo) é:
\[\sigma^2 = \frac{\omega}{1 - \alpha_1 - \beta_1}\]
O GARCH(1,1) é suficiente para a maioria das séries financeiras. O termo \(\beta_1\) captura o decaimento lento da volatilidade sem precisar de muitas defasagens \(\alpha_i\).
Condições de estacionariedade e positividade
Para que o GARCH(1,1) esteja bem definido:
| Condição | Requisito |
|---|---|
| Positividade de \(\sigma_t^2\) | \(\omega > 0\), \(\alpha_1 \geq 0\), \(\beta_1 \geq 0\) |
| Estacionariedade em covariância | \(\alpha_1 + \beta_1 < 1\) |
| Quarto momento finito | \(3\alpha_1^2 + 2\alpha_1\beta_1 + \beta_1^2 < 1\) (para \(z_t\) gaussiano) |
Quando \(\alpha_1 + \beta_1 = 1\), o processo é IGARCH (GARCH integrado): choques na variância são permanentes (persistência infinita). Isso é às vezes observado em dados financeiros de altíssima frequência.
Testando efeitos ARCH
Antes de ajustar o GARCH, verifique que efeitos ARCH estão presentes usando o teste de Ljung-Box nos resíduos ao quadrado ou o teste ARCH-LM:
- Ajuste um modelo ARIMA à série de retornos para remover a média condicional.
- Extraia os resíduos \(\hat{\varepsilon}_t\).
- Teste se \(\hat{\varepsilon}_t^2\) é autocorrelacionado.

Os retornos (esquerda) não mostram autocorrelação significativa. Os retornos ao quadrado (direita) mostram forte autocorrelação: evidência de efeitos ARCH. O GARCH é apropriado.
Exemplo: ajustando GARCH(1,1) a retornos de ações

As bandas vermelhas mostram \(\pm\hat{\sigma}_t\): elas se ampliam durante períodos turbulentos e se estreitam durante os calmos. A persistência \(\alpha + \beta \approx 0{,}95\) é típica de retornos financeiros diários: choques de volatilidade levam muitos dias para se dissipar.
O fluxo de trabalho ARIMA-GARCH
O GARCH modela a variância condicional dos resíduos de um modelo de média. O fluxo de trabalho completo em duas etapas:
Etapa 1: ajuste um modelo ARIMA para remover a média condicional:
\[r_t = \mu + \phi_1 r_{t-1} + \cdots + \theta_1 \varepsilon_{t-1} + \cdots + \varepsilon_t\]
Etapa 2: ajuste o GARCH aos resíduos \(\hat{\varepsilon}_t\):
\[\hat{\sigma}_t^2 = \omega + \alpha_1 \hat{\varepsilon}_{t-1}^2 + \beta_1 \hat{\sigma}_{t-1}^2\]
Ambas as etapas podem ser estimadas conjuntamente por MV usando o fluxo de trabalho ugarchspec + ugarchfit no R.
⚠️ Não ajuste GARCH a retornos brutos sem remover a média primeiro
Se a série de retornos tem autocorrelação significativa em níveis (incomum, mas possível em dados de alta frequência ou ativos ilíquidos), ajustar GARCH a retornos brutos confunde as dinâmicas de média e variância. Sempre:
- Verifique a ACF dos retornos: se existir autocorrelação significativa, inclua termos ARMA no modelo de média.
- Ajuste ARMA-GARCH conjuntamente.
- Verifique a ACF dos resíduos padronizados \(\hat{\varepsilon}_t/\hat{\sigma}_t\): devem ser ruído branco.
- Verifique a ACF dos resíduos padronizados ao quadrado: também devem ser ruído branco se o GARCH estiver corretamente especificado.
Extensões do GARCH
| Modelo | Extensão-chave | Caso de uso |
|---|---|---|
| EGARCH | Resposta assimétrica da volatilidade | Efeito leverage em ações |
| GJR-GARCH | Assimetria via função indicadora | Alternativa ao EGARCH |
| IGARCH | \(\alpha+\beta=1\), persistência infinita | Dados de altíssima frequência |
| GARCH-M | Variância na equação de média | Modelagem de prêmio de risco |
| GARCH multivariado | Volatilidade conjunta de múltiplos ativos | Risco de portfólio, modelos DCC |
A extensão mais importante é o EGARCH, que captura o efeito leverage: choques negativos aumentam a volatilidade mais do que choques positivos do mesmo tamanho, uma assimetria bem documentada nos mercados de ações.
💡 GARCH em R
library(rugarch)
# Specify GARCH(1,1) with normal innovations
spec <- ugarchspec(
variance.model = list(model = "sGARCH", garchOrder = c(1,1)),
mean.model = list(armaOrder = c(0,0), include.mean = TRUE),
distribution.model = "norm" # or "std" for Student-t
)
# Fit
fit <- ugarchfit(spec, data = returns)
coef(fit) # omega, alpha1, beta1
sigma(fit) # conditional volatility series
infocriteria(fit) # AIC, BIC
# Forecast volatility 10 steps ahead
ugarchforecast(fit, n.ahead = 10)
Use distribution.model = "std" (Student-t) para retornos com caudas pesadas, o que é quase sempre mais apropriado do que o gaussiano para dados financeiros diários.