# GARCH distribution

I am having a hard time grasping the concept of how a GARCH model can have normal distributed innovations, yet the process is leptokurtic. I have read in the book 'Handbook of Volatility models and their applications' that: Link

A great advantage of GARCH models is that the returns are not assumed independent, and even if they are assumed Gaussian conditional to past returns, unconditionally they are not Gaussian, because volatility clustering generates leptokurtosis

So if we assume the innovation to be normal or t distributed what affect will it have on the final GARCH?

• The standardized (unobserved) innovations are normal, but the nonstandardized (observed) innovations are leptokurtic. Does that help? By analogy, a regression model with normal innovations can have the dependent variable distributed in all kinds of weird ways, depending on the distributions of the regressors and the slope coefficients. – Richard Hardy Mar 6 '18 at 20:34
• So if the innovations can have a normal distribution and the dependent variable (the residuals which we are modelling in the case of GARCH) will be distributed in any way, why should we bother putting any other distribution rather than the normal on the innovations? – Anna Mar 6 '18 at 20:43
• In GARCH we have no other regressors, so the dependence between the distributions of the standardized and the nonstandardized innovations is much tighter than between the distributions of the dependent variable and the errors in a regression model. We might need nonnormal std. innovations to get a good model for the nonstd. innovations. – Richard Hardy Mar 6 '18 at 20:51
• @RichardHardy So the conditional distribution of the returns has to be the same distribution as the innovations while the unconditional distribution can have any other distribution? – Anna Mar 7 '18 at 10:39
• This is a little difficult to answer without a model. Suppose \begin{aligned} y_t &= \mu_t + u_t, \\ \mu_t &= ..., \\ u_t &= \sigma_t\varepsilon_t, \\ \sigma_t^2 &= \omega + \alpha u_{t-1}^2 + \beta \sigma_{t-1}^2, \\ \varepsilon_t &\sim i.i.D(0,1), \\ \end{aligned} where $\mu_t$ is the conditional mean of $y_t$ (which could be a constant, an ARMA-type of process or something else). In terms of this model, what is your question? – Richard Hardy Mar 7 '18 at 11:05

Given the model \begin{aligned} y_t &= \mu_t + u_t, \\ \mu_t &= ..., \\ u_t &= \sigma_t\varepsilon_t, \\ \sigma_t^2 &= \omega + \alpha u_{t-1}^2 + \beta \sigma_{t-1}^2, \\ \varepsilon_t &\sim i.i.D(0,1), \\ \end{aligned} where $\mu_t$ is the conditional mean of $y_t$ (which could be a constant, an ARMA-type of process or something else), a question from the comments reads:

I want to understand the following statement
A great advantage of GARCH models is that the returns are not assumed independent, and even if they are assumed Gaussian conditional to past returns, unconditionally they are not Gaussian, because volatility clustering generates leptokurtosis
What I understand is that since $\varepsilon_t$ is Gaussian then $u_t$ is also Gaussian conditional on the past. Now what do we mean by unconditionally not Gaussian?

When $D$ in the model above is the Gaussian distribution, $u_t | I_{t-1} \sim i.i.N(0,\sigma_t^2)$. Here, $I_{t-1}$ is the information up to and including the time period $t-1$. Hence, $u_t$ is conditionally Gaussian. However, unconditionally $u_t$ is not Gaussian, i.e. it is not true that $u_t \sim i.i.N(0,\sigma_t^2)$. Actually, $u_t$ will have a heavier tail than the Gaussian distribution. You can see this by simulating a path from a GARCH model (e.g. with the function ugarchpath from the rugarch package -- see the example at the bottom of the help file) and examining a QQ plot.

library(rugarch)
spec = ugarchspec(variance.model=list(model="sGARCH", garchOrder=c(1,1)), mean.model=list(armaOrder=c(0,0), include.mean=TRUE), distribution.model="norm", fixed.pars=list(mu=0.001,omega=0.00001, alpha1=0.05, beta1=0.90))
path.sgarch = ugarchpath(spec, n.sim=1000, n.start=1, m.sim=1)
x = path.sgarch@path\$seriesSim
qqnorm(x); qqline(x)