Impossible to find steady state in Ireland 2003

Hello again and thanks for reading my post to anyone in this community. I have corrected the time periods in the model equations, dropped exp(var) form and substituted the variables in the steady state form with the operator steady_state(var). Using this model in Dynare, I obtain the message:

error: Impossible to find the steady state (the sum of square residuals of the static equations is 188395631132217704448.0000). Either the model doesn’t have a steady state, there are an infinity of steady states, or the guess values are too far from the solution

Any suggestion is welcome.

Model.mod (1.7 KB)

You have various variables that must not be 0 in steady state. Thus, you need to set explicit initial values.
Also,

ln(x)=rhox*x(-1)+epsilonx;
ln(a)=rhoa*a(-1)+epsilona;
ln(e)=rhoe*e(-1)+epsilone;
ln(z)=rhoz*z(-1)+epsilonz;
ln(v)=rhov*v(-1)+epsilonv;

is missing the ln on the right.

Hello, I have set initial values for variables, according to the rule I describe below. I get the error message

“error: The steady state has NaNs or Inf.”

My sample includes data for Slovenia, Austria and Italy in 1991-2019. All estimates are on the annual basis.

x, a, v = 1, x is a shock to marginal efficiency of investment, a is IS shock and e is a money demand shock, values are assumed by Röhe (2012).
z, v = 0, z is a technological shock and v is a monetary policy shock. Values are assumed by Röhe (2012).
y = 26933 is the GDP p.c., average of the sample data for 3 countries in 28 years,
k=684000 is households’ capital supply, the data is average firm’s debt to depositary institutions for Slovenia 1991-2019
in=1946.8 are goods that are purchased by households and not consumed or investment, the data is the sample average for saving as a product of salary and savings rate
c=12567.3 is the consumption, the estimate is the sample average
d=2 is the nominal dividend, the estimate is average yield at DAX in 2020
m=735.1 is money brought from previous time period, the estimate is the sample average for money aggregate M3
w=14637.4 is the nominal wage, the estimate is the sample average
h=1834 is the number of hours worked, the estimate is average for Slovenia 1991-2019
r =8.8 is the gross nominal interest rate between time periods, the esitmate is the sample average
q=0.09 is the nominal rental rate for capital, the estimate is for the US in 2020, computed as sum of the equity risk premium (6.0 %) and the reaffirmed normalized risk-free rate (3.0 %)
n=14.7 is the GDP per hours worked (y/h)
*tau=0.0068 is the M3 growth rate, the estimate 0.68 % is the sample average
lambd=-0.41 is the marginal utility of additional euro of profits, estimated with the marginal utility of income, this estimate is for the US in 1991-1992
*ksi=0 this variable has no explicit meaning in Röhe (2012), it’s from firms’ Lagrangian optimization, the estimate I left 0
pi=79.1 is the inflation rate, the estimate is the sample average Model.mod (1.9 KB)

You cannot simply plug in data from the real world. That would require an appropriate scaling of most variables, e.g. via a productivity factor.

Hello, I apologize for delay. I substituted the initial values of variables by the averages of the variables for the three countries, weighted by productivity. I used the GDP per hour worked as a % of the USA. For example, if initial value of consumption before was computed as (1+3+2)/3, now it was computed as (1x0.6115+3x0.7286+2x0.8378)/3, the weights corresponding to the productivity computed as GDP per hour worked relative to the USA for Slovenia, Italy and Austria.

The Dynare still reports: error: The steady state has NaNs or Inf. Should I have multiplied the productivity other way, e.g. in the model equations or use multiple initial values for the used countries? Thank you in advance.
Model1.mod (2.0 KB)

For example

ln(e)=(1-rhoe)*ln(steady_state(e))+rhoe*e(-1)+epsilone;
ln(z)=(1-rhoz)*ln(steady_state(z))+rhoz*z(-1)+epsilonz;

prevents computing the steady state numerically as you are trying to endogenously compute a steady state that needs to be specified by you. Also, you specified initial values of 0 for e,z, but you are taking their logs.
Also, see An infinity of steady states with Taylor rules

I have corrected the initial values for e and z. Regarding the steady_state operator, my model includes variables in certain time period and in steady state, e.g. e(t) and e (you can see it on https://d-nb.info/1026165547/34 p. 62). How would I denote both? I saw the possibility of writing R and Rbar/R_ss on the link you sent, but even setting the Rbar to some initial value would still leave R as another variable, requiring some initial value too.

Model.mod (2.0 KB)

None of this changes the fact that these objects cannot be endogenously computed. Also, in t hat PDF the steady state is explicitly provided in C.3.

OK, so steady state operator goes away. I’m not sure how to use the steady state in Mr Röhe’s paper in my case, where I have to state initial values and equations with steady state variables. Can I introduce the steady state equations inside the model block? I have introduced additional variables y_ss, pi_ss etc. and set their value to the initial value in the model, as in The steadystate file did not compute the steady state.

I still get the message; error: Impossible to find the steady state (the sum of square residuals of the static equations is 242604047897428410205353479174390707626049099439580515812856364670248749087860797378127724544.0000).

Model.mod (1.9 KB)

Where did you get the hard-coded numbers from. With

gamm=0.042;
e=4.02;

you will get e^(1/gamm)= 2.4341e+14;

Gamm or gamma is interest rate elasticity of money demand, it’s from that paper p. 50 (average of estimated values for Germany, France and Spain).

E is a money demand shock, the same paper suggests that ln(e) is 1.39, so I computed e=4.02. The empirical data in the same table on p. 50 suggests it’s 3.81.

You need to provide more details. Where does the process come from? How is it supposed to work? Where exactly do the numbers come from? IS there are meaning behind the exactl value of ln(e)? Scaling that works in the data does not necessarily work in a model.

Gamma is the absolute value of the interest rate elasticity of money demand. It enters the expected utility function on page 43 in that pdf and is greater then zero.

E enters the same utility function and is characterised by the autoregressive process as on the same page (equation 3.4), determined by ln(e) and money demand shock parameters 0<rho(e)<1 and epsilon, which is normally distributed with mean 0 and variance sigma(e) squared.

Both are used to characterise expected utility function of households, which is subject to a budget constraint.

The numbers are from empirical study of Germany, France, Spain and Italy for 1980-2008 period, they are maximum likelihood estimates obtained using Kalman filter. I don’t know for any meaning behind ln(e) number. For ln(z) it is said

“Concerning ln(z), we chose a prior mean of 8.13 for the euro area and 9.18 for the US, both with a standard deviation of 1. We set the prior means of ln(z) so that the steady state values of ct and it in the model match the respective average values of consumption and investment in the data.”

and

“Finally, we find the estimates of ln(z) to be almost equal across all model specifications within each region. Note that ln(z) has no impact on the dynamics of the model specifications, since it only serves to determine steady states (see section 4.5).”

ln(e) isn’t explicitly mentioned, except for the specification mentioned above and the numerical estimates.

So it may be best to find some other empirical estimates that would work better with my model?

Are you trying to replicate that exact paper?

No, sorry, I want to do an estimation for three other countries. I just quoted the paper and page because I’m not sure how to write an equation with superscripts and underscripts here. I plan to do various parameter stability tests other than that paper’s authors, when I get the model to work.

Usually, the starting point is an exact replication. Once you get that to work, you start modifying things. Otherwise, it’s often impossible to tell where things went wrong.

1 Like

OK, in my case, would it be possible to include steady_state_model block instead of initial values, since I know the steady state?

Yes, you should do that.

The Dynare reports that some variables are undefined, if I add the steady state equations that I know. When I set the missing variables to initial values, large sum of residuals is the output again. Is there a mistake in my steady_state_model block?

Model.mod (2.3 KB)

Yes, there are various errors. Your code must be sequentially executable. For example, you are using lamb before it is set and the equation for c has c on both sides.