Skip to content

In rugarch, is Johnson's SU distribution properly scaled to mean=0, variance=1?

2 messages · Richard Hardy, Alexios Ghalanos

#
Dear all,

I have a question about the `ugarchspec` and `ugarchfit` functions from the
`rugarch` package in R. I wonder if the likelihood function of the
univariate GARCH model specifies the standardized residuals to have zero
mean and unit variance when the (standardized) residuals follow Johnson's
SU distribution -- as in
uspec=ugarchspec(mean.model=list(armaOrder=c(0,0)),
variance.model=list(model="sGARCH"), distribution.model="jsu")

My question is partly motivated by Simonato "GARCH processes with skewed
and leptokurtic innovations: Revisiting the Johnson Su case" (2012). The
paper shows that care needs to be taken to parameterize Johnson's SU
distribution properly when using it in GARCH models. A counterexample is
given where an earlier paper has made some mistakes in that regard,
invalidating the model to an extent.

The `rugarch` manual and vignette are fairly brief when it comes to
Johnson's SU distribution, so I am struggling to find the answer there.
There is no reference to Simonato (2012) there. The relevant source codes
are available e.g. here
https://github.com/cran/rugarch/tree/master/R
and more specifically here
https://github.com/cran/rugarch/blob/master/R/rugarch-distributions.R,
but they are a bit challenging to follow.

My simulations show the resulting empirical means and variances of
standardized residuals to fluctuate a fair bit (e.g. empirical variance
being anywhere between 0.95 and 1.05). I am not sure if this is due to
estimation imprecision or some other reason. I observe this not only in the
Johnson's SU case but also in other cases (e.g. normal).

Thank you in advance for your help!
#
Simple to quickly test:

library(rugarch)

f1 <- function(x) x * ddist(distribution = "jsu", x, mu = 0, sigma = 1, 
skew = -10, shape = 0.5)
f2 <- function(x) x^2 * ddist(distribution = "jsu", x, mu = 0, sigma = 
1, skew = -10, shape = 0.5)

# Mean
integrate(f1, -Inf, Inf, rel.tol = 1e-12)$value
 >-1.145875e-16

# Variance
integrate(f2, -Inf, Inf, rel.tol = 1e-12)$value
 >1

Page 24 of the vignette 
(https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf)
clearly states that the re-parameterization? of this distribution is 
from the Rigby and Stasinopoulos (2005) as implemented in their
gamlss package (and checked prior to implementing).

Alexios
On 2/16/22 4:22 AM, Richard Hardy wrote: