I'm playing a bit with Time Series and I've been trying to estimate Garch Processes from different time series. Are TimeSeriesModelFit and EstimatedProcess returning accurate results?

An example:

proc = GARCHProcess[0.1, {0.02}, {0.04}];
data = RandomFunction[proc, {1, 250}];
tsm = TimeSeriesModelFit[data, {"GARCH", {1, 1}}];
estimatedProc2 = 
  EstimatedProcess[data, GARCHProcess[1, 1], 
    ProcessEstimator -> "MaximumConditionalLikelihood"]

A few questions:

  • Why are these 2 functions returning different results?
  • How do I know which one is the best fit? (I can't seem to get stats for Estimated Process like I do with TimeSeriesModelFit.)
  • How do I know there is one with a good fit?
  • Are these 2 functions rubbish and if not what do I need to do to improve the quality for the results?

P.S. question for WRI: when are we getting EGARCH, GJR, GARCH for Student T, etc.?

Updated with the same methods

proc = GARCHProcess[0.1, {0.03}, {0.05}];
data = RandomFunction[proc, {1, 250}];
tsm = TimeSeriesModelFit[data, {"GARCH", {1, 1}}];
estimatedProc1 = tsm["Process"]
estimatedProc2 = 
  EstimatedProcess[data, GARCHProcess[1, 1], 
    ProcessEstimator -> "MaximumConditionalLikelihood"]

Also the results can change when run at different times.

  • $\begingroup$ Unfortunately, they return different results whatever the method. Updated. $\endgroup$ – Xavier May 1 '15 at 21:10
  • 6
    $\begingroup$ Note that this gives different answers when run at different times because you're generating new data each time using RandomFunction. If you want your code to always generate the same data, use SeedRandom first. $\endgroup$ – Stefan R May 1 '15 at 22:29
  • $\begingroup$ Good point. I still can't explain the difference or know which one is the best. Maybe I need to programme a MLE function? $\endgroup$ – Xavier May 2 '15 at 9:34
  • $\begingroup$ I've done a few tests with different Garch Processes and EstimatedProcess return higher MLE every time. I'm still not sure it's very accurate still. $\endgroup$ – Xavier May 3 '15 at 8:24
  • $\begingroup$ I am unsure of the specifics, but in general TimeSeriesModelFit will try to use more "lightweight" algorithms than EstimatedProcess, since it is designed to check many different models rather than one specific model, like EstimatedProcess. $\endgroup$ – Stefan R May 4 '15 at 15:09


Two things to keep in mind: estimating a GARCH(1,1) with 250 points may not find reliable parameters.

Try increasing the length of the input time series. For example, using 20,000 points I get these results from both approaches (even if the second does not converge fast enough):

with TimeSeriesModelFit:

GARCHProcess[0.0901242, {0.0395382}, {0.113799}]

and with EstimatedProccess:

GARCHProcess[0.0929155, {0.0368543}, {0.0901876}]

Differences hint at different implementations... but Mathematica is a collection of handy black boxes, so this shall remain a mystery until the release of OpenMathematica...(yeah, right)


  • $\begingroup$ Thanks for this Paramecium. I didn't check for higher number of points. Interestingly EstimatedProcess returns the same results as Matlab. Matlab is way faster though! $\endgroup$ – Xavier Jul 7 '15 at 16:48
  • $\begingroup$ Glad I could help. I've looked again at this problem in Matlab, with the Financial toolbox v5.3 and beware, because although it is a faster numerical computation, the results are not stable (as expected). I do not know how to make a reliable diagnosis of the matlab algorithm, so please beware of taking speed as a sign of accuracy or reliability. Cheers! $\endgroup$ – paramecium Jul 20 '15 at 15:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.