Fit GARCH Models to Time Series

Fit a Generalized Autoregressive Conditional Heteroscedastic GARCH (p, q) time series model to the data by computing the maximum-likelihood estimates of the conditionally normal model.

garch (x, order = c(1, 1), coef = NULL, itmax = 200, eps = NULL,
       grad = c("analytical","numerical"), series = NULL, trace = TRUE, ...)
predict (object, newdata, genuine = FALSE)
coef (object)
residuals (object)
fitted (object)
print (object, digits = max(3,.Options$digits-3))
summary (object)
plot (object, ask = interactive())
print.summary (object, digits = max(3,.Options$digits-3),
               signif.stars = .Options$show.signif.stars, ...)
a numeric vector or time series.
a two dimensional integer vector giving the orders of the model to fit. order[2] corresponds to the ARCH part and order[1] to the GARCH part.
If given this numeric vector is used as the initial estimate of the GARCH coefficients. Default initialization is to set the GARCH parameters to slightly positive values and to initialize the intercept such that the unconditional variance of t
gives the maximum number of log-likelihood function evaluations itmax and the maximum number of iterations 2*itmax the optimizer is allowed to compute.
defines the absolute (max(1e-20,eps^2)) and relative function convergence tolerance (max(1e-10,eps^(2/3))), the coefficient-convergence tolerance (sqrt(eps)), and the false convergence tolerance (
indicates if the analytical gradient or a numerical approximation is used for the optimization.
name for the series. Defaults to deparse(substitute(x)).
trace optimizer output?
a fit from garch.
a numeric vector or time series to compute GARCH predictons. Defaults to eval(parse(text=object$series)).
a logical indicating whether a genuine prediction should be made, i.e., a prediction for which there is no target observation available.
digits, signif.stars
see print.coefmat.
Should the plot method work interactively? See interactive.
either additional arguments for qr when computing the asymptotic standard errors of coef (garch), or additional arguments for print

garch uses a Quasi-Newton optimizer to find the maximum-likelihood estimates of the conditionally normal model. The first max(p,q) values are assumed to be fixed. The optimizer uses a hessian approximation computed from the BFGS update. Only a Cholesky factor of the Hessian approximation is stored. For more details see Dennis et al. (1981), Dennis and Mei (1979), Dennis and More (1977), and Goldfarb (1976). The gradient is either computed analytically or using a numerical approximation.

predict returns +/- the conditional standard deviation predictions from a fitted GARCH model.

coef returns the coefficient estimates.

residuals returns the GARCH residuals, i.e., the time series used to fit the model divided by the computed conditional standard deviation predictions for this series. Under the assumption of conditional normality the residual series should be i.i.d. standard normal.

fitted returns +/- the conditional standard deviation predictions for the series which has been used to fit the model.

print, summary, plot, and print.summary provide the usual generic functions for fitted GARCH models. summary computes the asymptotic standard errors of the coefficient estimates from an outer-product approximation of the Hessian evaluated at the estimates, see Bollerslev (1986). It furthermore tests the residuals for normality and remaining ARCH effects, see jarque.bera.test and Box.test. plot graphically investigates normality and remaining ARCH effects for the residuals.


  • For garch and its methods print and plot a list of class "garch" with the following elements:
  • orderthe order of the fitted model.
  • coefestimated GARCH coefficients for the fitted model.
  • n.likelithe negative log-likelihood function evaluated at the coefficient estimates (apart from some constant).
  • n.usedthe number of observations of x.
  • residualsthe series of residuals.
  • fitted.valuesthe bivariate series of conditional standard deviation predictions for x.
  • seriesthe name of the series x.
  • frequencythe frequency of the series x.
  • callthe call of the garch function.
  • asymptotic-theory standard errors of the coefficient estimates.
  • For predict a bivariate time series (two-column matrix) of predictions. For coef, a numeric vector, for residuals and fitted a univariate (vector) and a bivariate time series (two-column matrix), respectively.

    For summary and print.summary a list of class "summary.garch".


A. K. Bera and M. L. Higgins (1993): ARCH Models: Properties, Estimation and Testing. J. Economic Surveys 7 305-362. T. Bollerslev (1986): Generalized Autoregressive Conditional Heteroscedasticity. Journal of Econometrics 31, 307-327.

R. F. Engle (1982): Autoregressive Conditional Heteroscedasticity with Estimates of the Variance of United Kingdom Inflation. Econometrica 50, 987-1008.

J. E. Dennis, D. M. Gay, and R. E. Welsch (1981): Algorithm 573 - An Adaptive Nonlinear Least-Squares Algorithm. ACM Trans. Math. Software 7, 369-383.

J. E. Dennis and H. H. W. Mei (1979): Two New Unconstrained Optimization Algorithms which use Function and Gradient Values. J. Optim. Theory Applic. 28, 453-482.

J. E. Dennis and J. J. More (1977): Quasi-Newton Methods, Motivation and Theory. SIAM Rev. 19, 46-89.

D. Goldfarb (1976): Factorized Variable Metric Methods for Unconstrained Optimization. Math. Comput. 30, 796-811.

  • garch
  • predict.garch
  • coef.garch
  • residuals.garch
  • fitted.garch
  • print.garch
  • summary.garch
  • plot.garch
  • print.summary.garch
n <- 1100
a <- c (0.1, 0.5, 0.2)  # ARCH(2) coefficients
e <- rnorm (n)  
x <- double (n)
x[1:2] <- rnorm (2, sd = a[1]/(1.0-a[2]-a[3])) 
for (i in 3:n)  # Generate ARCH(2) process
  x[i] <- e[i]*sqrt(a[1]+a[2]*x[i-1]^2+a[3]*x[i-2]^2)
x <- ts(x[101:1100])
x.arch <- garch (x, order = c(0,2))  # Fit ARCH(2) 
summary (x.arch)                     # Diagnostic tests
plot (x.arch)                        

data (EuStockMarkets)  
dax <- diff(log(EuStockMarkets))[,"DAX"]
dax.garch <- garch (dax)  # Fit a GARCH(1,1) to DAX returns
summary (dax.garch)       # ARCH effects are filtered. However, 
plot (dax.garch)          # conditional normality seems to be violated
Documentation reproduced from package tseries, version 0.7-4, License: GPL (see file COPYING), except for ./src/muin2ser.f and ./misc which are free for non-commercial purposes. See file README for details.

Community examples

Looks like there are no examples yet.