Rugarch包使用外部回归器

时间:2016-08-28 16:11:25

标签: r finance

我正在使用rugarch包,我很难理解external.regressors的工作方式。

例如,我希望用gjr-garch(1,1)拟合时间序列应该给出与使用S_(t-1)增加的普通香草garch(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

我希望vxreg1和gamma1是等价的,这是不会发生的!

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我不认为这两个结果应该是一样的。 可以写出GJR-GARCH(1,1)方差模型:

GJR-GARCH(1,1) variance model

标准Garch(1,1)方差模型是:

sGARCH(1,1) variance model with external regressor

其中delta是vxreg1 coef。和reg是外部回归量。

如果我正确理解你的代码,s = It-1但是spx是返回而不是残差。因此,你的方程不等价。