Impossible to find steady state in Ireland 2003

I am pretty sure you did not upload the correct files. dsge_steadystate_helpera still contains e. Again, in steady state all shocks are 0. Thus, shocks should not appear anywhere in the steady state computations. This should simplify other computations as well.

I set the shocks x, a, e, z, v to 0 but I obtained the error message:

error: The steadystate file did not compute the steady state

I’m not sure I should’ve done that. For example, setting z=0 makes also denominator of lambd 0 so it sends lambd to infinity.

In the paper quoted above, authors define steady state by setting just the “shock part” of shocks to zero, i.e. the epsilons. For x, a, e, z and v they claim this values for the steady state:

x,a,v are set to 1
e=e
z=z
Model.mod (1.7 KB)
Model_steadystate.m (1.2 KB)
dsge_steadystate_helpert.m (164 Bytes)

I cannot run your code, because pi is undefined when calling the helper. Also why does your model contain

e_ss=4.02;
z_ss=3394.8;
pi_ss=80.38;
y_ss=26933;
r_ss=8.96;
tau_ss=0.0066;

I am attaching files with corrected mistake (pi). The var_ss values enter the model equations in Model.mod file and consequently appear in Model_steadystate.m. The reason for them is that some variables are in steady state and some in certain time period t or t+1. I designated the latter ones var and var(+1), but how would I designate the former ones? Should I unify the designation with the Model_steadystate.m file and use var0 notation or simply plug in approximations from real world or do something else?

The reported error is still the same as before.

Model.mod (1.7 KB)
Model_steadystate.m (1.2 KB)
dsge_steadystate_helpert.m (164 Bytes)

Sorry, but I still don’t understand what you are doing. Your helper is

tau = fsolve(@(tau)(m/m)*pi,tau0,options);

So if m\neq0 you are trying to solve the equation
f(\tau)=\pi=0
Regardless of \tau this equation will never be 0 unless \pi is 0. But additionally, m=0 in the file, so you are dividing by 0.

Sorry, I didn’t know how to designate the lagged value of m in the helper file. The same designation as in the Model.mod file didn’t work and was reported as error. I checked Dynare Reference Manual and Griffoli’s Manual (2008), but there’s no reference to the helper files. The correct function would be tau=(m/m(-1))*pi. But as we’re assuming a steady state I simply assumed m(-1)=m. Additionally, I unified steady state designation into var0, to avoid confusion with var_ss notation.

Model.mod (1.7 KB)
Model_steadystate.m (1.1 KB)
dsge_steadystate_helpert.m (164 Bytes)

You still did not solve the issue. As I said, in steady state tau=pi. Why would you need a solver for this?. But m/m(-1) clearly shows that m=0 as in your steady state file is impossible.

Please approach the problem from an economic instead of a technical perspective. Shocks are 0 in steady state and lagged values are equal to the contemporaneous ones (unless there is a trend).

In that respect k=684000; seems strange.

OK, I replaced the helper file with tau=pi. “k” is capital rented to intermediate goods-producing sector from households. For my country, corporate debt was 13,3 bn in 2020, dividing with 19442 number of companies I obtained 684.086 or 684.000. However, this is only firm’s debt to the banks, while total debt is cca 49.4 bn, which would make the average in my thesis 2.540.891. I tried setting it to 2.500.000, but Dynare still reports the steady-state can’t be computed.

Model.mod (1.7 KB)
Model_steadystate.m (1.1 KB)

I think you have a serious problem in matching the model to the data. Just because you observe a number in data does not mean that this number will be the steady state for a model with an arbitrary parameterization. In fact, the whole issue of calibration is concerned with finding parameters to match stylized facts of the data.

I used scaling for steady state values of variables, I multiplied them with total factor productivity (I used GDP per hour worked as % of USA), e.g. for panel average for GDP I used (x * 0.84+y * 0.73 +z * 0.61)/3 to get sample average for three countries taking into account productivity.

Still Dynare reports steady state couldn’t be computed. I’m attaching model files.

Model.mod (1.7 KB)
Model_steadystate.m (1.1 KB)

It seems you are not listening. Why should in the model

c=9378.02;

?
Which parameter assures this?

I’ve read some material on calibration in Uribe’s Open Economy Macroeconomics Chapter 4 and also your Github and paper by Gomme.

It’s my understanding that calibration targets for variables in steady state can be based on data observed in the real world. And then parameter values are computed by simply plugging this values in equations of a non-linearized steady-state model. Doing so, I obtained e.g. bet=9.97 (instead of 0.99 suggested by microeconomic evidence) by plugging r from my observations, as well as lambd and pi from microeconomic evidence into lambd=bet * r * ((lambd(+1))/(pi(+1))) (assuming lambd(+1)=lambd in the steady-state).

I haven’t found any exact description of this procedure in literature, so I hope this is correct.

Yes, the general approach seems correct. I hope you mean 0.97, not 9.97 for bet. Also note that lambd(+1)=lambd only hold for a properly detrended model (or with log-utility). Otherwise, there is typically a risk aversion parameter showing up. You may want to have a look at

Section 3.

Thank you for the link. I’m not sure if I understand the difference between growth observatons and business cycle observations. In my case, I used my real world observations to compute the values of five variables and microeconomic evidence from literature to compute the rest of variables and all parameters.

I actually obtained value 9.97 for bet. Could I be having bad data? For inflation, I used index 2015=100, and I computed average for quarters 1991Q1-2020Q1 to compute average for panel.

I also scaled data, as you suggested, with total factor productivity (GDP per hour worked as % of USA). So instead of inflation rate 80.83 computed as simple average, I multiplied it with productivity factors 0.6115, 0.7286 and 0.8378 for the three countries and computed their mean 58.71.

  1. A growth observation concerns the long-run like average inflation over a sample.
  2. I am not following. Inflation rates are percent changes in the price index. Also, why are you scaling inflation rates? It’s not a per unit of effective labor variable in the model.

In this case I won’t scale inflation, but I’m happy the procedure is correct, I wasn’t sure about that.

Also, I will use normal notation, e.g. 1 for 1 % inflation, and not add 100, to obtain price index.

In the meantime, the majority of my non-linearized steady-state model equations include shock variables e,a,z,x and v that are 0 in the steady state. How would I compute the parameters from these equations?

Regarding growth observations, I think I correctly inserted real world observations for the variables I observed.

What do you mean with

?

I mean, for example in equation

lambd=bet*r*((lambd(+1))/(pi(+1)))

parameter bet can be easily expressed with the rest of parameters and variables, because they’re all non-zero.

But in the majority of 20 equations of my non-linear steady-state model, there is always either a,e,x,z or v present, making expression for every parameter either zero or infinity (if I plug in zero for the shock). E.g. in

y=(k^alph)*(z*h)^(1-alph)

Expressing alph using the rest of variables will always include z.

Then your equation is wrong. If z is

z=rho*z(-1)+eps_z

then it needs to be exp(z) in the production function, which is 1 in steady state.

I mean, originally, z is stated to be

Zt

However, even if I use antilogs, I still get z values, which are 0 in the steady-state.