I’m trying to fit an ECM-GARCH-DCC model for 2 time series, the whole 3 in the same time using log-likelihood estimation. It has 14 parameters to estimate:

  • ECM has 2 gammas and 1 lambda per time series, this gives 4 gamma and 2 lambda for 2 TS.
  • GARCH has 2 alpha, 2 betas, 2 omega for our 2 TS.
  • DCC has only alpha and beta regardless of the number of TS (thanks to Engle 2002 variance targeting which gives a formula of conditional correlation given CCC matrix, getting rid of correlation omega)

To avoid problem of explosive GARCH or values out of bounds, I “crop” the tried params to their bounds in my loss function and add a huge penalty (proportional to the distance from closest bound ** 2) to the -log-likelihood loss to tell the optimizer not to cross the bounds or constraints (GARCH params positive and alpha+beta < 1)

I tested my fit function by feeding the optimizer with a random realisation (2 TS) of this model with known parameters. Its goal is to find these same parameters.

It looks like BFGS is having a hard time finding these 14 parameters in the same time : ECM params are retrieved pretty fast though, but GARCH and DCC keep being completely different from expected params (or maybe there are several solutions with low loss?).

So what I’d like is to “help” my fit function by setting initial param values with a smart initial guess, especially for the GARCH and DCC params that it struggles to retrieve.

Is there some well known smart initial guess for GARCH or DCC models ?

  • $\begingroup$ Check out the implementations in rugarch and rmgarch in R or some other packages in R or other programming languages. They should specify what the initial parameters are. If not, you can open the code and see for yourself. I think $(\alpha,\beta)=(0.10,0.85)$ or $(0.05,0.90)$ is reasonable for the GARCH part. Maybe try something similar for the two DCC parameters? $\endgroup$ Feb 26, 2023 at 11:15
  • $\begingroup$ Thank you I’ll check this out :) Yeah that’s what I thought for alpha and beta, but what about omega ? It appears that it can find low loss for lower omega and higher alpha/beta (if you set omega = 4 and alpha,beta = 0, it can find omega = 2 and beta = 0.8, like if it wanted to set a high beta at all times by itself) $\endgroup$ Feb 26, 2023 at 15:40

1 Answer 1


GARCH: I think reasonable starting values for $(\alpha,\beta)$ are $(\hat\alpha^0,\hat\beta^0)=(0.10,0.85)$ or $(0.05,0.90)$. Since the unconditional variance $\sigma^2=\frac{\omega}{1-(\alpha+\beta)}$, the starting value for $\omega$ should be $\hat\omega^0=(1-(\hat\alpha^0+\hat\beta^0))\hat\sigma^2$ where $\hat\sigma^2$ is the empirical (unconditional) variance of the residual from the ECM equation. You can obtain the latter by estimating the ECM without the DCC-GARCH part; the estimates will not be efficient but still consistent.

DCC: I am less sure what starting values might be reasonable, but I would try something similar as with GARCH.

Another option is to check out the implementations in rugarch or fGarch and rmgarch in R or some other packages in R or other programming languages. They should specify what the initial parameters are. If not, you can open the code and see for yourself (unless the implementation is not open source).

  • $\begingroup$ I understand you on the GARCH alpha and beta, but for omega, what we have from the TS is ECM unconditional variances (i.e, delta_x unconditional variance), which is not the same variance as the ECM residual unconditional variance, that we can't have unless we fix ECM params, but since we want initial guess, we don't have ECM params yet. Do I miss something in my understanding here in your opinion? $\endgroup$ Feb 26, 2023 at 23:27
  • $\begingroup$ Here is the implementation of starting value for rugarch : github.com/alexiosg/rugarch/blob/master/R/rugarch-startpars.R From what I understand, it looks like they take initial parameters depending on the underlying model (ARIMA, etc.) $\endgroup$ Feb 26, 2023 at 23:38
  • 1
    $\begingroup$ @JeremLachkar, good point. I have updated my answer accordingly. $\endgroup$ Feb 27, 2023 at 7:28
  • $\begingroup$ Excellent thank you :) $\endgroup$ Feb 27, 2023 at 7:40
  • $\begingroup$ @JeremLachkar, I am glad I could help! $\endgroup$ Feb 27, 2023 at 7:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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