Steady state small open econ

I have a very simple small open economy model with international bonds like Schmitt’Grohe Uribe (2003), except I have changed the country premium to a simpler linear equation. I have an external file to find the steady state but it can’t find it. I have built the model without international bonds and it works, so I know the problem is coming from adding them. I have tried extensively but I don’t know where the problem is. If someone could help I’d appreciate it.

ejmpl4.mod (1.2 KB)
ejemplo4_steadystate.m (1.9 KB)

(I know the files have a different name, for some reason that happens when I upload them)

I fixed the problem. It was a timing issue with the international bonds. So you can delete this post if necessary.

I do not see how the timing of a variable can fix a steady state issue. But if it is fixed… Our policy is to never delete posts, except those from spambots.


Blanchard-Khan conditions were not being met as I had more forward looking variables than needed. I lagged the real interest rate one period (this is conventional Dynare procedure, right?) and it was solved.

Ah… But originally the problem was with the steady state itself, that’s why I was confused.

Regarding the lag, without knowing the model I cannot say, but I doubt this is the good fix. The timing convention in Dynare is that the predetermined variables should be lagged (what matters is the period where the decision is made). It’s true that BK conditions failure are often originating from a timing issue, and that you can fix it by lagging a variable, but you have to lag the right variable… Otherwise you are not solving the model you intended to solve. Are you sure that the real interest rate is predetermined?


This is a small open economy model like in Schmitt-Grohe and Uribe (2003). I’m using a premium rate on foreign bonds B to induce stationarity to the model:

r = rstr - psi2*B; (eq.7).

rstr is the risk-free interest rate (a parameter) and psi2 is also a parameter. The FOCs tell me that eq.6 should be:

Lb = betaLb(+1)(1+r(+1));

r(+1) = rstr - psi2*B(+1);

If B is predetermined, writing Lb = betaLb(+1)(1+r) is the same as if:
Lb = betaLb(+1)(1+rstr - psi2*B)

This is what I did to make it work. I hope it’s correct.ejemplo4.mod (1.9 KB)

Comparing your file to suggests it’s correct.

Thanks very much for the feedback, Johannes.