2016-08-28 71 views
0

我正在使用rugarch软件包,而且我很难理解external.regressors是如何工作的。使用外部回归器的Rugarch软件包

例如,我期望用gjr-garch(1,1)拟合时间序列应该给出与用S_(t-1)增加普通香草garch(1,1)拟合相同时间序列相同的结果, 1)* eps_(t-1)^ 2作为外部回归因子。

但是我没有得到相同的结果。

具体而言,这是我运行的代码:

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 

然而,这些是结果:

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 

增强-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 

我想要ct vxreg1和gamma1相当,这是不会发生的!

我在做什么错?

+0

我错过了外部回归器良好的默认边界。 012- setbounds(aug.s.spec)< - list(“vxreg1”= c(-1,1)) 设置外部回归器的边界我得到非常相似的结果,但不完全相同... – Luigi

回答