Heston-Nandi Garch(1,1) Modelling

Description

A collection and description of functions to model the GARCH(1,1) price paths which underly Heston and Nandi's option pricing model.

The functions are:

hngarchSim Simulates a Heston-Nandi Garch(1,1) process,
hngarchFit MLE for a Heston Nandi Garch(1,1) model,
hngarchStats True moments of the log-Return distribution,
print.hngarch Print method,
summary.hngarch Diagnostic summary.

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
hngarchSim(model, n, innov, n.start, start.innov, rand.gen, ...)
hngarchFit(x, model = list(lambda = -0.5, omega = var(x), alpha =
    0.1 * var(x), beta = 0.1, gamma = 0, rf = 0), symmetric = TRUE, 
    trace = FALSE, title = NULL, description = NULL, ...)
hngarchStats(model)

## S3 method for class 'hngarch'
print(x, ...)
## S3 method for class 'hngarch'
summary(object, ...)

Arguments

description

a brief description of the porject of type character.

innov

[hngarchSim] -
is a univariate time series or vector of innovations to produce the series. If not provided, innov will be generated using the random number generator specified by rand.gen. Missing values are not allowed. By default the normal random number generator will be used.

model

a list of GARCH model parameters with the following entries: lambda, omega, the constant coefficient of the variance equation, alpha the autoregressive coefficient, beta the variance coefficient, gamma the asymmetry coefficient, and rf, the risk free rate, numeric values.

n

[hngarchSim] -
is the length of the series to be simulated. The default value is 1000.

n.start

[hngarchSim] -
gives the number of start-up values to be discarded. The default value is 100.

object

[summary] -
a fitted HN-GARCH(1,1) time series object of class "hngarch" as returned from the function hngarchFit.

rand.gen

[hngarchSim] -
is the function which is called to generate the innovations. Usually, rand.gen will be a random number generator. Additional arguments required by the random number generator rand.gen, usually the location, scale and/or shape parameter of the underlying distribution function, have to be passed through the dots argument.

start.innov

[hngarchSim] -
is a univariate time series or vector of innovations to be used as start up values. Missing values are not allowed.

symmetric

[hngarchFit] -
a logical, if TRUE a symmetric model is estimated, otherwise the parameters are estimated for an asymmetric HN Garch(1,1) model.

title

a character string which allows for a project title.

trace

[hngarchFit] -
a logical value. Should the optimizarion be traced? If trace=FALSE, no tracing is done of the iteration path.

x

[hngarchFit] -
an univariate vector or time series.
[print] -
a fitted HN-GARCH(1,1) time series object of class "hngarch" as returned from the function hngarchFit.

...

additional arguments to be passed.

Details

Path Simulation:

The function hngarchSim simulates a Heston-Nandi Garch(1,1) process with structure parameters specified through the list model(lambda, omega, alpha, beta, gamma, rf).

Parameter Estimation:

The function hngarchFit estimates by the maximum log-likelihood approach the parameters either for a symmetric or an asymmetric Heston-Nandi Garch(1,1) model from the log returns x of a financial time series. For optimization R's optim function is used. Additional optimization parameters may be passed throught the ... argument.

Diagnostic Analysis:

The function summary.hngarch performs a diagnostic analysis and recalculates conditional variances and innovations from the time series.

Calculation of Moments:

The function hngarchStats calculates the first four true moments of the unconditional log return distribution for a stationary Heston-Nandi Garch(1,1) process with standard normally distributed innovations. In addition the persistence and the expectation values of sigma to the power 2, 4, 6, and 8 can be accessed.

Value

hngarchSim
returns numeric vector with the simulated time series points neglecting those from the first start.innov innovations.

hngarchFit
returns list with two entries: The estimated model parmeters model, where model is a list of the parameters itself, and llh the value of the log likelihood.

hngarchStats
returns a list with the following components: persistence, the value of the persistence, meansigma2, meansigma4, meansigma6, meansigma8, the expectation value of sigma to the power of 2, 4, 6, and 8, mean, variance, skewness, kurtosis, the mean, variance, skewness and kurtosis of the log returns.

summary.hngarch
returns list with the following elements: h, a numeric vector with the conditional variances, z, a numeric vector with the innovations.

Author(s)

Diethelm Wuertz for the Rmetrics R-port.

References

Heston S.L., Nandi S. (1997); A Closed-Form GARCH Option Pricing Model, Federal Reserve Bank of Atlanta.

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
## hngarchSim -
   # Simulate a Heston Nandi Garch(1,1) Process:
   # Symmetric Model - Parameters:
   model = list(lambda = 4, omega = 8e-5, alpha = 6e-5, 
     beta = 0.7, gamma = 0, rf = 0)
   ts = hngarchSim(model = model, n = 500, n.start = 100)
   par(mfrow = c(2, 1), cex = 0.75)
   ts.plot(ts, col = "steelblue", main = "HN Garch Symmetric Model")
   grid()
   
## hngarchFit - 
   # HN-GARCH log likelihood Parameter Estimation:
   # To speed up, we start with the simulated model ...
   mle = hngarchFit(model = model, x = ts, symmetric = TRUE)
   mle
   
## summary.hngarch - 
   # HN-GARCH Diagnostic Analysis:
   par(mfrow = c(3, 1), cex = 0.75)
   summary(mle)    

## hngarchStats - 
   # HN-GARCH Moments:
   hngarchStats(mle$model)