Why a GARCH Conditional Mean Can Differ from the Sample Mean
Summary
The document explains why the estimated constant in a GARCH return model may differ from the ordinary sample mean. The sample mean gives every observation equal weight. Under a GARCH model, observations have different conditional volatility, so likelihood-based estimation can give relatively less influence to noisier observations and more influence to quieter ones.
An example compares an equity return series’ sample mean with the fitted constant from a normal GARCH(1,1) model; the values differ. The response interprets this difference as an efficiency effect rather than a contradiction of the zero-mean residual assumption: the intercept estimates the conditional mean, while residuals are deviations from that mean. The discussion presents a simplified weighted-mean intuition and does not explore model misspecification, alternative distributions, or estimation uncertainty.
Key ideas
- The ordinary sample mean weights all observations equally, regardless of their volatility.
- GARCH estimation accounts for changing conditional volatility, so its fitted mean can differ from the unweighted sample mean.
- Residuals have mean zero relative to the modeled conditional mean; this does not require that the fitted intercept equal the sample average.
- The example is specific to one fitted return model, and other GARCH specifications can produce different estimates.
Tags
Full text
# GARCH Model Constant in Regression
# GARCH Model Constant in Regression
When regressing a variable on a constant of 1, the coefficient of this constant is the mean. However, when I specified that the residuals follow a GARCH(1,1) model, the coefficient of the constant does not anymore represent the mean in my model. In my opinion this makes no sense since the residuals are defined to have a mean of zero. The mu in the example below should be the same as the mean of R_d.
Small Example in R:
```
library(rugarch)
library(quantmod)
getSymbols('C', from = '2000-01-01')
C = adjustOHLC(C, use.Adjusted = TRUE)
R_d = ROC(Cl(C), na.pad = FALSE)
mean(R_d)
-0.000436420257283668
spec = ugarchspec(mean.model = list(armaOrder = c(0, 0)), variance.model = list(model = 'sGARCH', garchOrder = c(1, 1)), distribution = 'norm')
fit = ugarchfit(data = R_d, spec = spec)
coef(fit)
mu: 0.000430648533256351
omega: 2.11481883824743e-06
alpha1: 0.0871525584932368
beta1: 0.911847414938857
```
For egarch or gjr, I get also different results for mu..
## Answer by Richard Hardy (score 1, accepted)
https://quant.stackexchange.com/a/27541
When calculating the simple arithmetic mean, each observation has an equal weight:
$$ \hat \mu^{simple} = \frac{1}{T}\sum_{t=1}^T x_t.$$
If the observations are $i.i.d.$, $\hat \mu^{simple}$ is an efficient estimator of the population mean.
When estimating the mean of a GARCH process, $\hat \mu^{simple}$ is no longer efficient. It makes sense to downweight the noisy observations relative to the low-noise observations so as to gain efficiency. So you fit a GARCH model and use inverse fitted standard deviations as weights:
$$ \hat \mu^{GARCH} = \frac{1}{\sum_{t=1}^T \hat \sigma_t}\sum_{t=1}^T \frac{x_t}{\hat \sigma_t}.$$
Generally the case of estimated weights gives a different number than the case of equal weights:
$$\hat \mu^{simple} \not\equiv \hat \mu^{GARCH}.$$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.