[prev in list] [next in list] [prev in thread] [next in thread] 

List:       r-sig-finance
Subject:    Re: [R-SIG-Finance] help needed for rugarch forecast function
From:       alexios <alexios () 4dscape ! com>
Date:       2011-10-27 18:59:04
Message-ID: 4EA9A9F8.5080006 () 4dscape ! com
[Download RAW message or body]

Dear John,

The reason possibly no one, including the developer, have not replied is 
that you provide a very large example, in a specialized package, for 
which is it not possible to reproduce without the data, but is also not 
consistent in places:

1. "m.pred<- ugarchforecast(cl_ar4.fit, data = yCL05, external.forecasts 
= list(mregfor = ext), n.ahead = 1, n.roll = 322)"

You did not tell us what cl_ar4.fit is (since you are using the data 
option, it should be of class uGARCHspec).

2. In the next example you set "fixed.pars = list(ar33 = 0,omega = 0)" 
for an arma(4,0) model. Did you mean "ar3=0".

As the developer, I would be happy to look into this, but you should 
please take the time to create fully reproducible example and sent me an 
email off list with the dataset so that I might try to see whether it is 
a bug in the handling of this or some wrong use of the functions.

Regards,
Alexios

On 27/10/2011 19:29, johnzli@comcast.net wrote:
> Dear all:
> 
> I posted this question before, and did not receive feedback. If I posted in the \
> wrong mailing list, I apologize here in advance, and will post it to the right \
> place next time. 
> I am building a model for forecasting using rugarch package (version 1.0-5, R \
> version 2.13.2). To verify the behavior of rugarch model, I also performed the same \
> exercise using simple linear regression lm. All the data here is return times 100, \
> so 0.5 represents 0.5%. If we look at the regression coefficients obtained from \
> rugarch and lm, they are fairly close. So for practical purpose, I would argue that \
> the DAC number given by DACTest from rugarch package should be very close to each \
> other, and they are widely different. 
> I suspect that when you perform regression in rugarch armaOrder = c(0, 0), and \
> define regressors by using external.regressors, somehow the forecast function \
> ugarchforecast will give results that are different from prediction given by \
> predict.lm function. 
> Can anyone kindly provide your feedback?
> 
> Thank you very much.
> 
> 
> 
> The code and selected output looks like this:
> 
> 
> > min.model<- lm(yCL05 ~ -1, data = data.frame(yCL05, xCL05))
> > fwd.model<- step(min.model, direction = "forward", scope = (~CL05_1 + CL05_2 + \
> > CL05_3 + CL05_4), trace = 0) summary(fwd.model)
> > 
> > summary(fwd.model)
> 
> Call:
> lm(formula = yCL05 ~ CL05_1 + CL05_4 + CL05_2 - 1, data = data.frame(yCL05,
> xCL05))
> 
> Residuals:
> Min       1Q   Median       3Q      Max
> -0.48690 -0.07605  0.00166  0.07853  0.64095
> 
> Coefficients:
> Estimate Std. Error t value Pr(>|t|)
> CL05_1  0.98036    0.01746   56.16<  2e-16 ***
> CL05_4 -0.14149    0.01228  -11.53<  2e-16 ***
> CL05_2 -0.11615    0.02038   -5.70 1.31e-08 ***
> ---
> Signif. codes:  0 ‘***' 0.001 ‘**' 0.01 ‘*' 0.05 ‘.' 0.1 ‘ ' 1
> 
> Residual standard error: 0.1312 on 3217 degrees of freedom
> Multiple R-squared: 0.7201,     Adjusted R-squared: 0.7199
> F-statistic:  2759 on 3 and 3217 DF,  p-value:<  2.2e-16
> 
> > pred<- predict(fwd.model, newdata = tail(xCL05, (dailyDataPoint + 1)))
> > obsx<- tail(yCL05, dailyDataPoint + 1)
> > print(DACTest(as.matrix(pred), as.matrix(obsx), test = "PT", conf.level = 0.95))
> $Test
> [1] "Pesaran and Timmermann"
> 
> $Stat
> [1] 12.43268
> 
> $p.value
> [1] 0
> 
> $H0
> [1] "Independently Distributed"
> 
> $Decision
> [1] "Reject  H0"
> 
> $DirAcc
> [1] 0.8452012
> > print(DACTest(as.matrix(pred), as.matrix(obsx), test = "AG", conf.level = 0.95))
> $Test
> [1] "Anatolyev and Gerko"
> 
> $Stat
> [1] 12.59703
> 
> $p.value
> [1] 0
> 
> $H0
> [1] "No Predictability"
> 
> $Decision
> [1] "Reject  H0"
> 
> $DirAcc
> [1] 0.8452012
> 
> # Now results from rugarch using sGARCH(1, 1) + ARMA(0, 0) + XREG(M)
> > ext<- data.matrix(xCL05)
> > startPar = as.list(coef(m.fit))
> > m.spec<- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, \
> > 1)), mean.model = list(armaOrder = c(0, 0), include.mean = FALSE, \
> > external.regressors = ext), distribution.model = "std", start.pars = startPar, \
> > fixed.pars = list(mxreg3 = 0,omega = 0))
> m.fit<- ugarchfit(data = yCL05, spec = m.spec, out.sample = 322, solver = "solnp", \
> fit.control = list(scale = 1))
> > m.fit
> *---------------------------------*
> *          GARCH Model Fit        *
> *---------------------------------*
> 
> Conditional Variance Dynamics
> -----------------------------------
> GARCH Model     : sGARCH(1,1)
> Mean Model      : ARFIMA(0,0,0)
> Distribution    : std
> 
> Optimal Parameters
> ------------------------------------
> Estimate  Std. Error  t value Pr(>|t|)
> mxreg1  0.975195    0.013854  70.3926        0
> mxreg2 -0.119729    0.015947  -7.5080        0
> mxreg3  0.000000          NA       NA       NA
> mxreg4 -0.132482    0.009730 -13.6159        0
> omega   0.000000          NA       NA       NA
> alpha1  0.035356    0.004597   7.6919        0
> beta1   0.963644    0.004773 201.9094        0
> shape  10.396033    1.192115   8.7207        0
> 
> Robust Standard Errors:
> Estimate  Std. Error  t value Pr(>|t|)
> mxreg1  0.975195    0.014851  65.6665        0
> mxreg2 -0.119729    0.016830  -7.1139        0
> mxreg3  0.000000          NA       NA       NA
> mxreg4 -0.132482    0.010469 -12.6544        0
> omega   0.000000          NA       NA       NA
> alpha1  0.035356    0.006289   5.6217        0
> beta1   0.963644    0.006833 141.0259        0
> shape  10.396033    1.182089   8.7946        0
> 
> LogLikelihood : 3895.616
> 
> Information Criteria
> ------------------------------------
> 
> Akaike       -1.5092
> Bayes        -1.4990
> Shibata      -1.5092
> Hannan-Quinn -1.5056
> ...
> > m.pred<- ugarchforecast(cl_ar4.fit, data = yCL05, external.forecasts = \
> > list(mregfor = ext), n.ahead = 1, n.roll = 322) fpm(m.pred, summary = TRUE)
> MSE       MAE       DAC
> 1 0.09805421 0.2428945 0.5434783
> 
> The problem arises when you compare DAC given by rugarch package and the one given \
> by DACTest from rugarch package for lm regression. In another test (the results are \
> not listed here), I ran AR(4) model in rugarch with ugarchspec like:
> > m.spec<- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, \
> > 1)), mean.model = list(armaOrder = c(4, 0), include.mean = FALSE), \
> > distribution.model = "std", start.pars = startPar, fixed.pars = list(ar33 = \
> > 0,omega = 0))
> and then ran
> > fpm(m.pred, summary = TRUE)
> 
> then it will give a results similar to DAC from the one obtained from lm package.
> 
> It seems the problem arises when you try to perform regression with external \
> regressors with armaOrder = c(0, 0) ... 
> Any help will be greatly appreciated..
> 
> 
> Thank you.
> 
> John Li
> 
> 	[[alternative HTML version deleted]]
> 
> 
> 
> 
> _______________________________________________
> R-SIG-Finance@r-project.org 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.

_______________________________________________
R-SIG-Finance@r-project.org 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.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic