Integer type:  int32  int64  nag_int  show int32  show int32  show int64  show int64  show nag_int  show nag_int

Chapter Contents
Chapter Introduction
NAG Toolbox

# NAG Toolbox: nag_rand_times_garch_exp (g05pg)

## Purpose

nag_rand_times_garch_exp (g05pg) generates a given number of terms of an exponential $\text{GARCH}\left(p,q\right)$ process (see Engle and Ng (1993)).

## Syntax

[ht, et, r, state, ifail] = g05pg(dist, num, ip, iq, theta, df, fcall, r, state, 'lr', lr)
[ht, et, r, state, ifail] = nag_rand_times_garch_exp(dist, num, ip, iq, theta, df, fcall, r, state, 'lr', lr)

## Description

An exponential $\text{GARCH}\left(p,q\right)$ process is represented by:
 $lnht=α0+∑i=1qαizt-i+∑i=1qϕizt-i-Ezt-i+∑j=1pβjlnht-j, t=1,2,…,T;$
where ${z}_{t}=\frac{{\epsilon }_{t}}{\sqrt{{h}_{t}}}$, $E\left[\left|{z}_{t-i}\right|\right]$ denotes the expected value of $\left|{z}_{t-i}\right|$, and ${\epsilon }_{t}\mid {\psi }_{t-1}=N\left(0,{h}_{t}\right)$ or ${\epsilon }_{t}\mid {\psi }_{t-1}={S}_{t}\left(\mathit{df},{h}_{t}\right)$. Here ${S}_{t}$ is a standardized Student's $t$-distribution with $\mathit{df}$ degrees of freedom and variance ${h}_{t}$, $T$ is the number of observations in the sequence, ${\epsilon }_{t}$ is the observed value of the $\text{GARCH}\left(p,q\right)$ process at time $t$, ${h}_{t}$ is the conditional variance at time $t$, and ${\psi }_{t}$ the set of all information up to time $t$.
One of the initialization functions nag_rand_init_repeat (g05kf) (for a repeatable sequence if computed sequentially) or nag_rand_init_nonrepeat (g05kg) (for a non-repeatable sequence) must be called prior to the first call to nag_rand_times_garch_exp (g05pg).

## References

Bollerslev T (1986) Generalised autoregressive conditional heteroskedasticity Journal of Econometrics 31 307–327
Engle R (1982) Autoregressive conditional heteroskedasticity with estimates of the variance of United Kingdom inflation Econometrica 50 987–1008
Engle R and Ng V (1993) Measuring and testing the impact of news on volatility Journal of Finance 48 1749–1777
Glosten L, Jagannathan R and Runkle D (1993) Relationship between the expected value and the volatility of nominal excess return on stocks Journal of Finance 48 1779–1801
Hamilton J (1994) Time Series Analysis Princeton University Press

## Parameters

### Compulsory Input Parameters

1:     $\mathrm{dist}$ – string (length ≥ 1)
The type of distribution to use for ${\epsilon }_{t}$.
${\mathbf{dist}}=\text{'N'}$
A Normal distribution is used.
${\mathbf{dist}}=\text{'T'}$
A Student's $t$-distribution is used.
Constraint: ${\mathbf{dist}}=\text{'N'}$ or $\text{'T'}$.
2:     $\mathrm{num}$int64int32nag_int scalar
$T$, the number of terms in the sequence.
Constraint: ${\mathbf{num}}\ge 0$.
3:     $\mathrm{ip}$int64int32nag_int scalar
The number of coefficients, ${\beta }_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,p$.
Constraint: ${\mathbf{ip}}\ge 0$.
4:     $\mathrm{iq}$int64int32nag_int scalar
The number of coefficients, ${\alpha }_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,q$.
Constraint: ${\mathbf{iq}}\ge 1$.
5:     $\mathrm{theta}\left(2×{\mathbf{iq}}+{\mathbf{ip}}+1\right)$ – double array
The initial parameter estimates for the vector $\theta$. The first element must contain the coefficient ${\alpha }_{o}$ and the next iq elements must contain the autoregressive coefficients ${\alpha }_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,q$. The next iq elements must contain the coefficients ${\varphi }_{\mathit{i}}$, for $\mathit{i}=1,2,\dots ,q$. The next ip elements must contain the moving average coefficients ${\beta }_{\mathit{j}}$, for $\mathit{j}=1,2,\dots ,p$.
Constraints:
• $\sum _{\mathit{i}=1}^{p}{\beta }_{i}\ne 1.0$;
• $\frac{{\alpha }_{0}}{1-\sum _{\mathit{i}=1}^{p}{\beta }_{i}}\le -\mathrm{log}\left({\mathbf{x02am}}\right)$.
6:     $\mathrm{df}$int64int32nag_int scalar
The number of degrees of freedom for the Student's $t$-distribution.
If ${\mathbf{dist}}=\text{'N'}$, df is not referenced.
Constraint: if ${\mathbf{dist}}=\text{'T'}$, ${\mathbf{df}}>2$.
7:     $\mathrm{fcall}$ – logical scalar
If ${\mathbf{fcall}}=\mathit{true}$, a new sequence is to be generated, otherwise a given sequence is to be continued using the information in r.
8:     $\mathrm{r}\left({\mathbf{lr}}\right)$ – double array
The array contains information required to continue a sequence if ${\mathbf{fcall}}=\mathit{false}$.
9:     $\mathrm{state}\left(:\right)$int64int32nag_int array
Note: the actual argument supplied must be the array state supplied to the initialization routines nag_rand_init_repeat (g05kf) or nag_rand_init_nonrepeat (g05kg).
Contains information on the selected base generator and its current state.

### Optional Input Parameters

1:     $\mathrm{lr}$int64int32nag_int scalar
Default: the dimension of the array r.
The dimension of the array r.
Constraint: ${\mathbf{lr}}\ge 2×\left({\mathbf{ip}}+2×{\mathbf{iq}}+2\right)$.

### Output Parameters

1:     $\mathrm{ht}\left({\mathbf{num}}\right)$ – double array
The conditional variances ${h}_{\mathit{t}}$, for $\mathit{t}=1,2,\dots ,T$, for the $\text{GARCH}\left(p,q\right)$ sequence.
2:     $\mathrm{et}\left({\mathbf{num}}\right)$ – double array
The observations ${\epsilon }_{\mathit{t}}$, for $\mathit{t}=1,2,\dots ,T$, for the $\text{GARCH}\left(p,q\right)$ sequence.
3:     $\mathrm{r}\left({\mathbf{lr}}\right)$ – double array
Contains information that can be used in a subsequent call of nag_rand_times_garch_exp (g05pg), with ${\mathbf{fcall}}=\mathit{false}$.
4:     $\mathrm{state}\left(:\right)$int64int32nag_int array
Contains updated information on the state of the generator.
5:     $\mathrm{ifail}$int64int32nag_int scalar
${\mathbf{ifail}}={\mathbf{0}}$ unless the function detects an error (see Error Indicators and Warnings).

## Error Indicators and Warnings

Errors or warnings detected by the function:
${\mathbf{ifail}}=1$
On entry, dist is not valid.
${\mathbf{ifail}}=2$
Constraint: ${\mathbf{num}}\ge 0$.
${\mathbf{ifail}}=3$
Constraint: ${\mathbf{ip}}\ge 0$.
${\mathbf{ifail}}=4$
Constraint: ${\mathbf{iq}}\ge 1$.
${\mathbf{ifail}}=6$
Constraint: ${\mathbf{df}}\ge 3$.
${\mathbf{ifail}}=10$
ip or iq is not the same as when r was set up in a previous call.
${\mathbf{ifail}}=11$
On entry, lr is not large enough, ${\mathbf{lr}}=_$: minimum length required .
${\mathbf{ifail}}=12$
On entry, state vector has been corrupted or not initialized.
${\mathbf{ifail}}=20$
Invalid sequence generated, use different parameters.
${\mathbf{ifail}}=-99$
${\mathbf{ifail}}=-399$
Your licence key may have expired or may not have been installed correctly.
${\mathbf{ifail}}=-999$
Dynamic memory allocation failed.

Not applicable.

None.

## Example

This example first calls nag_rand_init_repeat (g05kf) to initialize a base generator then calls nag_rand_times_garch_exp (g05pg) to generate two realizations, each consisting of ten observations, from an exponential $\mathrm{GARCH}\left(1,1\right)$ model.
```function g05pg_example

fprintf('g05pg example results\n\n');

% Initialize the generator to a repeatable sequence
seed = [int64(1762543)];
genid = int64(1);
subid = int64(1);
[state, ifail] = g05kf( ...
genid, subid, seed);

% Input parameters
dist  = 'N';
num   = int64(10);
ip    = int64(1);
iq    = int64(1);
theta = [0.1; -0.3; 0.1; 0.9];
df    = int64(0);
fcall = true;
r     = zeros(2*(2*ip+iq+2),1);

% Generate the first realisation
[ht, et, r, state, ifail] = g05pg( ...
dist, num, ip, iq, ...
theta, df, fcall, r, state);
% Display the results
fprintf('\n Realisation Number 1\n');
fprintf('   i            ht(i)            et(i)\n');
fprintf('  --------------------------------------\n');
for i=1:num
fprintf('  %2d  %16.4f %16.4f\n', i, ht(i), et(i));
end

% Generate a second realisation
fcall = false;
[ht, et, r, state, ifail] = g05pg( ...
dist, num, ip, iq, ...
theta, df, fcall, r, state);
% Display the results
fprintf('\n Realisation Number 2\n');
fprintf('   i            ht(i)            et(i)\n');
fprintf('  --------------------------------------\n');
for i=1:num
fprintf('  %2d  %16.4f %16.4f\n', i, ht(i), et(i));
end

```
```g05pg example results

Realisation Number 1
i            ht(i)            et(i)
--------------------------------------
1            2.5098           0.5526
2            2.1785          -1.8383
3            3.3844           1.2180
4            2.6780           1.3672
5            2.0953          -1.8178
6            3.2813          -0.0343
7            2.9958          -0.5094
8            3.0815           1.3978
9            2.3961          -0.0070
10            2.2445           0.6661

Realisation Number 2
i            ht(i)            et(i)
--------------------------------------
1            1.9327          -2.2795
2            3.5577          -1.2249
3            4.1461           0.6424
4            3.4455          -2.9920
5            5.9199           0.5777
6            4.8221          -1.2894
7            5.3174          -1.6473
8            6.1095           6.1689
9            3.1579           2.2935
10            2.2189           0.1141
```