# [R-SIG-Finance] issues with NGARCH in rgarch package

Liviu Andronic landronimirc at gmail.com
Sun May 3 01:45:37 CEST 2009

```Dear Alexios,

We are currently using rgarch from R-forge to compute basic GARCH(1,1)
and more fancy NGARCH(1,1) models. For the simple garch(1,1) we get
different results from tseries::garch(), fGarch::garchFit() and
rgarch::ugarchfit(), however fairly comparable; if you're interested,
I could post self-contained code highlighting the differences.

For the NGARCH (via fGARCH), however, we get funny results and I
believe it would be a bug in the code. If you look at the Hentschel's
"Family GARCH" model [1], NGARCH is obtained when lambda is fixed and
=2 (page 9 and 11 of the .pdf). However ugarchfit() seems to try to
estimate this guy.
A second issue, ugarchfit() will not try to estimate the assymetry
shift: `theta' in our econometrics class, `b' in the article (page 11
of the .pdf), or `fb' in the rgarch package (see `ugarchspec-methods
{rgarch}' help page). Looking at the source code (internal-fgarch.R,
line 31), it seems that fb is hard-set to 0:
NGARCH   =list(parameters=list(lambda=2, delta=0, fb=0, fc=0, fk=1),

indicator=c(1,0,0,0,0), garchtype = 4),
although we believe it should be one of the freely estimated
parameters (instead of lambda, as currently it seems to be).

Would there be any easy way to work around this issue? For code
highlighting the problem, please look below.
Thank you,
Liviu

[1] http://en.wikipedia.org/wiki/Autoregressive_conditional_heteroskedasticity#fGARCH

### Code ###
> return=vector()
> zigma=vector()
> return[1]=0
> zigma[1]=0
> normvector=rnorm(499,mean=0,sd=1)
> #simulate random returns for predefined NGARCH parameters
> for(i in 2:500)
+ {
+ zigma[i]=(0.01+0.05*(return[i-1]-2*zigma[i-1])^2+0.6*zigma[i-1]^2)^0.5
+ return[i]=zigma[i]*normvector[i-1]
+ }
[1]  0.00000  0.08726 -0.02434  0.26456  0.19681 -0.01039
> # Fitting Non-linear GARCH
> require(rgarch)
> spec.NGARCH <- ugarchspec(variance.model=list(model="fGARCH",
+ garchOrder=c(1,1), submodel="NGARCH"), mean.model=list(armaOrder=c(0,0),
+ include.mean=FALSE), distribution.model="snorm")
> fit.NGARCH <- ugarchfit(data=return, spec=spec.NGARCH)
> fit.NGARCH at fit\$coef
omega  alpha1   beta1  lambda
0.04276 0.06191 0.87457 0.43634
> fit.NGARCH

GARCH Model Spec
--------------------------
Model : fGARCH Sub-Model : NGARCH

Exogenous Regressors in variance equation: none

Mean Equation :
Include Mean :  FALSE
AR(FI)MA Model : (0,0,0)
Garch-in-Mean :  FALSE
Exogenous Regressors in mean equation: none
Conditional Distribution:  norm

GARCH Model Fit
--------------------------
Optimal Parameters:
Estimate  Std. Error  t value Pr(>|t|)
omega    0.04276    0.030425   1.4054 0.159894
alpha1   0.06191    0.028462   2.1752 0.029613
beta1    0.87457    0.061289  14.2695 0.000000
lambda   0.43634    0.171291   2.5474 0.010854

Robust Standard Errors:
Estimate  Std. Error  t value Pr(>|t|)
omega    0.04276    0.034747   1.2306 0.218473
alpha1   0.06191    0.036494   1.6965 0.089795
beta1    0.87457    0.076156  11.4839 0.000000
lambda   0.43634    0.179153   2.4356 0.014868

LogLikelihood : 62.65

Information Criteria:
Akaike       0.26660
Bayes        0.30032
Shibata      0.26648
Hannan-Quinn 0.27983

Q-Statistics on Standardized Residuals:
statistic p-value
Lag10     6.161  0.8016
Lag15    13.434  0.5688
Lag20    21.480  0.3694

H0 : No serial correlation

Q-Statistics on Standardized Squared Residuals:
statistic p-value
Lag10     7.032  0.7224
Lag15    10.325  0.7988
Lag20    17.254  0.6364

ARCH LM Tests:
Statistic DoF P-Value
ARCH Lag[2]     0.1076   2  0.9476
ARCH Lag[5]     6.0089   5  0.3054
ARCH Lag[10]    8.0694  10  0.6221

Joint Statistic of the Nyblom stability test: 0.9012

Individual Nyblom Statistics:
omega  0.2906
alpha1 0.2260
beta1  0.2734
lambda 0.2845

Sign Bias Test
t-value    prob sig
Sign Bias           0.7199 0.47193
Negative Sign Bias  1.0525 0.29308
Positive Sign Bias  1.6822 0.09316   *
Joint Effect        5.5168 0.13764

Chisq Goodnes of Fit Test
[1] "under revision"

Elapsed time : 1.298

### End of code ###

```