As this appears to be a general point of confusion, see below a
commented example:

#########################
library(rugarch)
library(xts)
data(sp500ret)
spx<-xts(sp500ret, as.Date(rownames(sp500ret)))
xreg<-xts(rnorm(nrow(spx)), index(spx))
colnames(xreg)<-"xreg"
# assume xreg is an actual series, so we lag it
# as we would do in a real application
xreg = lag(xreg,1)
inputs<-na.omit(cbind(spx, xreg, join="left"))
# real time forecasting
spec<-ugarchspec(mean.model=list(external.regressors=inputs[1:2000,2]))
fit<-ugarchfit(spec, inputs[1:2000,1])
# 2 ways to do real-time forecasting (ugarchforecast and ugarchfilter)
# Example: forecast points 2001:2020
xforc = xts(matrix(NA, ncol=2, nrow=20), index(inputs[2001:2020]))
sforc = xts(matrix(NA, ncol=2, nrow=20), index(inputs[2001:2020]))
for(i in 1:20){
  # Forecast(T+1)|Information(T)
  # 1. Create a similar spec as you used in estimation
  # and add the lagged regressor upto time T
specf1<-ugarchspec(mean.model=list(external.regressors=inputs[1:(2000+i-1),2]))
  # Pass the estimated coefficients from the estimation upto time 2000
  setfixed(specf1)<-as.list(coef(fit))
  # 2. Forecast using ugarchforecast on a specification with fixed
parameters
  # where n.old is used in order to recreate the correct start-up
conditions
  # used in the fitting routine
  f1<-ugarchforecast(specf1, inputs[1:(2000+i-1),1], n.ahead=1, n.old=2000)
# 3. Forecast using ugarchfilter on a specification with fixed parameters.
  # For this method, append a new row to the end of the data with zeros,
  # as you would do with related filters. This forces the routine to
  # output the value at time T+1
  newdat<-rbind(inputs[1:(2000+i-1),],xts(matrix(0, nrow=1, ncol=2),
tail(move(index(inputs[1:(2000+i-1)])),1)))
  specf2<-ugarchspec(mean.model=list(external.regressors=newdat[,2]))
  setfixed(specf2)<-as.list(coef(fit))
  f2<-ugarchfilter(specf2, newdat[,1], n.old=2000)
  # fitted = estimated conditional mean values for uGARCHfit objects
  # fitted = forecast/filtered conditional mean values for
uGARCHforecast/uGARCHfilter objects
  xforc[i,1] = as.numeric(fitted(f1))
  xforc[i,2] = as.numeric(tail(fitted(f2),1))
  # sigma = conditional sigma values (fitted/forecast etc)
  sforc[i,1] = as.numeric(sigma(f1))
  sforc[i,2] = as.numeric(tail(sigma(f2),1))
}
# check
all.equal(xforc[,1], xforc[,2])
all.equal(sforc[,1], sforc[,2])
# check that the 1-ahead forecast directly from the fitted object is also
# the same
all.equal(as.numeric(xforc[1,1]), as.numeric(fitted(ugarchforecast(fit,
n.ahead=1))))
all.equal(as.numeric(sforc[1,1]), as.numeric(sigma(ugarchforecast(fit,
n.ahead=1))))
# check the filter values vs the fitted values (i.e. why we use the
n.old argument)
all.equal(fitted(fit), fitted(f2)[1:2000])
all.equal(sigma(fit), sigma(f2)[1:2000])
#########################


Regards,

Alexios

On 25/06/2015 21:11, Diego Ignacio Acuña Rozas wrote:
Hi all, I'm using the rugarch package (which is btw an excellent piece
of software). I'm
using the A-PARCH(1,1) model with an external regressor (the Yang-Zhang
volatility proxy) and I've a doubt about how to perform forecasting
using the model:

  * Suppose I've n observations for the returns of a financial serie and
for the external regressor
  * Then, I use ugarchspec with an A-PARCH(0,1) model with the external
regressor, the ugarchspec and ugarchfit steps work pretty well.
  * Now I want to do forecasting. I don't quite fully understand the
limitation of this process. When I use ugarchforecast, the main
limitation is that I only can forecast 1-step ahead due to the external
regressor data limitation (I don't have more than n data for the
external regressor)???

Now, if I fit a model with the n external regressor data and if I do a
1-step ahead forecast for t+1, then the next day I recieve new data for
the external regressor, how to use the rugarch package to use this new
data and generate a new 1-step ahead forecast from t+1 to t+2? is this
possible?

Thanks in advance, I've read a lot of the rugarch documentation and from
this mailing list, but I'm a bit lost regarding to my doubts.
Any help will be really appreciated.

Best,



_______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions should 
go.

Reply via email to