I am trying to develop a two-country multi-sector model. Started off with two sectors (254 equations in total). Tried to solve for steady-state outside Dynare using fsolve. Found an unsatisfactory answer (i.e. there are still 6 non-zero resids in the system that the fsolve did not target). Fed the unsatisfacotry SS into Dynare as initial values. Dynare found a steady-state and the model solves with reasonable IRFs. However, the SS is not the correct one (eg. inflation is non-zero, unemployment rate is not what I was targeting, etc.). My questions:
Any suggestions or reference materials on how to take the unsatisfactory steady-state to the targeted one? Does homotopy work here? Any references to code for that?
Any general guidance for dealing with large-scale policy model SS calculations? An example code would be greatly appreciated.
254 equations implies 254 variables. I think this is overkill, but it’s your model so do as you wish. As for a constructive approach to your problem, I would choose which of the variables you have targets and which of the parameters you have a legitimate calibration for. Chances are, there are some parameters for which you have no idea what the value should be within the confines of your theoretical model. You can choose a non-linear solver within matlab (or any other number of open source packages) and then choose the variables you are targeting as parameters and then see what the implied values for some of these unknown parameters should be.
For example, you have inflation as targeted to zero, and lets say there is an elasticity parameter that you are unsure of the calibration; instead of choosing different calibrations until you hit the inflation target around zero, make the inflation rate a parameter in the solver and treat the elasticity parameter as a variable. Then the solver will tell you exactly what calibration for the parameter will result in hitting your target perfectly. Transfer those values to your steady state file in dynare and it should work.
NOTE: I was reading over the manual for dynare the other day and noticed that I think this “trick” is built into dynare’s Steady-state solver under one of the options. I’m sure Johannes would know better.
Thanks This is a policy model, and so a lot of bells and whistles and sectoral production details that are admittedly ‘overkill’ for research questions. The outside-dynare ss solver I attempted already optmizes over unknown variables + parameter values to match calibration targets. The algebra in my ss solver actively depends on the zero inflation assumption, so the question of tweaking parameters to match the zero inflation SS does not appear in the fsolve problem. Yet, when I feed the full set of candidate SS values into Dynare, it comes back with non-zero inflation. The point is that clearly my own SS calculation is lacking and incorrect.
Question is: now that I have an incorrect SS vector that solves the model, can Dynare help me optimize over parameters to steer the SS vector towards the ‘correct’ one?
Broader ask is that we would greatly benefit if community members dealing with large-scale policy models and SS calculation could share their experiences.
Is it immediately clear your model admits multiple steady states? The fact that Dynare finds a strange steady state violating the zero inflation assumption may indicate that there is a problem with your model equations. That would explain the wrong results.
Most models of that size use mostly analytical steady states, i.e. the problem is broken down to at most a small set of equations that need to be solved numerically. The rest then follows analytically.
Thanks @jpfeifer. My interpretation was that my problem is about wrong calibration, rather than wrong-steady-state. I broke down the SS problem to solving 7 variables and 14 parameters using 21 equations, similar to your second point. Thought I’d ask whether there is a trick to nudge the SS vector towards the right direction by moving around some of the other parameters within the Dynare machinery that I did not consider in my fsolve. Seems like there’s no ‘trick’ that I missed, so will have to re-relook at model equations. Thanks again for your advise.