Choosing GARCH Models for Returns and Checking Standardized Residuals
Summary
The document asks how to fit a univariate GARCH model to daily Dow Jones returns in R. It contrasts differencing log returns before fitting a standard GARCH(1,1) with fitting an integrated GARCH model to the undifferenced series, and questions whether a separate mean model is needed when the differenced series appears uncorrelated. It also asks how to interpret Ljung–Box results and standardized residual moments.
The reported diagnostics include a small Ljung–Box p-value for fitted residuals and standardized residuals whose mean and variance are near, but not equal to, their theoretical targets. These values alone do not establish whether the volatility model is adequate: residual autocorrelation, squared-residual dependence, distributional assumptions, and model specification also matter. The document is a modeling question rather than a resolved comparison, so it provides no fitted-model results or definitive guidance on which specification is appropriate.
Key ideas
- Differencing changes the modeled series and should be justified by the return definition and the question being studied.
- An integrated GARCH specification represents persistent conditional variance, not a general remedy for nonstationarity in the mean.
- A mean equation may still be specified even when returns appear uncorrelated.
- Residual and standardized-residual diagnostics assess different aspects of a fitted volatility model.
- Standardized residual moments near zero and one are not sufficient evidence of model adequacy.
Tags
Full text
# Fitting a non-stationary GARCH model # Fitting a non-stationary GARCH model I'm very new to financial time series. I have a dataset containing the daily simple returns of the Dow Jones Industrial Average and I want to model a (univariate) GARCH model for the daily logreturns. I'm working in R. First I transform the simple into log returns using `DJIA = log(DJIA_simple + 1)`. The Ljung-Box test says that the time series is not stationary, and when I take first differences the sample ACF and PACF are both 0 for all non-zero lags. I want to use the `rugarch` packages, but I don't know how to proceed. I think that I have two options, but I don't know the 'correct' one: - First difference the data and call the `rugarch::ugarchspec` function with `variance.model = list(model = "GARCH", garchOrder = c(1,1))` - Don't difference the data and call the `rugarch::ugarchspec` function with `variance.model = list(model ="iGARCH", garchOrder = c(1,1))`. (After doing either of this, I run `garch_djia <- rugarch::ugarchfit(spec = spec, data = DJIA, solver.control = list(trace=0))`.) Note that I am only interested in a GARCH model; I do not care that much about an ARMA or ARIMA model for the mean. (But I don't think I need one since after differencing the time series looks like white noise to me, with mean 0.) I am familiar with all the theory regarding time series, just not with actually modelling one in practice. Any help would be greatly appreciated. EDIT: When I run `stats::Box.test(garch_djia@fit$residuals, lag = 4, type = "Ljung-Box", fitdf = 2)`, I get a p-value of 0.0001049 (similar results for other values of `fitdf`, but I believe that for `GARCH(p, q)` models the value of `fitdf` needs to be the sum of `p` and `q`. Additionally, running `eps_t = (garch_djia@fit$residuals)/(garch_djia@fit$sigma)` results in a variable with mean `-0.04487383` and variance `1.135489`. Since we are modelling $a_t = \sigma_t \epsilon_t$ (with $a_t$ the residuals and $\epsilon_t \sim (0, 1)$), does this mean the model is 'good' because the mean and variance of `eps_t` are relatively close to 0 and 1?
Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.