({{, (RefLink[GARCHProcess, paclet:ref/GARCHProcess])[κ,{(Subscript[α, 1]),…,(Subscript[α, q])},{(Subscript[β, 1]),…,(Subscript[β, p])}] 
represents a generalized autoregressive conditionally heteroscedastic process of orders p and q, driven by a standard white noise.}, {, (RefLink[GARCHProcess, paclet:ref/GARCHProcess])[κ,{(Subscript[α, 1]),…,(Subscript[α, q])},{(Subscript[β, 1]),…,(Subscript[β, p])},init]
represents a GARCH process with initial data init.}})

OpenersNotesSection(Spacer1)Details

(RefLink[GARCHProcess, paclet:ref/GARCHProcess]) is a discrete-time and continuous-state random process.

A process x[t] is a GARCH process if the conditional mean (RefLink[Expectation, paclet:ref/Expectation])[x[t]\[Conditioned]{x[t-1],…}]=0 and the conditional variance ((σ(t))^2) given by (RefLink[Expectation, paclet:ref/Expectation])[((x[t])^2)\[Conditioned]{x[t-1],…}] satisfies the equation ((σ(t))^2)=κ+(Subscript[α, 1]) ((x(t-1))^2)+⋯+(Subscript[α, q]) ((x(t-q))^2)+(Subscript[β, 1]) ((σ(t-1))^2)+⋯+(Subscript[β, p]) ((σ(t-p))^2).

The initial data init can be given as a list {…,y[-2],y[-1]} or a single-path (RefLink[TemporalData, paclet:ref/TemporalData]) object with time stamps understood as {…,-2,-1}.

A scalar (RefLink[GARCHProcess, paclet:ref/GARCHProcess]) should have non-negative coefficients (Subscript[α, i]) and (Subscript[β, j]) and a positive coefficient κ.

(RefLink[GARCHProcess, paclet:ref/GARCHProcess])[q,p] represents a GARCH process of orders q and p for use in (RefLink[EstimatedProcess, paclet:ref/EstimatedProcess]) and related functions.

(RefLink[GARCHProcess, paclet:ref/GARCHProcess]) can be used with such functions as (RefLink[RandomFunction, paclet:ref/RandomFunction]), (RefLink[CovarianceFunction, paclet:ref/CovarianceFunction]), and (RefLink[TimeSeriesForecast, paclet:ref/TimeSeriesForecast]).

OpenersPrimaryExamplesSection(Spacer1)Examples  (19)

OpenersExampleSection0(Spacer1)Basic Examples  (3)

Simulate a (RefLink[GARCHProcess, paclet:ref/GARCHProcess]):

RandomFunction[GARCHProcess[2,{.1},{.2}],{0,10}]

%["Path"]

ListPlot[RandomFunction[GARCHProcess[2,{.1},{.2}],{0,100}],Filling->Axis]

Unconditional mean and variance of a weakly stationary process:

Mean[GARCHProcess[κ,{(Subscript[α, 1]),(Subscript[α, 2])},{(Subscript[β, 1]),(Subscript[β, 2]),(Subscript[β, 3])}][t]]

Variance[GARCHProcess[κ,{(Subscript[α, 1]),(Subscript[α, 2])},{(Subscript[β, 1]),(Subscript[β, 2]),(Subscript[β, 3])}][t]]

With fixed initial values:

Mean[GARCHProcess[1,{1/3},{1/4},{(Subscript[x, -1])}][t]]

Variance[GARCHProcess[1,{1/3},{1/4},{(Subscript[x, -1])}][t]]

The observations are uncorrelated but dependent:

data=RandomFunction[GARCHProcess[1,{.1,.3},{.2}],{10^3}];
corr=CorrelationFunction[data,{20}];

ListPlot[corr,Filling->Axis,PlotRange->All]

The squared values of the data are correlated:

corr2=CorrelationFunction[data^2,{20}];

ListPlot[corr2,Filling->Axis,PlotRange->All]

OpenersExampleSection1(Spacer1)Scope  (13)

OpenersExampleSubsection0(Spacer1)Basic Uses  (8)

Simulate an ensemble of paths:

data=RandomFunction[GARCHProcess[.3,{.5},{.2}],{0,30},4]

ListLinePlot[data,Filling->Axis]

Simulate with arbitrary precision:

RandomFunction[GARCHProcess[1/3,{1/10},{1/4}],{5},WorkingPrecision->20]["Path"]

Simulate a weakly stationary process with given initial values:

sproc[x_]:=GARCHProcess[.03,{.4},{.3},{x}];

pts={-1,0,2};

samples=Table[SeedRandom[4];RandomFunction[sproc[x],{20}],{x,pts}];

ListLinePlot[samples,DataRange->{0,12},PlotLegends->(StringJoin["x = ",ToString[#]]&/@pts)]

A non-weakly stationary process:

tproc[x_]:=GARCHProcess[.03,{.7},{.8},{x}];

tsamples=Table[SeedRandom[4];RandomFunction[tproc[x],{20}],{x,pts}];

ListLinePlot[tsamples,DataRange->{0,12},PlotRange->All,PlotLegends->(StringJoin["x = ",ToString[#]]&/@pts)]

An integrated (RefLink[GARCHProcess, paclet:ref/GARCHProcess]):

α=.4;
proc=GARCHProcess[1,{α},{1-α},{}];

ListPlot[RandomFunction[proc,{0,100}],Filling->Axis]

Explosive (RefLink[GARCHProcess, paclet:ref/GARCHProcess]):

proc=GARCHProcess[2,{.3,.7},{.4,.2},{}];

ListPlot[RandomFunction[proc,{0,100}],Filling->Axis]

Such a process is not second-order stationary:

WeakStationarity[proc]

Conditions for a (RefLink[GARCHProcess, paclet:ref/GARCHProcess]) to be covariance-stationary:

WeakStationarity[GARCHProcess[κ,{(Subscript[α, 1]),(Subscript[α, 2])}, {(Subscript[β, 1]),(Subscript[β, 2])}]]

Region of second-order stationarity for a (RefLink[GARCHProcess, paclet:ref/GARCHProcess])[1,1]:

cond=WeakStationarity[GARCHProcess[κ,{α},{β}]]

RegionPlot[cond,{α,0,1},{β,0,1},FrameLabel->Automatic]

Estimate a (RefLink[GARCHProcess, paclet:ref/GARCHProcess]):

SeedRandom[34];
data=RandomFunction[GARCHProcess[.3,{.2},{.4}],{6 10^2}];

tsm=TimeSeriesModelFit[data,{"GARCH",{1,1}}]

tsm["Process"]

Use maximum conditional likelihood:

EstimatedProcess[data,GARCHProcess[1,1],ProcessEstimator->"MaximumConditionalLikelihood"]

Forecast:

proc=GARCHProcess[.3,{.5},{.4}];
data=RandomFunction[proc,{10^2}];

Find the forecast 20 steps ahead:

forecast=TimeSeriesForecast[proc,data,{20}];

forecast["Path"]

Find the mean squared errors of the forecast:

errors=forecast["MeanSquaredErrors"]

The forecasted states are equal to zero, hence the forecasted standard deviation bounds are:

ubound=TimeSeriesMap[Sqrt,errors];
lbound=TimeSeriesMap[-Sqrt[#]&,errors];

Plot the values with mean squared errors:

ListLinePlot[{data,forecast,lbound,ubound},PlotStyle->{Automatic,Automatic, Red,Red},Filling->{3->{4}}]

OpenersExampleSubsection1(Spacer1)Process Slice Properties  (5)

Moments of a weakly stationary GARCH of orders (1,1):

proc=GARCHProcess[k,{α},{β}];

Moment[proc[t],4]//Simplify

Cumulant[proc[2],4]

Moment of a GARCH process with given initial conditions:

DiscretePlot[Moment[GARCHProcess[1,{.4},{.1},{}][t],4],{t,0,4}]

Moment[GARCHProcess[.06,{0.5},{.3},{}][2],4]

Cumulant[GARCHProcess[.3,{.1,.4},{.2},{}][2],4]

Skewness:

Skewness[GARCHProcess[κ,{α},{β}][t]]

Skewness[GARCHProcess[κ,{α},{β},{x}][t]]

Kurtosis:

Kurtosis[GARCHProcess[κ,{α},{β}][t]]

Region where kurtosis is defined:

RegionPlot[Not[β≤0||105 (α^4)+60 (α^3) β+18 (α^2) (β^2)+4 α (β^3)+(β^4)≥1],{α,0,1},{β,0,1},FrameLabel->Automatic]

Simulate slice distribution:

proc[α_]:=GARCHProcess[.3,{α},{.2}];
sample[α_]:=RandomVariate[proc[α][3],10^4];

Probability density function of the sample:

r = {.1,.3,.5,.7};Histogram[sample[#],Automatic,"PDF",PlotLabel->StringJoin["α = ",ToString[#]]]&/@r

Use the Monte Carlo method to calculate (RefLink[NProbability, paclet:ref/NProbability]) for slice distribution:

proc=GARCHProcess[1,{.3},{.2}];

NProbability[x[1]>.3,x\[Distributed]proc,Method->{"MonteCarlo","SamplingIncrement"->10^4}]

Calculate (RefLink[NExpectation, paclet:ref/NExpectation]):

NExpectation[x[2]^2,x\[Distributed]proc,Method->{"MonteCarlo","SamplingIncrement"->10^4}]

Compare to the second (RefLink[Moment, paclet:ref/Moment]):

Moment[proc[2],2]

OpenersExampleSection4(Spacer1)Properties & Relations  (3)

The values of a (RefLink[GARCHProcess, paclet:ref/GARCHProcess]) are uncorrelated:

Correlation[GARCHProcess[2,{.3,.2},{.2,.1}][{1,2,3}]]//MatrixForm

Corresponding (RefLink[ARMAProcess, paclet:ref/ARMAProcess]):

ARMAProcess[GARCHProcess[2,{.3},{.1}]]

For a process with given initial values:

ARMAProcess[GARCHProcess[2,{.3},{.1},{3,2}]]

Squared values of a (RefLink[GARCHProcess, paclet:ref/GARCHProcess]) follow an (RefLink[ARMAProcess, paclet:ref/ARMAProcess]):

proc=GARCHProcess[1,{.2,.3},{.4}];

data=RandomFunction[proc,{10^6}];

(RefLink[CorrelationFunction, paclet:ref/CorrelationFunction]) and (RefLink[PartialCorrelationFunction, paclet:ref/PartialCorrelationFunction]) of squared values:

dataSQ=data^2;
ListPlot[#[dataSQ,{1,30}],Filling->Axis,PlotRange->{-.2,1},PlotLabel->#]&/@{CorrelationFunction,PartialCorrelationFunction}

The corresponding ARMA process:

arma=ARMAProcess[proc]

(RefLink[CorrelationFunction, paclet:ref/CorrelationFunction]) and (RefLink[PartialCorrelationFunction, paclet:ref/PartialCorrelationFunction]) of the ARMA process:

ListPlot[#[arma,{1,30}],Filling->Axis,PlotRange->{-.2,1},PlotLabel->#]&/@{CorrelationFunction,PartialCorrelationFunction}

({{DocumentationFooterIconsRelatedFunction.png, ({{See Also}, {(RefLink[ARCHProcess, paclet:ref/ARCHProcess])  ▪  (RefLink[ARMAProcess, paclet:ref/ARMAProcess])  ▪  (RefLink[ARProcess, paclet:ref/ARProcess])  ▪  (RefLink[MAProcess, paclet:ref/MAProcess])  ▪  (RefLink[TimeSeriesModelFit, paclet:ref/TimeSeriesModelFit])}})}})

({{DocumentationFooterIconsRelatedGuide.png, ({{Related Guides}, {▪(RefLinkPlain[Time Series Processes, paclet:guide/TimeSeriesProcesses])}})}})