I’m trying to figure out the “best” method available for solving medium-scale or large models with occasionally binding constraints. There seem to be two dynare functions / packages with similar functionality: the Adjemain / Juillard stochastic extended path (built into dynare) and Tom Holden’s dynareOBC package (my reading is that the latter dominates OccBin, which is why I don’t list it here).
Implementation seems to have leapfrogged the documentation somewhat and I haven’t seen a side by side comparison of the two methods (indeed I’m not even 100% sure that they are different and haven’t merged into one?), so I was just wondering if people have views / experiences or know of references which compare the two / list the differences?
Thanks in advance for any help and, as always, a big “chapeau bas” to the developers for making dynare great (again and again and again )
Maybe the respective developers @stepan-a and @cfp can answer this question.
Stochastic extended path preserves the model’s full non-linearity, which may be important for some highly non-linear models (e.g. with high levels of habit). Its downside is that it may struggle to find a solution, and that integrating over many periods of uncertainty (the “order” option) is incredibly expensive.
DynareOBC uses a perturbation approximation, which quickly captures the effects of some risks, but may still miss some important curvature in decision rules. It is guaranteed to find a solution if one exists. Additionally, it makes a further approximation to dramatically reduce the cost of integrating over future uncertainty.
Thanks both - this is really helpful and clear!
A couple of follow-up questions if I may:
- Extended path now has the ‘hybrid’ option, which, according to the manual, uses a second order perturbation to correct the paths generated by the (stochastic) extended path algorithm. Presumably, what is used is a combination of quadrature and perturbation (mentioned in the 3rd slide of the NBB presentation and also on p.18 of Tom Holden’s manuscript), so despite the reliance on perturbation, this will still differ from dynareOBC,right?
More broadly, would the following be a fair summary of the comparative strengths of the two implementations:
- For models which are linear, aside from the occasionally binding constraint, dynareOBC is likely to be faster and comparably accurate to the stochastic extended path algorithm;
- There may be cases when the stochastic extended path either doesn’t converge or is prohibitively slow, in which case dynareOBC would be the way to go;
- In most other cases, the stochastic extended path is likely to generate a more accurate solution, so would be the recommended way forward?
Obviously, I mean no offense, so would be very happy to stand corrected if people see things differently.
ps. Edited 3/5/2020 and moved my follow up questions about Stochastic Extended Path documentation to a separate thread, to make this focused only on the differences between Stochastic Extended Path and Dynare OBC.
I don’t think it’s quite as simple as your final bullet. DynareOBC can handle 100s of periods of uncertainty, whereas with stochastic extended path you’ll be limited to less than 10, this may outweigh any additional accuracy from keeping the full nonlinearity. Additionally a third order approximation can easily beat the fully nonlinear extended path (hybrid or otherwise) and going to s.e.p. may not make a huge difference.
Thanks for pointing this out - this has been really helpful!
5 posts were split to a new topic: DynareOBC error message