O pacote rugarch

Modelos GARCH em R

Kris Boudt

Professor of finance and econometrics

O modelo GARCH(1,1) normal com média constante

O modelo GARCH normal

$$ R_t = \mu + e_t $$ $$ e_t \sim N(0, \sigma^2_t) $$ $$ \sigma^2_t = \omega + \alpha e^2_{t-1} + \beta \sigma^2_{t-1} $$

  • Quatro parâmetros: $\mu, \omega, \alpha, \beta$.
  • Estimação por máxima verossimilhança: encontre os valores de parâmetros para os quais o modelo GARCH tem maior probabilidade de gerar a série de retornos observada.
Modelos GARCH em R

Alexios Ghalanos

library(rugarch)
citation("rugarch")

Para citar o pacote rugarch, use: Alexios Ghalanos (2018). rugarch: Univariate GARCH models.R package version 1.4-0.
Modelos GARCH em R

Fluxo de trabalho

  • Três etapas:

    • ugarchspec(): Especifique qual modelo GARCH você quer usar (média $\mu_t$, variância $\sigma^2_t$, distribuição de $e_t$)

      • ugarchfit(): Estime o modelo GARCH na sua série temporal com retornos $R_1,...,R_T$.

      • ugarchforecast(): Use o modelo estimado para prever a volatilidade de $R_{T+1}$,...

Modelos GARCH em R

Fluxo de trabalho em R

ugarchspec() define qual modelo GARCH você quer usar.

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0,0)),
                           variance.model = list(model = "sGARCH"),
                           distribution.model = "norm")

ugarchfit() estima o modelo GARCH.

garchfit <- ugarchfit(data = sp500ret, spec = garchspec)

ugarchforecast() prevê a volatilidade dos retornos futuros.

garchforecast <- ugarchforecast(fitORspec = garchfit, n.ahead = 5)
Modelos GARCH em R

Objeto ugarchfit

  • ugarchfit gera um objeto com todos os resultados da estimação do modelo GARCH.
  • Métodos coef, uncvar, fitted e sigma:
# Coefficients
garchcoef <- coef(garchfit)
# Unconditional variance
garchuncvar <- uncvariance(garchfit)
# Predicted mean
garchmean <- fitted(garchfit) 
# Predicted volatilities
garchvol <- sigma(garchfit)

Modelos GARCH em R

Coeficientes GARCH para retornos diários do S&P 500

print(garchcoef)
          mu        omega       alpha1        beta1 
5.728020e-04 1.220515e-06 7.792031e-02 9.111455e-01 

$$ R_{t} = 5.7 \times 10^{-4} + e_{t} $$ $$ e_{t} \sim N(0, \hat{\sigma}^{2}_{t}) $$ $$ \hat{\sigma}^{2}_{t} = 1.2 \times 10^{-6} + 0.08 e^{2}_{t-1} + 0.91 \hat{\sigma}^{2}_{t-1} $$

sqrt(garchuncvar)
0.01056519
Modelos GARCH em R

Volatilidades estimadas

garchvol <- sigma(garchfit)
plot(garchvol)

Modelos GARCH em R

E a volatilidade futura?

tail(garchvol, 1)
2017-12-29 0.004862908

E a volatilidade para os dias após o fim da série?

Modelos GARCH em R

Prevendo volatilidades h dias à frente

  • Aplicar sigma() ao objeto ugarchforecast retorna as previsões de volatilidade:
sigma(garchforecast)
      2017-12-29
T+1  0.005034754
T+2  0.005127582
T+3  0.005217770
T+4  0.005305465
T+5  0.005390797
Modelos GARCH em R

Prevendo volatilidades h dias à frente

Aplicar fitted() ao objeto ugarchforecast retorna as previsões de média:

fitted(garchforecast)
      2017-12-29
T+1  0.000572802
T+2  0.000572802
T+3  0.000572802
T+4  0.000572802
T+5  0.000572802
Modelos GARCH em R

Aplicação em alocação tática de ativos

Um portfólio que investe uma fração $w$ em um ativo arriscado (com volatilidade $\sigma_t$) e mantém $1-w$ em aplicação sem risco tem volatilidade igual a

$$ \sigma_p = w \sigma_t$$

Como definir $w$? Uma abordagem é o volatility targeting: escolher $w$ para que a volatilidade anualizada prevista do portfólio atinja um alvo, por exemplo, 5%. Então:

$$ w^* = 0.05 /\sigma_t $$

Como as volatilidades GARCH mudam, o peso ótimo também muda.

Modelos GARCH em R

Vamos brincar com o rugarch!

Modelos GARCH em R

Preparing Video For Download...