Problem finding the steady state

Hello,

I am working on a general equilibrium model with heterogeneous agents and search frictions, which I extended to incorporate labor participation decision. However, I have an issue with finding the steady state. I tried simplifying my model but the problem persists. I would appreciate any help.

Model_Simple.pdf (154.8 KB)
Model.m (3.6 KB)
Model.mod (5.5 KB)

You need to set tau_ss. Then focus on the few equations with residuals.

Thank you, Prof. Pfeifer. tau_ss is actually set, so I am not sure why Dynare reports that it has no value when using steady.

No, you commented out the respective line.

Apologies for not noticing that. I’ve been working on the equations, and the issue I am having now is that Blanchard and Kahn conditions are not satisfied: There are 17 eigenvalue(s) larger than 1 in modulus for 20 forward-looking variable(s). I don’t see any timing mistakes in the code - could it have to do with the calibration of some exogenous parameters?

Also, even though I calibrate b_bar_ss to target the relative consumption of unemployed to employed workers of 0.72, I obtain lower steady state value for the consumption of the employed relative to that of the unemployed. I am not sure why this is so - would you maybe have any suggestion how to fix it?

Model.m (4.0 KB)
Model.txt (5.6 KB)

There is definitely a problem with the timing of your predetermined state variables, e.g.

% asset market equilibrium
b(+1)/P=b_bar;
a(+1)/P=b_bar;

looks wrong, because those conditions should not just hold in expectations.

You’re right, thank you so much! Another issue was with the Taylor rule, so the code works now.

However, some steady state values do not make much sense so I was trying to see what happens as I change some parameters. But, the code seems quite sensitive to the calibration. For instance, if I set the steady state job finding probability fs_ss to 0.4 instead of 0.3, it reports again the indeterminacy problem. Do you know why this could happen?

Also, I still can’t figure out why @Findbbar function does not work in my .m file. Would appreciate any suggestion.

Thanks again.

Model.m (4.0 KB)
Model.mod (5.6 KB)

  1. This most probably still suggests a problem with your model.
  2. What you mean with “does not work”? What is the issue?
  1. Yes, seems so. With lower values for the steady state labor participation rate (l_ss) and unemployment benefit (tau_u), the code runs fine. However, I still experience the same steady state problem if I work on the code for the complete model with 2 sectors, so not sure if this could also be due to calibration, but can’t figure it out yet.

  2. I wanted to calibrate b_bar_ss to to target the relative consumption of unemployed (c_u_ss) to employed workers (c_e_ss) of 0.72. However, when I run the .m file, b_bar_ss simply corresponds to the guessed value and the ratio c_u_ss/c_e_ss does not equal 0.72.

Your Findbbar-function takes x as an argument but never uses that argument.

Thank you, I corrected that but it is still the same.

Model.m (4.0 KB)

But the message says:

Equation solved. The final point is the initial point. The sum of squared function values,
r = 0.000000e+00, is less than sqrt(options.FunctionTolerance) = 1.000000e-03. The relative norm
of the gradient of r, 0.000000e+00, is less than 1e-4*options.FunctionTolerance = 1.000000e-10.

Yes, but the obtained ratio c_u_ss/c_e_ss is not equal to 0.72. Maybe I am missing something, but it seems the only way to obtain c_u_ss < c_e_ss is by changing unemployment benefit tau_u, whereas Findbbar-function has no role.

That seems to be a problem in fsolve. None of the global variables are correctly declared in initialized. Try
Model25.m (4.1 KB)

P.S.: from the numbering on my computer, you can see why you should not name your model Model.m.

I see, thank you very much for all the help!

Hi Prof. Pfeifer,

I have one more question, as I am still having troubles with the code. Dynare reports steady state issue whenever the steady state level of consumption of the employed is calibrated to be larger than that of the unemployed. As long as it is smaller, the code works, even though it does not make much sense. I can’t figure out why this happens. Do you think this could have something to do with some of other parameters, as I don’t see what could be wrong with the model?

Thank you once again!

Such things are hard to debug. I can only give you the generic advice to simplify the model and check when the problem appears.

Thank you, I already simplified it but don’t see what the issue is. Thank you for all the help!