Modelos GARCH em R
Kris Boudt
Professor of finance and econometrics


quantile() aplicado a um objeto ugarchroll.ugarchspec(): Especifique qual modelo GARCH você quer usar
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
variance.model = list(model = "gjrGARCH"),
distribution.model = "sstd")
ugarchroll(): Estime o modelo GARCH em amostras móveis de estimação
garchroll <- ugarchroll(garchspec, data = sp500ret, n.start = 2500,
refit.window = "moving", refit.every = 100)
quantile(): Calcule o quantil previsto
garchVaR <- quantile(garchroll, probs = 0.05)
Você pode escolher outra probabilidade de perda: 1% e 2,5% também são populares
actual <- xts(as.data.frame(garchroll)$Realized, time(garchVaR))
VaRplot(alpha = 0.05, actual = actual, VaR = garchVaR)

Uma excedência de VaR ocorre quando o retorno real é menor que o value-at-risk previsto: $ R_t \ < {VaR}_t$.
A frequência de excedências de VaR é chamada de cobertura de VaR.
# Cálculo da cobertura para retornos do S&P 500 e nível de 5%
mean(actual < garchVaR)
0.05159143
distribution.model = "std" em vez de distribution.model = "sstd":
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
variance.model = list(model = "gjrGARCH"),
distribution.model = "std")
Estimação móvel e previsão de VaR de 5%:
garchroll <- ugarchroll(garchspec, data = sp500ret, n.start = 2500,
refit.window = "moving", refit.every = 100)
garchVaR <- quantile(garchroll, probs = 0.05)
mean(actual < garchVaR) # retorna 0.05783233
variance.model = list(model = "sGARCH")
em vez de
variance.model = list(model = "gjrGARCH"):
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
variance.model = list(model = "sGARCH"),
distribution.model = "std")
Estimação móvel e previsão de VaR de 5%:
garchroll <- ugarchroll(garchspec, data = sp500ret, n.start = 2500,
refit.window = "moving", refit.every = 100)
garchVaR <- quantile(garchroll, probs = 0.05)
mean(actual < garchVaR) # retorna 0.06074475
refit.every = 1000
em vez de
refit.every = 100:
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
variance.model = list(model = "sGARCH"),
distribution.model = "std")
garchroll <- ugarchroll(garchspec, data = sp500ret, n.start = 2500,
refit.window = "moving", refit.every = 1000)
garchVaR <- quantile(garchroll, probs = 0.05)
mean(actual < garchVaR) # retorna 0.06199293
Modelos GARCH em R