2016-08-28 4 views
0

Ich benutze das rugarch-Paket und ich habe Probleme zu verstehen, wie die external.regressors arbeiten.Rugarch-Paket mit externen Regressoren

Zum Beispiel würde ich erwarten, dass die Anpassung einer Zeitreihe mit gjr-garch (1,1) zu den gleichen Ergebnissen führen würde, wie die gleiche Zeitreihe mit dem plain vanilla garch (1,1) mit S_ (t- 1) * eps_ (t-1)^2 als externer Regressor.

Allerdings bekomme ich nicht die gleichen Ergebnisse.

Insbesondere ist dies der Code, den ich laufen:

rm(list = ls()) # empty memory 

library(rugarch) 
library(xts) 
data(sp500ret) 
spx <- xts(sp500ret, as.Date(rownames(sp500ret))) 
t = length(spx) 
# assuming mu = 0; r_t = eps_t 
s = rep(0,t) 
for(i in 1:t){ 
    if(spx[i]<0){s[i]=1} 
} 
# eps.neg represents the leverage effect regressor 
eps.neg <- xts(spx*s, as.Date(rownames(sp500ret))) 
colnames(eps.neg)<-"eps.neg" 
# lag eps.neg 
eps.neg.lag = lag(eps.neg,1) 
inputs<-na.omit(cbind(spx, eps.neg.lag, join="left")) 
# gjrgarch(1,1) 
gjr.spec <- ugarchspec(variance.model = list(model='gjrGARCH', garchOrder=c(1,1), 
         external.regressors = NULL, variance.targeting = T), 
         mean.model = list(armaOrder=c(0,0)),fixed.pars=list(mu = 0)) 
gjr.fit <- ugarchfit(spec=gjr.spec, data=inputs[,1], 
        solver.control=list(trace = 1)) 
# garch(1,1) augmented with inputs[,2] 
aug.s.spec <- ugarchspec(variance.model = list(model='sGARCH', garchOrder=c(1,1), 
         external.regressors = inputs[,2]^2, variance.targeting = T), 
         mean.model = list(armaOrder=c(0,0)),fixed.pars=list(mu = 0)) 
aug.s.fit <- ugarchfit(spec=aug.s.spec, data=inputs[,1], 
         solver.control=list(trace = 1)) 
#results 
gjr.fit 
aug.s.fit 

aber diese sind die Ergebnisse:

GJR-GARCH (1,1)

Robust Standard Errors: 
     Estimate Std. Error t value Pr(>|t|) 
mu  0.000000   NA   NA  NA 
alpha1 0.007933 0.000184  43.139  0 
beta1 0.909048 0.000008 117316.512  0 
gamma1 0.139258 0.004006  34.764  0 
omega 0.000002   NA   NA  NA 

Augmented-Garch (1,1)

Robust Standard Errors: 
     Estimate Std. Error t value Pr(>|t|) 
mu  0.000000   NA   NA  NA 
alpha1 0.085378 0.002123 4.0223e+01 0.00000 
beta1 0.904696 0.000001 1.0116e+06 0.00000 
vxreg1 0.000000 0.000060 1.6700e-04 0.99987 
omega 0.000001   NA   NA  NA 

Ich würde erfahren ct vxreg1 und gamma1 sind äquivalent, was nicht passiert!

Was mache ich falsch?

+0

Mir fehlten gute Standardgrenzen für die externen Regressoren. setbounds (aug.s.spec) <- list ("vxreg1" = c (-1, 1)) Festlegen der Grenzen für den externen Regressor Ich bekomme sehr ähnliche Ergebnisse, aber nicht die gleichen ... – Luigi

Antwort

0

Ich glaube nicht, dass diese beiden Ergebnisse gleich sein sollten. Die GJR-GARCH (1,1) Varianzmodell geschrieben werden kann:

GJR-GARCH(1,1) variance model

Die Standard Garch (1,1) Varianzmodell ist:

sGARCH(1,1) variance model with external regressor

wo das Delta ist vxreg1 coef. und reg sind die externen Regressoren.

Wenn ich Ihren Code richtig verstanden habe, ist s = It-1 aber SPX sind die Rückgaben und nicht die Residuen. Daher sind Ihre Gleichungen nicht gleichwertig.

Verwandte Themen