Skip to contents

Specifies an univariate ARMA-GARCH or ARMA-APARCH time series model.

Usage

garchSpec(model = list(), presample = NULL, 
    cond.dist = c("norm", "ged", "std", "snorm", "sged", "sstd"), 
    rseed = NULL)

Arguments

cond.dist

a character string naming the desired conditional distribution. Valid values are "norm", "ged", "std", "snorm", "sged", "sstd". The default value is "norm", the standard normal distribution.

model

a list of GARCH model parameters, see section ‘Details’. The default model=list() specifies Bollerslev's GARCH(1,1) model with normal conditional distributed innovations.

presample

a numeric three column matrix with start values for the series, for the innovations, and for the conditional variances. For an ARMA(m,n)-GARCH(p,q) process the number of rows must be at least max(m,n,p,q)+1, longer presamples are truncated. Note, all presamples are initialized by a normal-GARCH(p,q) process.

rseed

single integer argument, the seed for the intitialization of the random number generator for the innovations. If rseed=NULL, the default, then the state of the random number generator is not touched by this function.

Details

The function garchSpec specifies a GARCH or APARCH time series process which we can use for simulating artificial GARCH and/or APARCH models. This is very useful for testing the GARCH parameter estimation results, since your model parameters are known and well specified.

Argument model is a list of model parameters. For the GARCH part of the model they are:

omega

the constant coefficient of the variance equation, by default 1e-6;

alpha

the value or vector of autoregressive coefficients, by default 0.1, specifying a model of order 1;

beta

the value or vector of variance coefficients, by default 0.8, specifying a model of order 1.

If the model is APARCH, then the following additional parameters are available:

delta

a positive number, the power of sigma in the volatility equation, it is 2 for GARCH models;

gamma

the leverage parameters, a vector of length alpha, containing numbers in the interval \((0,1)\).

The values for the linear part (conditional mean) are:

mu

the mean value, by default NULL;

ar

the autoregressive ARMA coefficients, by default NULL;

ma

the moving average ARMA coefficients, by default NULL.

The parameters for the conditional distributions are:

skew

the skewness parameter (also named "xi"), by default 0.9, effective only for the "dsnorm", the "dsged", and the "dsstd" skewed conditional distributions;

shape

the shape parameter (also named "nu"), by default 2 for the "dged" and "dsged", and by default 4 for the "dstd" and "dsstd" conditional distributions.

For example, specifying a subset AR(5[1,5])-GARCH(2,1) model with a standardized Student-t distribution with four degrees of freedom will return the following printed output:


        garchSpec(model = list(ar = c(0.5,0,0,0,0.1), alpha =  
            c(0.1, 0.1), beta = 0.75, shape = 4), cond.dist = "std")  
        
        Formula: 
         ~ ar(5) + garch(2, 1)  
        Model: 
         ar:    0.5 0 0 0 0.1  
         omega: 1e-06  
         alpha: 0.1 0.1  
         beta:  0.75  
        Distribution:   
         std  
        Distributional Parameter:  
         nu = 4  
        Presample:  
           time          z     h y  
        0     0 -0.3262334 2e-05 0  
        -1   -1  1.3297993 2e-05 0  
        -2   -2  1.2724293 2e-05 0  
        -3   -3  0.4146414 2e-05 0  
        -4   -4 -1.5399500 2e-05 0  
        

Its interpretation is as follows. ‘Formula’ describes the formula expression specifying the generating process, ‘Model’ lists the associated model parameters, ‘Distribution’ the type of the conditional distribution function in use, ‘Distributional Parameters’ lists the distributional parameter (if any), and the ‘Presample’ shows the presample input matrix.

If we have specified presample = NULL in the argument list, then the presample is generated automatically by default as norm-AR()-GARCH() process.

Value

an object of class "fGARCHSPEC"

Author

Diethelm Wuertz for the Rmetrics R-port

See also

Examples

## garchSpec -

   # Normal Conditional Distribution:
   spec = garchSpec()
   spec
#> 
#> Formula: 
#>  ~ garch(1, 1)
#> Model:
#>  omega: 1e-06
#>  alpha: 0.1
#>  beta:  0.8
#> Distribution: 
#>  norm
#> Presample: 
#>   time          z     h y
#> 1    0 -0.6057703 1e-05 0
   
   # Skewed Normal Conditional Distribution:
   spec = garchSpec(model = list(skew = 0.8), cond.dist = "snorm")
   spec
#> 
#> Formula: 
#>  ~ garch(1, 1)
#> Model:
#>  omega: 1e-06
#>  alpha: 0.1
#>  beta:  0.8
#> Distribution: 
#>  snorm
#> Distributional Parameters: 
#>  xi = 0.8
#> Presample: 
#>   time         z     h y
#> 1    0 0.8218844 1e-05 0
   
   # Skewed GED Conditional Distribution:
   spec = garchSpec(model = list(skew = 0.9, shape = 4.8), cond.dist = "sged")
   spec
#> 
#> Formula: 
#>  ~ garch(1, 1)
#> Model:
#>  omega: 1e-06
#>  alpha: 0.1
#>  beta:  0.8
#> Distribution: 
#>  sged
#> Distributional Parameters: 
#>  nu = 4.8  xi = 0.9
#> Presample: 
#>   time          z     h y
#> 1    0 -0.6623704 1e-05 0
   
## More specifications ...

   # Default GARCH(1,1) - uses default parameter settings
   garchSpec(model = list())
#> 
#> Formula: 
#>  ~ garch(1, 1)
#> Model:
#>  omega: 1e-06
#>  alpha: 0.1
#>  beta:  0.8
#> Distribution: 
#>  norm
#> Presample: 
#>   time        z     h y
#> 1    0 -1.67233 1e-05 0
   
   # ARCH(2) - use default omega and specify alpha, set beta=0!
   garchSpec(model = list(alpha = c(0.2, 0.4), beta = 0))
#> 
#> Formula: 
#>  ~ arch(2)
#> Model:
#>  omega: 1e-06
#>  alpha: 0.2 0.4
#> Distribution: 
#>  norm
#> Presample: 
#>   time          z       h y
#> 1   -1 -0.3349619 2.5e-06 0
#> 2    0  1.5232437 2.5e-06 0
   
   # AR(1)-ARCH(2) - use default mu, omega
   garchSpec(model = list(ar = 0.5, alpha = c(0.3, 0.4), beta = 0))
#> 
#> Formula: 
#>  ~ ar(1) + arch(2)
#> Model:
#>  ar:    0.5
#>  omega: 1e-06
#>  alpha: 0.3 0.4
#> Distribution: 
#>  norm
#> Presample: 
#>   time          z            h y
#> 1   -1  1.6675418 3.333333e-06 0
#> 2    0 -0.7480848 3.333333e-06 0
   
   # AR([1,5])-GARCH(1,1) - use default garch values and subset ar[.]
   garchSpec(model = list(mu = 0.001, ar = c(0.5,0,0,0,0.1)))
#> 
#> Formula: 
#>  ~ ar(5) + garch(1, 1)
#> Model:
#>  ar:    0.5 0 0 0 0.1
#>  mu:    0.001
#>  omega: 1e-06
#>  alpha: 0.1
#>  beta:  0.8
#> Distribution: 
#>  norm
#> Presample: 
#>   time          z     h      y
#> 1   -4 -1.4612920 1e-05 0.0025
#> 2   -3 -1.3560417 1e-05 0.0025
#> 3   -2 -2.2308896 1e-05 0.0025
#> 4   -1  0.3025817 1e-05 0.0025
#> 5    0 -0.5651775 1e-05 0.0025
   
   # ARMA(1,2)-GARCH(1,1) - use default garch values
   garchSpec(model = list(ar = 0.5, ma = c(0.3, -0.3)))  
#> 
#> Formula: 
#>  ~ arma(1, 2) + garch(1, 1)
#> Model:
#>  ar:    0.5
#>  ma:    0.3 -0.3
#>  omega: 1e-06
#>  alpha: 0.1
#>  beta:  0.8
#> Distribution: 
#>  norm
#> Presample: 
#>   time         z     h y
#> 1   -1 0.5536471 1e-05 0
#> 2    0 1.1697037 1e-05 0
   
   # GARCH(1,1) - use default omega and specify alpha/beta
   garchSpec(model = list(alpha = 0.2, beta = 0.7))
#> 
#> Formula: 
#>  ~ garch(1, 1)
#> Model:
#>  omega: 1e-06
#>  alpha: 0.2
#>  beta:  0.7
#> Distribution: 
#>  norm
#> Presample: 
#>   time         z     h y
#> 1    0 0.5095482 1e-05 0
   
   # GARCH(1,1) - specify omega/alpha/beta
   garchSpec(model = list(omega = 1e-6, alpha = 0.1, beta = 0.8))
#> 
#> Formula: 
#>  ~ garch(1, 1)
#> Model:
#>  omega: 1e-06
#>  alpha: 0.1
#>  beta:  0.8
#> Distribution: 
#>  norm
#> Presample: 
#>   time          z     h y
#> 1    0 0.05731502 1e-05 0
   
   # GARCH(1,2) - use default omega and specify alpha[1]/beta[2]
   garchSpec(model = list(alpha = 0.1, beta = c(0.4, 0.4)))
#> 
#> Formula: 
#>  ~ garch(1, 2)
#> Model:
#>  omega: 1e-06
#>  alpha: 0.1
#>  beta:  0.4 0.4
#> Distribution: 
#>  norm
#> Presample: 
#>   time         z     h y
#> 1   -1 0.1823210 1e-05 0
#> 2    0 0.9699398 1e-05 0
   
   # GARCH(2,1) - use default omega and specify alpha[2]/beta[1]
   garchSpec(model = list(alpha = c(0.12, 0.04), beta = 0.08))
#> 
#> Formula: 
#>  ~ garch(2, 1)
#> Model:
#>  omega: 1e-06
#>  alpha: 0.12 0.04
#>  beta:  0.08
#> Distribution: 
#>  norm
#> Presample: 
#>   time        z            h y
#> 1   -1 2.031063 1.315789e-06 0
#> 2    0 0.196474 1.315789e-06 0
   
   # snorm-ARCH(1) - use defaults with skew Normal
   garchSpec(model = list(beta = 0, skew = 0.8), cond.dist = "snorm")
#> 
#> Formula: 
#>  ~ arch(1)
#> Model:
#>  omega: 1e-06
#>  alpha: 0.1
#> Distribution: 
#>  snorm
#> Distributional Parameters: 
#>  xi = 0.8
#> Presample: 
#>   time        z            h y
#> 1    0 1.253445 1.111111e-06 0
   
   # sged-GARCH(1,1) - using defaults with skew GED
   garchSpec(model = list(skew = 0.93, shape = 3), cond.dist = "sged")
#> 
#> Formula: 
#>  ~ garch(1, 1)
#> Model:
#>  omega: 1e-06
#>  alpha: 0.1
#>  beta:  0.8
#> Distribution: 
#>  sged
#> Distributional Parameters: 
#>  nu = 3  xi = 0.93
#> Presample: 
#>   time          z     h y
#> 1    0 -0.5261311 1e-05 0
   
   # Taylor Schwert GARCH(1,1) - this belongs to the family of APARCH Models
   garchSpec(model = list(delta = 1))
#> 
#> Formula: 
#>  ~ aparch(1, 1)
#> Model:
#>  omega: 1e-06
#>  alpha: 0.1
#>  beta:  0.8
#>  delta: 1
#> Distribution: 
#>  norm
#> Presample: 
#>   time         z     h y
#> 1    0 0.1461728 1e-05 0
   
   # AR(1)-t-APARCH(2, 1) - a little bit more complex specification ...
   garchSpec(model = list(mu = 1.0e-4, ar = 0.5, omega = 1.0e-6, 
       alpha = c(0.10, 0.05), gamma = c(0, 0), beta = 0.8, delta = 1.8, 
       shape = 4, skew = 0.85), cond.dist = "sstd")
#> 
#> Formula: 
#>  ~ ar(1) + aparch(2, 1)
#> Model:
#>  ar:    0.5
#>  mu:    1e-04
#>  omega: 1e-06
#>  alpha: 0.1 0.05
#>  beta:  0.8
#>  delta: 1.8
#> Distribution: 
#>  sstd
#> Distributional Parameters: 
#>  nu = 4  xi = 0.85
#> Presample: 
#>   time         z     h     y
#> 1   -1 0.3192643 2e-05 2e-04
#> 2    0 0.2430710 2e-05 2e-04