ARCHProcess[κ,{α1,…,αq}]
represents an autoregressive conditionally heteroscedastic process of order q, driven by a standard white noise.
ARCHProcess[κ,{α1,…,αq},init]
represents an ARCH process with initial data init.
ARCHProcess
ARCHProcess[κ,{α1,…,αq}]
represents an autoregressive conditionally heteroscedastic process of order q, driven by a standard white noise.
ARCHProcess[κ,{α1,…,αq},init]
represents an ARCH process with initial data init.
Details
- ARCHProcess is a discrete-time and continuous-state random process.
- A process x[t] is an ARCH 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
or a single path TemporalData object with time stamps understood as
. - A scalar ARCH process can have non-negative coefficients αi and a positive coefficient κ.
- ARCHProcess[q] represents an ARCH process of order q for use in EstimatedProcess and related functions.
- ARCHProcess can be used with such functions as RandomFunction, CovarianceFunction, and TimeSeriesForecast.
Examples
open all close allBasic Examples (3)
Simulate an ARCHProcess:
RandomFunction[ARCHProcess[2, {.3}], {0, 10}]%["Path"]ListPlot[RandomFunction[ARCHProcess[2, {.3}], {0, 100}], Filling -> Axis]Unconditional mean and variance of a weakly stationary process:
Mean[ARCHProcess[κ, {Subscript[α, 1], Subscript[α, 2]}][t]]Variance[ARCHProcess[κ, {Subscript[α, 1], Subscript[α, 2]}][t]]Mean[ARCHProcess[1, {1 / 3}, {Subscript[x, -1]}][t]]Variance[ARCHProcess[1, {1 / 3}, {Subscript[x, -1]}][t]]The observations are uncorrelated but dependent:
data = RandomFunction[ARCHProcess[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[ARCHProcess[.3, {.5}], {0, 30}, 4]ListLinePlot[data, Filling -> Axis]Simulate with arbitrary precision:
RandomFunction[ARCHProcess[1 / 3, {1 / 10}], {5}, WorkingPrecision -> 20]["Path"]Simulate a weakly stationary process with given initial values:
sproc[x_] := ARCHProcess[.03, {.6, .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_] := ARCHProcess[.03, {1.5, 1.2}, {x}];tsamples = Table[SeedRandom[4];RandomFunction[tproc[x], {20}], {x, pts}];ListLinePlot[tsamples, DataRange -> {0, 12}, PlotLegends -> (StringJoin["x = ", ToString[#]]& /@ pts)]An integrated ARCHProcess:
α = .3;
proc = ARCHProcess[1, {α, 1 - α}, {}];ListPlot[RandomFunction[proc, {0, 100}], Filling -> Axis]Explosive ARCHProcess:
proc = ARCHProcess[2, {.3, .7, .4}, {}];ListPlot[RandomFunction[proc, {0, 100}], Filling -> Axis]Such a process is not second-order stationary:
WeakStationarity[proc]Conditions for an ARCHProcess to be covariance stationary:
WeakStationarity[ARCHProcess[κ, {Subscript[α, 1], Subscript[α, 2], Subscript[α, 3]}]]Region of second-order stationarity for an ARCHProcess[2]:
cond = WeakStationarity[ARCHProcess[κ, {Subscript[α, 1], Subscript[α, 2]}]]RegionPlot[cond, {Subscript[α, 1], 0, 1}, {Subscript[α, 2], 0, 1}, FrameLabel -> Automatic]Estimate an ARCHProcess:
SeedRandom["J23"];
data = RandomFunction[ARCHProcess[1.3, {.2, .3}], {10 ^ 4}];tsm = TimeSeriesModelFit[data, {"ARCH", 2}]tsm["Process"]Use maximum conditional likelihood estimator:
EstimatedProcess[data, ARCHProcess[2], ProcessEstimator -> "MaximumConditionalLikelihood"]proc = ARCHProcess[.3, {.5, .4}];
data = RandomFunction[proc, {10 ^ 2}];Find the forecast 20 steps ahead:
forecast = TimeSeriesForecast[proc, data, {20}];forecast["Path"]Find mean squared errors of the forecast:
errors = forecast["MeanSquaredErrors"]The forecasted states are equal to zero, hence the forecasted standard deviation bounds are as follows:
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 ARCH of order 1:
proc = ARCHProcess[k, {α}];Moment[proc[t], 4]Cumulant[proc[2], 4]Moment of an ARCH process with given initial conditions:
DiscretePlot[Moment[ARCHProcess[1, {.3, .4}, {}][t], 4], {t, 0, 8}]Moment[ARCHProcess[κ, {Subscript[α, 1], Subscript[α, 2]}, {x}][2], 4]Skewness[ARCHProcess[κ, {α}][t]]Skewness[ARCHProcess[κ, {α}, {x}][t]]Kurtosis[ARCHProcess[κ, {Subscript[α, 1], Subscript[α, 2]}][t]]Region where kurtosis is defined:
RegionPlot[Subsuperscript[α, 1, 2] + Subsuperscript[α, 2, 2] < (1/3), {Subscript[α, 1], 0, 1}, {Subscript[α, 2], 0, 1}, FrameLabel -> Automatic]Kurtosis[ARCHProcess[κ, {α}, {x}][3]]proc[α_] := ARCHProcess[.3, {α}];
sample[α_] := RandomVariate[proc[α][3], 10 ^ 4];Probability density function of the sample:
r = {.1, .3, .6, .8};
Histogram[sample[#], Automatic, "PDF", PlotLabel -> StringJoin["α = ", ToString[#]]]& /@ rUse Monte Carlo method to calculate NProbability for slice distribution:
proc = ARCHProcess[.3, {.4}];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 an ARCHProcess are uncorrelated:
Correlation[ARCHProcess[2, {.3, .2}][{1, 2, 3}]]//MatrixFormCorresponding ARProcess:
ARProcess[ARCHProcess[2, {.3}]]For a process with given initial values:
ARProcess[ARCHProcess[2, {.3}, {3, 2}]]Squared values of an ARCHProcess follow an ARProcess:
proc = ARCHProcess[1, {.2, .3}];data = RandomFunction[proc, {10 ^ 4}];CorrelationFunction and PartialCorrelationFunction of squared values:
dataSQ = data ^ 2;
ListPlot[#[dataSQ, {30}], Filling -> Axis, PlotRange -> {-.2, 1}, PlotLabel -> #]& /@ {CorrelationFunction, PartialCorrelationFunction}The corresponding autoregressive process:
ar = ARProcess[proc]CorrelationFunction and PartialCorrelationFunction of the AR process:
ListPlot[#[ar, {30}], Filling -> Axis, PlotRange -> {-.2, 1}, PlotLabel -> #]& /@ {CorrelationFunction, PartialCorrelationFunction}Related Guides
History
Text
Wolfram Research (2014), ARCHProcess, Wolfram Language function, https://reference.wolfram.com/language/ref/ARCHProcess.html.
CMS
Wolfram Language. 2014. "ARCHProcess." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/ARCHProcess.html.
APA
Wolfram Language. (2014). ARCHProcess. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ARCHProcess.html
BibTeX
@misc{reference.wolfram_2026_archprocess, author="Wolfram Research", title="{ARCHProcess}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/ARCHProcess.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_archprocess, organization={Wolfram Research}, title={ARCHProcess}, year={2014}, url={https://reference.wolfram.com/language/ref/ARCHProcess.html}, note=[Accessed: 13-June-2026]}