GARCH-modellen in R
Kris Boudt
Professor of finance and econometrics


quantile() toegepast op een ugarchroll-object.ugarchspec(): Specificeer het GARCH-model
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
variance.model = list(model = "gjrGARCH"),
distribution.model = "sstd")
ugarchroll(): Schat het GARCH-model op rollende steekproeven
garchroll <- ugarchroll(garchspec, data = sp500ret, n.start = 2500,
refit.window = "moving", refit.every = 100)
quantile(): Bereken het voorspelde kwantiel
garchVaR <- quantile(garchroll, probs = 0.05)
Je kunt een andere verlieskans kiezen: 1% en 2,5% zijn ook gangbaar
actual <- xts(as.data.frame(garchroll)$Realized, time(garchVaR))
VaRplot(alpha = 0.05, actual = actual, VaR = garchVaR)

Een VaR-overschrijding treedt op wanneer het werkelijke rendement lager is dan de voorspelde value-at-risk: $ R_t \ < {VaR}_t$.
De frequentie van VaR-overschrijdingen heet de VaR-dekking.
# Berekening van dekking voor S&P 500-rendementen en kansniveau 5%
mean(actual < garchVaR)
0.05159143
distribution.model = "std" in plaats van distribution.model = "sstd":
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
variance.model = list(model = "gjrGARCH"),
distribution.model = "std")
Rollende schatting en 5% VaR-voorspelling:
garchroll <- ugarchroll(garchspec, data = sp500ret, n.start = 2500,
refit.window = "moving", refit.every = 100)
garchVaR <- quantile(garchroll, probs = 0.05)
mean(actual < garchVaR) # returns 0.05783233
variance.model = list(model = "sGARCH")
in plaats van
variance.model = list(model = "gjrGARCH"):
garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
variance.model = list(model = "sGARCH"),
distribution.model = "std")
Rollende schatting en 5% VaR-voorspelling:
garchroll <- ugarchroll(garchspec, data = sp500ret, n.start = 2500,
refit.window = "moving", refit.every = 100)
garchVaR <- quantile(garchroll, probs = 0.05)
mean(actual < garchVaR) # returns 0.06074475
refit.every = 1000
in plaats van
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) # returns 0.06199293
GARCH-modellen in R