Univariate GARCH/APARCH Time Series Simulation

Share:

Description

Simulates a univariate GARCH/APARCH time series model.

Usage

1
garchSim(spec = garchSpec(), n = 100, n.start = 100, extended = FALSE) 

Arguments

extended

logical parameter if the output series should be a 3 columns timeSeries object with garch, sigma and eps data (extended = TRUE) or a univariate GARCH\APARCH time series (extended = FALSE

spec

a specification object of class "fGARCHSPEC" as returned by the function garchSpec. The model parameters are taken from the @model slot, a list with the following entries:
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;
The optional values for the linear part are:
mu - the intercept value, by default 0 (it implies that the mean = mu/(1-sum(ar)));
ar - the autoregressive ARMA coefficients, by default 0;
ma - the moving average ARMA coefficients, by default 0.
The optional 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.
See also below for further details.

n

length of output series, an integer value. An integer value, by default n=100.

n.start

length of "burn-in" period, by default 100.

Details

The function garchSim simulates an univariate GARCH or APARCH time series process as specified by the argument model.

The model is an object of class "fGARCHSPEC" as returned by the function garchSpec. The returned model specification comes comes with a slot @model which is a list of just the numeric parameter entries. These are recognized and extracted for use by the function garchSim.

By default the series will be returned as an object of class "ts" or as a "numeric" vector. Having time/date positions, e.g. from an empirical process the numeric vector can be easily transformed into other time series objects like "timeSeries" or "zoo". So one can estimate the parameters of a GARCH process from empirical data using the function garchFit and simulate than statistically equivalent GARCH processes with the same set of model parameters using the function garchSim.

The third entry in the argument returnClass="mts" allows to return a trivariate time series, where the first column contains the simulated "garch" process, the second column the conditional standard deviations "h", and the last column the innovations named "eps".

Note, the default model specifies Bollerslev's GARCH(1,1) model with normal distributed innovations.

Value

The function garchSim returns an objects of class "timeSeries" attributed by a list with entry $garchSpec giving the GARCH specification structure as returned by the function garchSpec and with information on conditional standard deviations and innovations. See details above.

Author(s)

Diethelm Wuertz for the Rmetrics R-port.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
## garchSpec -
   spec = garchSpec()
   spec

## garchSim -
   # Simulate a "timeSeries" object:
   x = garchSim(spec, n = 50)
   class(x)
   print(x) 
   
## More simulations ...

   # Default GARCH(1,1) - uses default parameter settings
   spec = garchSpec(model = list())
   garchSim(spec, n = 10)
   
   # ARCH(2) - use default omega and specify alpha, set beta=0!
   spec = garchSpec(model = list(alpha = c(0.2, 0.4), beta = 0))
   garchSim(spec, n = 10)
   
   # AR(1)-ARCH(2) - use default mu, omega
   spec = garchSpec(model = list(ar = 0.5, alpha = c(0.3, 0.4), beta = 0))
   garchSim(spec, n = 10)
   
   # AR([1,5])-GARCH(1,1) - use default garch values and subset ar[.]
   spec = garchSpec(model = list(mu = 0.001, ar = c(0.5,0,0,0,0.1)))
   garchSim(spec, n = 10)
   
   # ARMA(1,2)-GARCH(1,1) - use default garch values
   spec = garchSpec(model = list(ar = 0.5, ma = c(0.3, -0.3)))  
   garchSim(spec, n = 10)
   
   # GARCH(1,1) - use default omega and specify alpha/beta
   spec = garchSpec(model = list(alpha = 0.2, beta = 0.7))
   garchSim(spec, n = 10)
   
   # GARCH(1,1) - specify omega/alpha/beta
   spec = garchSpec(model = list(omega = 1e-6, alpha = 0.1, beta = 0.8))
   garchSim(spec, n = 10)
   
   # GARCH(1,2) - use default omega and specify alpha[1]/beta[2]
   spec = garchSpec(model = list(alpha = 0.1, beta = c(0.4, 0.4)))
   garchSim(spec, n = 10)
   
   # GARCH(2,1) - use default omega and specify alpha[2]/beta[1]
   spec = garchSpec(model = list(alpha = c(0.12, 0.04), beta = 0.08))
   garchSim(spec, n = 10)
   
   # snorm-ARCH(1) - use defaults with skew Normal
   spec = garchSpec(model = list(beta = 0, skew = 0.8), cond.dist = "snorm")
   garchSim(spec, n = 10)
   
   # sged-GARCH(1,1) - using defaults with skew GED
   model = garchSpec(model = list(skew = 0.93, shape = 3), cond.dist = "sged")
   garchSim(model, n = 10)
   
   # Taylor Schwert GARCH(1,1) - this belongs to the family of APARCH Models
   spec = garchSpec(model = list(delta = 1))
   garchSim(spec, n = 10)
   
   # AR(1)-t-APARCH(2, 1) - a little bit more complex specification ...
   spec = 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")
   garchSim(spec, n = 10)

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.