GARCHProcess[κ,{α1,…,αq},{β1,…,βp}]
represents a generalized autoregressive conditionally heteroscedastic process of orders p and q, driven by a standard white noise.
GARCHProcess[κ,{α1,…,αq},{β1,…,βp},init]
represents a GARCH process with initial data init.
GARCHProcess
GARCHProcess[κ,{α1,…,αq},{β1,…,βp}]
represents a generalized autoregressive conditionally heteroscedastic process of orders p and q, driven by a standard white noise.
GARCHProcess[κ,{α1,…,αq},{β1,…,βp},init]
represents a GARCH process with initial data init.
Details
- GARCHProcess is a discrete-time and continuous-state random process.
- A process x[t] is a GARCH process if the conditional mean Expectation[x[t]{x[t-1],…}]=0 and the conditional variance
given by Expectation[x[t]2{x[t-1],…}] satisfies the equation
. - The initial data init can be given as a list {…,y[-2],y[-1]} or a single-path TemporalData object with time stamps understood as {…,-2,-1}.
- A scalar GARCHProcess should have non-negative coefficients αi and βj and a positive coefficient κ.
- GARCHProcess[q,p] represents a GARCH process of orders q and p for use in EstimatedProcess and related functions.
- GARCHProcess can be used with such functions as RandomFunction, CovarianceFunction, and TimeSeriesForecast.
Examples
open all close allBasic Examples (3)
Simulate a 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]]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]Scope (13)
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 GARCHProcess:
α = .4;
proc = GARCHProcess[1, {α}, {1 - α}, {}];ListPlot[RandomFunction[proc, {0, 100}], Filling -> Axis]Explosive 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 GARCHProcess to be covariance-stationary:
WeakStationarity[GARCHProcess[κ, {Subscript[α, 1], Subscript[α, 2]}, {Subscript[β, 1], Subscript[β, 2]}]]Region of second-order stationarity for a GARCHProcess[1,1]:
cond = WeakStationarity[GARCHProcess[κ, {α}, {β}]]RegionPlot[cond, {α, 0, 1}, {β, 0, 1}, FrameLabel -> Automatic]Estimate a 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"]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}}]Process Slice Properties (5)
Moments of a weakly stationary GARCH of orders
:
proc = GARCHProcess[k, {α}, {β}];Moment[proc[t], 4]//SimplifyCumulant[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[GARCHProcess[κ, {α}, {β}][t]]Skewness[GARCHProcess[κ, {α}, {β}, {x}][t]]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]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[#]]]& /@ rUse the Monte Carlo method to calculate NProbability for slice distribution:
proc = GARCHProcess[1, {.3}, {.2}];NProbability[x[1] > .3, xproc, Method -> {"MonteCarlo", "SamplingIncrement" -> 10 ^ 4}]Calculate NExpectation:
NExpectation[x[2] ^ 2, xproc, Method -> {"MonteCarlo", "SamplingIncrement" -> 10 ^ 4}]Compare to the second Moment:
Moment[proc[2], 2]Properties & Relations (3)
The values of a GARCHProcess are uncorrelated:
Correlation[GARCHProcess[2, {.3, .2}, {.2, .1}][{1, 2, 3}]]//MatrixFormCorresponding ARMAProcess:
ARMAProcess[GARCHProcess[2, {.3}, {.1}]]For a process with given initial values:
ARMAProcess[GARCHProcess[2, {.3}, {.1}, {3, 2}]]Squared values of a GARCHProcess follow an ARMAProcess:
proc = GARCHProcess[1, {.2, .3}, {.4}];data = RandomFunction[proc, {10 ^ 6}];CorrelationFunction and 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]CorrelationFunction and PartialCorrelationFunction of the ARMA process:
ListPlot[#[arma, {1, 30}], Filling -> Axis, PlotRange -> {-.2, 1}, PlotLabel -> #]& /@ {CorrelationFunction, PartialCorrelationFunction}Related Guides
History
Text
Wolfram Research (2014), GARCHProcess, Wolfram Language function, https://reference.wolfram.com/language/ref/GARCHProcess.html.
CMS
Wolfram Language. 2014. "GARCHProcess." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/GARCHProcess.html.
APA
Wolfram Language. (2014). GARCHProcess. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/GARCHProcess.html
BibTeX
@misc{reference.wolfram_2026_garchprocess, author="Wolfram Research", title="{GARCHProcess}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/GARCHProcess.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_garchprocess, organization={Wolfram Research}, title={GARCHProcess}, year={2014}, url={https://reference.wolfram.com/language/ref/GARCHProcess.html}, note=[Accessed: 12-June-2026]}