I am using the arch package in python to fit a GARCH(1,1) to fit daily S&P 500 returns from 1990 to 2017 (about 6800 data points). The code I am using is as follows:

sp500 = pd.read_csv('sp.csv', index_col=0, parse_dates=True, squeeze=True)
sp500 = (np.log(sp500) - np.log(sp500.shift(1))).dropna()[::-1]

from arch import arch_model
garch11 = arch_model(sp500, p=1, q=1)
res = garch11.fit(update_freq=10)
print res.summary()

Even for just 50 data points, the solver fails to converge, citing

The optimizer returned code 8. The message is:
Positive directional derivative for linesearch
See scipy.optimize.fmin_slsqp for code meaning. ConvergenceWarning)

It seems ridiculous that it can't fit 50 data points. Are there any tweaks to get this working?

  • $\begingroup$ You may be looking for an ARMA(1,1) model with GARCH(1,1) errors, very common in this type of modeling. $\endgroup$
    – user25064
    Feb 16, 2017 at 15:06
  • 1
    $\begingroup$ @user25064 that doesn't answer my question. $\endgroup$
    – user369210
    Feb 23, 2017 at 18:29
  • 1
    $\begingroup$ @user321210 did you somehow solve your problem? I have the same issue when running the arch_model function. $\endgroup$
    – joomanda
    Jun 13, 2017 at 11:46
  • 5
    $\begingroup$ @joomanda yes I did! Scale all your data by a factor of 100. Check the first example here: pypi.python.org/pypi/arch/3.0. It seems that the optimizer fails when the values are too close to 0 $\endgroup$
    – user369210
    Jun 18, 2017 at 21:40


Your Answer

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

Browse other questions tagged or ask your own question.