Skip to content
Prev 2168 / 15274 Next

garch vs garchFit - minimum sample size

In comparing garch{tseries} with garchFit{fGarch}, it seems that 
the latter is more general, as it allows simultaneous estimation of an 
arma model with possibly nonnormal garch or aparch noise, while 'garch' 
fits only a garch model to a series assumed to have mean zero.  I 
simulated 10,000 observations from the garch(1,1) model given as an 
example in the 'garchSim' help page, and got very similar answers from 
'garch' as from 'garchFit' which I restricted the latter to fit the 
model of the former: 

x10k <- garchSim(n=10000)

summary(fit10k <- garch(x10k))
    Estimate  Std. Error  t value Pr(>|t|)   
a0 1.149e-06   1.467e-07    7.832 4.88e-15 ***
a1 1.032e-01   9.433e-03   10.942  < 2e-16 ***
b1 7.852e-01   2.039e-02   38.499  < 2e-16 ***
# simulated a0=1e-6, a1=0.1, b1=0.8

fit10k. <- garchFit(~garch(1,1), data=x10k, include.mean=FALSE)
summary(fit10k.)
        Estimate  Std. Error  t value Pr(>|t|)   
omega  1.148e-06   1.437e-07     7.99 1.33e-15 ***
alpha1 1.032e-01   9.027e-03    11.44  < 2e-16 ***
beta1  7.853e-01   1.963e-02    39.99  < 2e-16 ***

      With only 100 observations, 'garch' complained 'singular 
information' and quite early with different answers from garchFit: 

summary(fit100 <- garch(x10k[1:100]))
    Estimate  Std. Error  t value Pr(>|t|)
a0 9.842e-06          NA       NA       NA
a1 5.000e-02          NA       NA       NA
b1 5.000e-02          NA       NA       NA

fit100. <- garchFit(~garch(1,1), data=x10k[1:100], include.mean=FALSE)
summary(fit100.)
        Estimate  Std. Error  t value Pr(>|t|)  
omega  2.056e-06   1.677e-06    1.226  0.22022  
alpha1 1.387e-01   1.193e-01    1.163  0.24469  
beta1  6.704e-01   2.045e-01    3.278  0.00105 **

      However, with 500 observations, 'garch' thought it converged and 
again gave answers very similar to garchFit: 

summary(fit500 <- garch(x10k[1:500]))
    Estimate  Std. Error  t value Pr(>|t|)   
a0 1.466e-06   6.432e-07    2.279  0.02265 * 
a1 1.340e-01   4.405e-02    3.042  0.00235 **
b1 7.215e-01   9.292e-02    7.765 8.22e-15 ***
fit500. <- garchFit(~garch(1,1), data=x10k[1:500], include.mean=FALSE)
summary(fit500.)
        Estimate  Std. Error  t value Pr(>|t|)   
omega  1.450e-06   6.162e-07    2.352  0.01867 * 
alpha1 1.340e-01   4.425e-02    3.029  0.00245 **
beta1  7.236e-01   8.430e-02    8.583  < 2e-16 ***

      My conclusion from this is to use 'garchFit'. 

      By the way, the more general syntax for 'garchFit' is illustrated 
by the following: 

library(FinTS)
data(sp500)
library(fGarch)
spFit30.11 <- garchFit(sp500~arma(3,0)+garch(1,1), data=sp500)

      Spencer
tom soyer wrote: