I have estimatate a GARCH model using the "rugarch" package in R. The data are the returns on the S&P500 named xst and stored as timeSeries object.

I would like to compare the kurtosis implied by the model specification vs the kurtosis observed in the real data used to specify the model. I searched in the documentation of the "rugarch" package but could not find how to do it.


  1. If I extract the fitted values of the GARCH model and use the kurtosis function (from package "moments") to calculate the kurtosis implied by the model, is this procedure the appropriate one to find the implied kurtosis?
  2. If I were to compare it with the observed kurtosis, what should I expect?
  3. How would I tell if it was the correct solution or not?

Here are the R functions:

model <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder =                
c(1,1)), mean.model = list(armaOrder = c(1,1), include.mean = T), 
                      distribution.model = "norm")

modelfit <- ugarchfit(model, xst)

s <-modelfit@fit$fitted.values

  • $\begingroup$ Answer in an answer, not a comment. If you could give more information about the nature of the data, or even toy/model data then that would help. If you could give something in the way of description of the model or model fit metrics, then that might also inform an answer. $\endgroup$ Mar 8, 2016 at 12:23
  • $\begingroup$ I update my question posting the R commands I used. do they make sense? $\endgroup$
    – Alessandro
    Mar 8, 2016 at 12:58

1 Answer 1


Ruey S. Tsay derives the excess kurtosis of a GARCH(1,1) model in his "Analysis of Financial Time Series" (2010) textbook, section 3.16, p. 165. (He also notes that the same idea applies to other GARCH models.)

The model under consideration is

$$ \begin{align} a_t &= \sigma_t \epsilon_t, \\ \sigma_t^2 &= \alpha_0 + \alpha_1 a_{t-1}^2 + \beta_1 \sigma_{t-1}^2, \end{align} $$

where $\alpha_0 > 0$, $\alpha_1 \geqslant 0$, $\beta_1 \geqslant 0$, $\alpha_1 + \beta_1 < 1$, $\epsilon_t$ is $i.i.d.$ with $\mathbb{E}(\epsilon_t) = 0$, $\text{Var}(\epsilon_t)=1$, $\mathbb{E}(\epsilon_t^4)=\text{K}_{\epsilon}+3$ where $\text{K}_{\epsilon}$ is the excess kurtosis of the standardized errors.

If the excess kurtosis of $a_t$, $\text{K}_{a}$, exists and if $1 - \alpha_1^2 (\text{K}_{\epsilon} + 2) - (\alpha_1 + \beta_1)^2 > 0$, then

$$ \text{K}_{a} = \frac{ (\text{K}_{\epsilon} + 3)(1 - (\alpha_1 + \beta_1)^2 ) }{ 1 - 2 \alpha_1^2 - (\alpha_1 + \beta_1)^2 - \text{K}_{\epsilon} \alpha_1^2 } - 3. $$

[Non-excess] kurtosis of $a_t$ will be $\text{K}_{a} + 3$.

In case the standardized errors are Gaussian, $\text{K}_{\epsilon} = 3$ and the excess kurtosis of $a_t$ becomes

$$ \text{K}_{a}^{Gaussian} = \frac{ 6 \alpha_1^2 }{ 1 - 2 \alpha_1^2 - (\alpha_1 + \beta_1)^2 }. $$

The textbook section contains a few more related results.

  • $\begingroup$ This is the unconditional kurtosis, correct? $\endgroup$
    – John
    Mar 8, 2016 at 18:39
  • 1
    $\begingroup$ Yes, this is unconditional kurtosis. $\endgroup$ Mar 8, 2016 at 18:54
  • $\begingroup$ Thank you Richard! So substituting parameters value in the the case of Gaussian GARCH I get the implied kurtosis.. what about the kurtosis of non Gaussian GARCH? I would need the kurtosis of the standarized error.. how can I compute it? $\endgroup$
    – Alessandro
    Mar 8, 2016 at 19:43
  • $\begingroup$ This is even simpler. You are assuming a distribution for the standardized error, hence you are assuming some specific kurtosis (unless there are some parameters of the distribution that are estimated when fitting the GARCH model; then just plug in those values into the kurtosis formula of the assumed distribution). $\endgroup$ Mar 8, 2016 at 19:48
  • $\begingroup$ Hi @RichardHardy I am simulating GARCH(1,1) process with standard normal innovations, but I am not finding agreement between sample estimates of the kurtosis and the theoretical value. I have posted my question with results here. I was wondering if you have any views on why there is such a large disagreement. I though that it may be a question of convergence, but even with $10^8$ time steps, I am not getting nearer the expected value. Thanks $\endgroup$
    – Confounded
    Oct 1, 2018 at 17:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.