I am analyzing FTSE 100 series, from 2007-01-01 to 2010-12-31 (university exam homework). I have to use the data 'til 2010-11-30 as sample, and the remaining (23) observations as in-sample forecast (to check the predictive performances of my model). The model fitted is an ARMA(3,2) with GARCH(1,1) disturbances on the differenced sample (actually, the model is an ARIMA one):
model.spec.final = ugarchspec(variance.model=list(model="fGARCH", submodel="GARCH", garchOrder=c(2,1)), mean.model = list(armaOrder=c(3,2), include.mean=F,arfima = FALSE), distribution.model="std", fixed.pars=list(alpha1=0))
model.fit.final = ugarchfit(spec=model.spec.final, data=d_FTSE, out.sample=23, solver.control=list(trace=0))
The forecast problem:
model.forecast = ugarchforecast(model.fit.final, n.ahead=23, n.roll=23, out.sample = 23)
gives me this output:
> model.forecast
*------------------------------------*
* GARCH Model Forecast *
*------------------------------------*
Model: fGARCH
fGARCH Sub-Model: GARCH
Horizon: 23
Roll Steps: 23
Out of Sample: 23
0-roll forecast [T0=2010-11-30]:
Series Sigma
T+1 -8.4391 82.56
T+2 7.2799 79.80
T+3 2.7655 NA
T+4 -9.5286 NA
T+5 5.8482 NA
T+6 3.9431 NA
T+7 -9.1431 NA
T+8 4.3687 NA
T+9 4.8931 NA
T+10 -8.5682 NA
T+11 2.9420 NA
T+12 5.6136 NA
T+13 -7.8394 NA
T+14 1.5987 NA
T+15 6.1117 NA
T+16 -6.9922 NA
T+17 0.3636 NA
T+18 6.3994 NA
T+19 -6.0613 NA
T+20 -0.7440 NA
T+21 6.4927 NA
T+22 -5.0795 NA
T+23 -1.7100 NA
the result is the same if I remove the specification on the out of sample obs (since it is specified also in the model fitting) and if I modify the n.roll parameter. why all those NA? how can i solve the problem?
trying with this code:
spec=getspec(model.fit.final)
setfixed(spec) <- as.list(coef(model.fit.final))
model.forecast.2= ugarchforecast(spec, n.ahead=1, n.roll=23, data=d_FTSE[1:length(d_FTSE), ,drop=F],out.sample=23)
that comes from the answer to another question (Forecasting using rugarch package) it seems to work, but when I plot the results:
> plot(model.forecast.2,which="all")
Error in rect(fdates[i - 1], Zdn[i - 1], fdates[i], Zup[i], col = colors()[142], :
cannot mix zero-length and non-zero-length coordinates
It is very frustrating.
basic stats:
> stat.desc(d_FTSE)
FTSE.Adjusted
nbr.val 1044.0000000
nbr.null 33.0000000
nbr.na 0.0000000
min -391.0996100
max 431.2998050
range 822.3994150
sum -320.8999030
median 0.0000000
mean -0.3073754
SE.mean 2.4136309
CI.mean.0.95 4.7361256
var 6081.9409506
std.dev 77.9867998
coef.var -253.7184283
thank you in advance.
I've been able to succesfully use the function ugarchroll: does it a similar work as ugarchforecast? here is a part of the output:
> model.forecast3
*-------------------------------------*
* GARCH Roll *
*-------------------------------------*
No.Refits : 2
Refit Horizon : 22
No.Forecasts : 23
GARCH Model : fGARCH(2,1)
fGARCH SubModel : GARCH
Distribution : std
Forecast Density:
Mu Sigma Skew Shape Shape(GIG) Realized
2010-12-01 -8.4391 82.5557 0 10.8735 0 114.2002
2010-12-02 4.3050 79.8021 0 10.8735 0 125.1001
2010-12-03 0.6100 68.5355 0 10.8735 0 -22.3003
2010-12-06 -12.0731 59.4221 0 10.8735 0 25.0000
(...)