I would like to estimate the EGARCH model on two different time-series using the excellent rugarch
package, but the solver fails to converge. I do not want to use the "hybrid" solver option because this introduces randomness when it cycles through the "gosolnp" solver. My two questions are: (1) is there something strange about my data that is causing the failure to converge and (2) if not, is there a way to modify the ugarchfit()
function so that it "tries harder" to find a solution? Below are the data and code I am using.
library("rugarch")
ABC <- c(-0.003311,-0.009967,-0.010067,-0.023729,0.006944,-0.010345,0.02439,-0.006803,-0.017123,-0.003484,0.017483,0.054983,0.032573,-0.018927,-0.006817,-0.019608,-0.003333,0.006689,0.006645,-0.009901,0,0.01,0.006601,0,0.009836,0.022727,-0.003175,-0.009554,0.022508,-0.003145,0.006309,-0.021944,0.012821,-0.015823,-0.028939,-0.009934,0.020067,0.045902,-0.012539,-0.003175,0.003185,0.012698,-0.003135,0.009434,-0.003115,-0.00625,0.003145,0.003135,-0.025,0.00641,0.012739,-0.003145,0.009464,-0.009375,0.009464,0,-0.0125,0,0.003165,-0.009464,0.006369,-0.028481,0.035831,-0.003145,0.009464,-0.00625,0.003145,-0.00627,-0.009464,-0.012739,0,-0.006452,0.016234,-0.003195,0.012821,0,0.003544,-0.003185,-0.00639,-0.022508,0.009868,0.006515,-0.003236,0,-0.012987,0.013158,-0.003247,-0.013029,0.0033,0,-0.016447,-0.006689,-0.003367,0.003378,0.013468,0.063123,0.0125,0.006173,-0.006135,-0.033951,-0.003195,-0.003205,0.022508,0.025157,0,-0.006135,-0.009259,-0.018692,0.009524,0.006289,-0.003125,0.015674,0.003086,0.003077,-0.009202,0,0.003096,-0.006173,-0.006211,0,-0.009375,-0.006309,-0.006349,0.00639,-0.003175,0,0.003185,-0.009524,0.009615,-0.003175,-0.009554,0.003215,-0.003205,0,0,0.003215,-0.009615,0.006472,-0.003215,0.000387,0.003257,-0.003247,0.006515,-0.003236,0.012987,0.022436,-0.003135,-0.006289,-0.003165,0.009524,0.044025,0.006024,0.005988,-0.005952,0,-0.017964,-0.003049,0,-0.006116,-0.009231,-0.018634,0.009494,-0.00627,-0.003155,0.009494,0.015674,0.021605,0,0.003021,-0.003012,0,-0.003021,-0.006061,-0.003049,-0.006116,-0.003077,0.003086,-0.006154,0.009288,-0.003067,-0.006154,0,0,-0.01548,0.012579,0.009317,-0.003077,-0.003086,0.006192,-0.006154,0,-0.012384,-0.00627,-0.006309,0.003175,-0.018987,0.016129,-0.009524,0.009615,0.003175,0.018987,-0.006211,0.025,-0.005732,-0.009288,0.00625,-0.006211,-0.009375,0.012618,-0.012461,0.009464,-0.00625,0.003145,-0.003135,0,0.003145,-0.003135,0,-0.006289,0.009494,-0.003135,0.009434,-0.006231,-0.015674,-0.009554,-0.025723,0.0033,-0.003289,-0.006601,0.006645,-0.013201,-0.006689,0.013468,-0.003322,-0.003333,0.006689,0.013289,-0.019672,0.006689,-0.006645,-0.003344,0.006711,0.036667,0.006431,0,-0.00639,0.009646,0.015924,0.003135,0.03125,0.012121,-0.005988,0.021084)
DEF <- c(0.004876,0.029923,-0.072242,-0.015235,-0.011603,0.015652,-0.021832,-0.015755,-0.008448,-0.038565,0.035914,-0.052679,0.005703,0.02741,-0.028059,0.004733,-0.00895,-0.035646,0.176934,-0.023869,-0.039468,-0.016079,0.00227,-0.015851,-0.02439,-0.021226,0.001928,-0.025493,0.027641,0.036023,0.02828,0.001803,-0.011251,0.015476,-0.035858,-0.003719,-0.0042,0.009372,-0.019499,0.023201,0.018047,0.005,0.037087,0.012647,-0.03273,0.036509,0.016323,0.040152,-0.001219,-0.002441,0.039967,0.023137,0.006899,0.007613,-0.007933,-0.026276,-0.003911,0.006677,0.023875,-0.014144,-0.002714,-0.031104,0.027689,0.003124,0.005839,-0.020898,0.030435,0.034906,0.036694,0.004648,-0.017438,-0.034408,-0.006752,0.010196,0.043738,-0.053725,0.008327,-0.035285,0.002724,-0.006209,-0.052714,-0.006595,0.025726,-0.024272,-0.011194,0.005451,-0.004587,0.002514,0.035102,-0.008478,0.052117,0.010836,0.009188,-0.016692,0.033179,-0.025766,0.013415,-0.00643,0.059764,0.002155,0.005376,-0.001069,-0.00571,0,0.005025,-0.001786,0.030411,0.003125,0.010038,-0.014051,-0.025721,-0.018195,0.005451,0.011926,-0.005714,0.002874,0.022206,0.018921,-0.016162,0.013632,-0.048276,-0.018841,0.038405,0.043385,0.000341,0.001363,-0.006805,0.030832,-0.000332,0.016955,0.019941,-0.019551,-0.033998,0.016582,0,0.008655,-0.00099,0.008259,-0.017038,0.007,-0.011917,0.01206,0.005958,0.009543,0.088983,-0.027237,0,-0.004615,0.007728,0.003681,-0.012836,0.017028,0,0.005784,-0.006659,-0.001828,0.000611,-0.012508,0.022552,-0.01148,0.008863,0.003332,0.003925,0.005714,-0.007775,-0.009946,-0.007915,-0.013194,-0.000622,0.015557,0.026961,-0.002387,-0.009569,-0.020229,0.00678,-0.015611,0.001866,0.007759,-0.020942,0.003146,0.017874,0.029883,0.014358,-0.009142,-0.004167,0.002926,0.003287,-0.010125,-0.000903,-0.003312,-0.010876,0.006109,-0.006679,-0.005807,0.006148,0.001528,-0.00244,0.017431,-0.011422,-0.00304,0.021653,-0.017612,-0.005773,-0.018643,0.000934,-0.009023,-0.000314,-0.009736,-0.001269,-0.005081,-0.019151,0.020827,0.000956,-0.018153,-0.013947,0.008224,-0.014356,-0.012248,0.009048,-0.003985,-0.012671,-0.008105,0.011236,-0.017508,0.019877,0.014113,-0.003976,-0.018629,0.002373,-0.002705,-0.014242,-0.02924,-0.00567,0.002851,0.000711,0.01598,0.019224,0.00823,-0.009524,0.015797,-0.025693,0.001388,-0.014553,0.014065,-0.003467,-0.008699,-0.004914,0.00388,-0.002811,-0.003524,-0.004597,-0.004263)
ugarchfit(spec = ugarchspec(mean.model = list(armaOrder = c(0, 0), include.mean = TRUE), variance.model = list(model = "eGARCH", garchOrder = c(1, 1))), data = ABC)
ugarchfit(spec = ugarchspec(mean.model = list(armaOrder = c(0, 0), include.mean = TRUE), variance.model = list(model = "eGARCH", garchOrder = c(1, 1))), data = DEF)
Reading through some examples, there's no guarantee that a model will converge. The linked article suggests that about 90% of problems should converge without additional adjustments.
That said, you can adjust the solver.control
argument to adjust the tolerance of the solver which seems to fix the issue.
I used solver.control = list(tol = 1e-12)
which results in a converging model.
Full command:
ugarchfit(spec = ugarchspec(mean.model = list(armaOrder = c(0, 0),
include.mean = TRUE), variance.model = list(model = "eGARCH", garchOrder = c(1, 1))),
solver.control = list(tol = 1e-12),data = ABC)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With