Skip to content

How to add lagged values to rugarch-model

5 messages · Alexios Ghalanos, Bob, Lasse Thorst

#
Hi - First question here, so please bear with me:

I would like to added lagged values to a rugarch-model, but have been
unable to find answers in the vignette.

Basic test-code:

require(rugarch)
require(quantmod)

x = runif(n = 1000, min = -5, max = 100)
ext.reg_lagged = cbind(Lag(x, k = 1), Lag(x, k = 2))
ext.reg = cbind(x + runif(n = 1000, min = 5, max = 20), x - runif(n = 1000,
min = 5, max = 15))

fit.spec <- ugarchspec(variance.model = list(model = "sGARCH",
                                                 garchOrder = c(1, 1)),
                       mean.model         = list(armaOrder = c(3, 1),
                                                 include.mean = TRUE,
                                                 external.regressors =
ext.reg), # with ext.reg.lagged it does not work.
                       distribution.model = "sstd")

fit      <- ugarchfit(data = x, spec = fit.spec, solver = "hybrid")

Now this works perfectly, but if I exchange the external.regressors =
ext.reg_lagged
it no longer works.

How can you do this in rugarch? Or do I need to try another package?

/Regards Lasse
#
ext.reg_lagged has NA's in the first few lines which are NOT allowed.
Even though you are using an ARMA(3,1), the conditional mean model will 
still make use of those values for t+1,t+2 and t+3, together with the 
'intercept'. Replace the NA's with either zero or their mean values (or 
anything other than NA).

Alexios
On 05/11/2014 14:16, Lasse Thorst wrote:
Bob
#
Lasse,
Your problem is that you have NAs in your external regressor matrix.  Since
you lagged it twice, you have 2 NAs.  Try the code below.
Thanks for the reproducible example, it made it really easy.
Bob


require(rugarch)
require(quantmod)

x = runif(n = 1000, min = -5, max = 100)
ext.reg_lagged = cbind(Lag(x, k = 1), Lag(x, k = 2))
ext.reg = cbind(x + runif(n = 1000, min = 5, max = 20), x - runif(n = 1000,
min = 5, max = 15))

*x <- x[-c(1:2)]*
*ext.reg_lagged = ext.reg_lagged[-c(1:2), ]*

fit.spec <- ugarchspec(variance.model = list(model = "sGARCH",
                                                 garchOrder = c(1, 1)),
                       mean.model         = list(armaOrder = c(3, 1),
                                                 include.mean = TRUE,
                                                 external.regressors =
                           ext.reg_lagged), # with ext.reg.lagged it does
not work.
                       distribution.model = "sstd")
fit      <- ugarchfit(data = x, spec = fit.spec, solver = "hybrid")
On Wed, Nov 5, 2014 at 9:16 AM, Lasse Thorst <thorstlasse at gmail.com> wrote:

            

  
  
#
Thanks!

Quick follow-up.

My knowledge about ARMA-GARCH models is not perfect, but if want a lagged
time series in the model - to work with seasonality - how can I then add
it, if not via the ext.reg?

For example, in STATA I would do something like choosing my "x  AR(24)
AR(48)" for adding the 24th and 48th lag.
I would here like to add the 24th and 48th lag to the mean model in my
ARMA-GARCH model.

Should I look at another package?

2014-11-05 15:28 GMT+01:00 Robert Harlow <rharlow86 at gmail.com>:

  
  
#
On 05/11/2014 14:59, Lasse Thorst wrote:
Try:
spec<-ugarchspec(mean.model=list(armaOrder=c(48,0)))
x = as.list(rep(0,46))
names(x)<-c(paste("ar",1:23,sep=""),paste("ar",25:47,sep=""))
setfixed(spec)<-x
Why not.

Alexios