Riscul de model este riscul utilizării unui model greșit

Modele GARCH în R

Kris Boudt

Professor of finance and econometrics

Surse ale riscului de model și soluții

Surse:

  • alegeri de modelare
  • valori inițiale în optimizare
  • valori extreme în seria de randamente

Soluție: Protejați-vă printr-o abordare robustă

  • medierea modelelor: calculul mediei predicțiilor mai multor modele
  • testarea mai multor valori inițiale și alegerea celei cu cea mai mare verosimilitate
  • curățarea datelor
Modele GARCH în R

Medierea modelelor

variance.models <- c("sGARCH", "gjrGARCH")
distribution.models <- c("norm", "std", "sstd")
c <- 1
for (var.model in variance.models) {
    for (dist.model in distribution.models) {
        garchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
         variance.model = list(model = var.model), distribution.model = dist.model)
        garchfit <- ugarchfit(data = msftret, spec = garchspec)
        if (c==1) { msigma <- sigma(garchfit)
        } else { msigma <- merge(msigma, sigma(garchfit))} 
        c <- c + 1 }
}
Modele GARCH în R

Modele GARCH în R

Predicția medie a volatilității

avesigma <- xts(rowMeans(msigma), order.by = time(msigma))

Predicția medie a volatilității

Modele GARCH în R

Robustețe față de valorile inițiale

coef(garchfit)
          mu        omega       alpha1        beta1         skew        shape 
5.669200e-04 6.281258e-07 7.462984e-02 9.223701e-01 9.436331e-01 6.318621e+00 
  • Aceste estimări rezultă dintr-o optimizare complexă a funcției de verosimilitate
  • Optimizarea este numerică și iterativă: îmbunătățire pas cu pas, sensibilă la valorile inițiale
  • rugarch are o abordare implicită pentru obținerea valorilor inițiale adecvate
  • Puteți specifica propriile valori inițiale aplicând metoda setstart() specificației modelului GARCH ugarchspec()
Modele GARCH în R

Estimare cu valori inițiale implicite

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

garchfit <- ugarchfit(data = sp500ret, spec = garchspec)
coef(garchfit)
          mu        omega       alpha1        beta1         skew        shape 
5.669200e-04 6.281258e-07 7.462984e-02 9.223701e-01 9.436331e-01 6.318621e+00 
likelihood(garchfit)
24280.33
Modele GARCH în R

Estimare cu valori inițiale modificate

garchspec <- ugarchspec(mean.model = list(armaOrder = c(0, 0)),
  variance.model = list(model = "sGARCH"), distribution.model = "sstd")
setstart(garchspec) <- list(alpha1 = 0.05, beta1 = 0.9, shape = 8)
garchfit <- ugarchfit(data = sp500ret, spec = garchspec)
coef(garchfit)
          mu        omega       alpha1        beta1         skew        shape 
5.638002e-04 6.303949e-07 7.466503e-02 9.224117e-01 9.438978e-01 6.309185e+00
likelihood(garchfit) # returns 24280.33
Modele GARCH în R

Curățarea datelor

  • Evitați ca valorile extreme să distorsioneze predicțiile de volatilitate
  • Cum? Prin winsorizare: reducerea magnitudinii randamentului la un nivel acceptabil cu funcția Return.clean() din pachetul PerformanceAnalytics, cu method = "boudt":
# Clean the return series
library(PerformanceAnalytics)
clmsftret <- Return.clean(msftret, method = "boudt")
# Plot them on top of each other
plotret <- plot(msftret, col = "red")
plotret <- addSeries(clmsftret, col = "blue", on = 1)
Modele GARCH în R

Randamente Microsoft brute vs. curățate

Modele GARCH în R

Impactul curățării asupra predicției de volatilitate

Generați predicții de volatilitate folosind randamente brute și curățate Microsoft

garchspec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)),
     variance.model = list(model = "gjrGARCH"), distribution.model = "sstd")
garchfit <- ugarchfit(data = msftret, spec = garchspec)
clgarchfit <- ugarchfit(data = clmsftret, spec = garchspec)

Comparați-le într-un grafic de serie temporală

plotvol <- plot(abs(msftret), col = "gray")
plotvol <- addSeries(sigma(garchfit), col = "red", on = 1)
plotvol <- addSeries(sigma(clgarchfit), col = "blue", on = 1)
plotvol
Modele GARCH în R

Impactul curățării asupra volatilității prognozate

Modele GARCH în R

Fiți robust: mai bine aproximativ corect decât exact greșit

Modele GARCH în R

Preparing Video For Download...