WOLFRAM

Enable JavaScript to interact with content and submit forms on Wolfram websites. Learn how
Wolfram Language & System Documentation Center

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
Details and Options Details and Options
Examples  
Basic Examples  
Scope  
Basic Uses  
Process Slice Properties  
Properties & Relations  
See Also
Related Guides
History
Cite this Page

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

Examples

open all close all

Basic Examples  (3)

Simulate a GARCHProcess :

Wolfram Language code: RandomFunction[GARCHProcess[2, {.1}, {.2}], {0, 10}]
Wolfram Language code: %["Path"]
Wolfram Language code: ListPlot[RandomFunction[GARCHProcess[2, {.1}, {.2}], {0, 100}], Filling -> Axis]

Unconditional mean and variance of a weakly stationary process:

Wolfram Language code: Mean[GARCHProcess[κ, {Subscript[α, 1], Subscript[α, 2]}, {Subscript[β, 1], Subscript[β, 2], Subscript[β, 3]}][t]]
Wolfram Language code: Variance[GARCHProcess[κ, {Subscript[α, 1], Subscript[α, 2]}, {Subscript[β, 1], Subscript[β, 2], Subscript[β, 3]}][t]]

With fixed initial values:

Wolfram Language code: Mean[GARCHProcess[1, {1 / 3}, {1 / 4}, {Subscript[x, -1]}][t]]
Wolfram Language code: Variance[GARCHProcess[1, {1 / 3}, {1 / 4}, {Subscript[x, -1]}][t]]

The observations are uncorrelated but dependent:

Wolfram Language code: data = RandomFunction[GARCHProcess[1, {.1, .3}, {.2}], {10 ^ 3}]; corr = CorrelationFunction[data, {20}];
Wolfram Language code: ListPlot[corr, Filling -> Axis, PlotRange -> All]

The squared values of the data are correlated:

Wolfram Language code: corr2 = CorrelationFunction[data ^ 2, {20}];
Wolfram Language code: ListPlot[corr2, Filling -> Axis, PlotRange -> All]

Scope  (13)

Basic Uses  (8)

Simulate an ensemble of paths:

Wolfram Language code: data = RandomFunction[GARCHProcess[.3, {.5}, {.2}], {0, 30}, 4]
Wolfram Language code: ListLinePlot[data, Filling -> Axis]

Simulate with arbitrary precision:

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

Simulate a weakly stationary process with given initial values:

Wolfram Language code: sproc[x_] := GARCHProcess[.03, {.4}, {.3}, {x}];
Wolfram Language code: pts = {-1, 0, 2};
Wolfram Language code: samples = Table[SeedRandom[4];RandomFunction[sproc[x], {20}], {x, pts}];
Wolfram Language code: ListLinePlot[samples, DataRange -> {0, 12}, PlotLegends -> (StringJoin["x = ", ToString[#]]& /@ pts)]

A non-weakly stationary process:

Wolfram Language code: tproc[x_] := GARCHProcess[.03, {.7}, {.8}, {x}];
Wolfram Language code: tsamples = Table[SeedRandom[4];RandomFunction[tproc[x], {20}], {x, pts}];
Wolfram Language code: ListLinePlot[tsamples, DataRange -> {0, 12}, PlotRange -> All, PlotLegends -> (StringJoin["x = ", ToString[#]]& /@ pts)]

An integrated GARCHProcess :

Wolfram Language code: α = .4; proc = GARCHProcess[1, {α}, {1 - α}, {}];
Wolfram Language code: ListPlot[RandomFunction[proc, {0, 100}], Filling -> Axis]

Explosive GARCHProcess :

Wolfram Language code: proc = GARCHProcess[2, {.3, .7}, {.4, .2}, {}];
Wolfram Language code: ListPlot[RandomFunction[proc, {0, 100}], Filling -> Axis]

Such a process is not second-order stationary:

Wolfram Language code: WeakStationarity[proc]

Conditions for a GARCHProcess to be covariance-stationary:

Wolfram Language code: WeakStationarity[GARCHProcess[κ, {Subscript[α, 1], Subscript[α, 2]}, {Subscript[β, 1], Subscript[β, 2]}]]

Region of second-order stationarity for a GARCHProcess [1,1]:

Wolfram Language code: cond = WeakStationarity[GARCHProcess[κ, {α}, {β}]]
Wolfram Language code: RegionPlot[cond, {α, 0, 1}, {β, 0, 1}, FrameLabel -> Automatic]

Estimate a GARCHProcess :

Wolfram Language code: SeedRandom[34]; data = RandomFunction[GARCHProcess[.3, {.2}, {.4}], {6 10 ^ 2}];
Wolfram Language code: tsm = TimeSeriesModelFit[data, {"GARCH", {1, 1}}]
Wolfram Language code: tsm["Process"]

Use maximum conditional likelihood:

Wolfram Language code: EstimatedProcess[data, GARCHProcess[1, 1], ProcessEstimator -> "MaximumConditionalLikelihood"]

Forecast:

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

Find the forecast 20 steps ahead:

Wolfram Language code: forecast = TimeSeriesForecast[proc, data, {20}];
Wolfram Language code: forecast["Path"]

Find the mean squared errors of the forecast:

Wolfram Language code: errors = forecast["MeanSquaredErrors"]

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

Wolfram Language code: ubound = TimeSeriesMap[Sqrt, errors]; lbound = TimeSeriesMap[-Sqrt[#]&, errors];

Plot the values with mean squared errors:

Wolfram Language code: 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 :

Wolfram Language code: proc = GARCHProcess[k, {α}, {β}];
Wolfram Language code: Moment[proc[t], 4]//Simplify
Wolfram Language code: Cumulant[proc[2], 4]

Moment of a GARCH process with given initial conditions:

Wolfram Language code: DiscretePlot[Moment[GARCHProcess[1, {.4}, {.1}, {}][t], 4], {t, 0, 4}]
Wolfram Language code: Moment[GARCHProcess[.06, {0.5}, {.3}, {}][2], 4]
Wolfram Language code: Cumulant[GARCHProcess[.3, {.1, .4}, {.2}, {}][2], 4]

Skewness:

Wolfram Language code: Skewness[GARCHProcess[κ, {α}, {β}][t]]
Wolfram Language code: Skewness[GARCHProcess[κ, {α}, {β}, {x}][t]]

Kurtosis:

Wolfram Language code: Kurtosis[GARCHProcess[κ, {α}, {β}][t]]

Region where kurtosis is defined:

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

Simulate slice distribution:

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

Probability density function of the sample:

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

Use the Monte Carlo method to calculate NProbability for slice distribution:

Wolfram Language code: proc = GARCHProcess[1, {.3}, {.2}];
Wolfram Language code: NProbability[x[1] > .3, xproc, Method -> {"MonteCarlo", "SamplingIncrement" -> 10 ^ 4}]

Calculate NExpectation :

Wolfram Language code: NExpectation[x[2] ^ 2, xproc, Method -> {"MonteCarlo", "SamplingIncrement" -> 10 ^ 4}]

Compare to the second Moment :

Wolfram Language code: Moment[proc[2], 2]

Properties & Relations  (3)

The values of a GARCHProcess are uncorrelated:

Wolfram Language code: Correlation[GARCHProcess[2, {.3, .2}, {.2, .1}][{1, 2, 3}]]//MatrixForm

Corresponding ARMAProcess :

Wolfram Language code: ARMAProcess[GARCHProcess[2, {.3}, {.1}]]

For a process with given initial values:

Wolfram Language code: ARMAProcess[GARCHProcess[2, {.3}, {.1}, {3, 2}]]

Squared values of a GARCHProcess follow an ARMAProcess :

Wolfram Language code: proc = GARCHProcess[1, {.2, .3}, {.4}];
Wolfram Language code: data = RandomFunction[proc, {10 ^ 6}];

CorrelationFunction and PartialCorrelationFunction of squared values:

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

The corresponding ARMA process:

Wolfram Language code: arma = ARMAProcess[proc]

CorrelationFunction and PartialCorrelationFunction of the ARMA process:

Wolfram Language code: ListPlot[#[arma, {1, 30}], Filling -> Axis, PlotRange -> {-.2, 1}, PlotLabel -> #]& /@ {CorrelationFunction, PartialCorrelationFunction}
Wolfram Research (2014), GARCHProcess, Wolfram Language function, https://reference.wolfram.com/language/ref/GARCHProcess.html.

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: 13-August-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: 13-August-2026]}

Top [フレーム]

AltStyle によって変換されたページ (->オリジナル) /