"Blanchard Kahn conditions" are not satisfied


I faced a problem when running a DSGE model with dynare, the error is “Blanchard Kahn conditions are not satisfied: no stable equilibrium”.

I checked the related topics, most of them said the error caused by “timing problem” . But honestly, I hard to understand timing convention and confused to find my predetermined variables.
Attachment is my code and the error message that dynare shows:
_ Modulus Real Imaginary_

_ 1.719e-16 1.719e-16 0_
_ 8.001e-16 -8.001e-16 0_
_ 2.831e-15 -2.831e-15 0_
_ 2.348e-14 -2.348e-14 0_
_ 1 1 0_
_ 1 1 0_
_ 1 1 0_
_ 1.005 1.005 0_
_ 1.005 1.005 0_
_ 5.723e+15 -5.723e+15 0_
_ 1.021e+16 1.021e+16 0_
_ 4.232e+16 -4.232e+16 0_

_There are 5 eigenvalue(s) larger than 1 in modulus _
for 4 forward-looking variable(s)

The rank condition ISN’T verified!

Error using print_info (line 42)
Blanchard Kahn conditions are not satisfied: no stable equilibrium
Error in stoch_simul (line 100)
_ print_info(info, options_.noprint, options_);_
Error in paper (line 320)
info = stoch_simul(var_list);_
Error in dynare (line 235)

Can anybody help me to find out what’s the problem that I missed or my timing problem?
I’ll very appreciate about that.
Thanks in advance!
paper.mod (3.2 KB)
Chang_Liu_Spiegel (1).pdf (429.1 KB)


the equation no. 24
M = g * M(-1);
seems wrong as you set g=1! this implies that M is fixed through out the time…

1 Like

Thank you for your reply,
Yes, I changed it to M(+1) = g*M, here g is money growth rate and M is money supply.
then “There are 6 eigenvalue(s) larger than 1 in modulus
for 6 forward-looking variable(s)”
BUT, there is still error message as following and I added my changed mod file, could you look through it, I am confusing what makes my rank condition is not verified.
Thanks in advance.

error message :
_There are 6 eigenvalue(s) larger than 1 in modulus _
for 6 forward-looking variable(s)

The rank condition ISN’T verified!

Error using print_info (line 48)
Blanchard Kahn conditions are not satisfied: indeterminacy due to rank failure
paper.mod (3.5 KB)

you have still Timing problem!
//25.-- money growth rate
M(+1) = g(+1) * M;
still seems wrong. i could not find any equation clarifying monetary growth rate dynamics

Dear ddiority,
Sorry for disturbing you again.
Now I remove the money growth rate g , and run it again . But there is still timing problem (Blanchard Kahn conditions are not satisfied: no stable equilibrium)
Could you look through my models again? Since I confused to find my specific timing problem…
Here is my new mod file.paper.mod (3.4 KB)

Thanks in advance.

  1. The original paper conducts an optimal policy exercise. How did you close the model?
  2. Also,
pi(+1) = P(+1)/P;

is not a correct definition. It defines the expected exchange rate. You need to lag it by one period.

1 Like

Dear Pfeifer,
Sorry for the late reply.
1.In my work I do not need to include the optimal policy situation. Just focus on benchmark model case. And honestly, I do not quite understand your “How to close the model? " question (Sorry for my stupid question).
2. about the inflation rate , I strictly follows the author’s definition that pi(+1) denotes the inflation rate from period t to t+1. Yeah, I take your advice lag it by one period afterwards (e.g. pi = P/P(-1); BUT the Dynare shows error message " There are 5 eigenvalue(s) larger than 1 in modulus for 3 forward-looking variable(s); Blanchard Kahn conditions are not satisfied: no stable equilibrium” I mean my forward-looking variables reduce to 3 compare to initial 4 which I noted as before.

In summary, I am still confused to get impulse response function. Although I correctly get my steady state values.
So could you give any idea or clue how to find my specific mistakes?
Here is my latest mod file.
paper.mod (4.0 KB)

Thank you.

Your market clearing condition doesn’t read well. You have

( pi/pi-1)^2

in there, but I am having a hard time thinking about this. Perhaps it is suppose to be


Also, you have a household budget constraint in there and an aggregate resource constraint. Typically, the aggregate resource constraint is derived directly from the household’s budget constraint. You having both of them there makes me think there is a collinear relationship in the model and that you are missing an equation.

I am not familiar with your model, but you have money demand, but no supply (as someone mentioned above). I suppose that would be okay if you had an interest rate rule, as then money would be endogenous.

But maybe you need something like
M = ((1 + theta)/(1 + pi))*M(-1),

where theta is a mean-zero monetary supply shock. This will also pin down steady-state inflation at zero.

I would try to run model_diagnostics and see what the complaint(s) are…

1 Like

Dear ChrisL,
Thank you for your detailed reply. I really appreciate it.
There is no typo, actually, it is (pi(t)/pi -1)^2 in the initial model and here pi is steady state inflation rate. So in dynare pi(t) I wrote in pi.

I will try to add money supply as you mentioned and double check whether has any other problem.

Thanks again. :slight_smile:

Exactly, there is one collinear relationship that confused me. Now your suggestion make me more clear to solve it.


  1. pi(+1) = P(+1)/P; clearly is not correct. With that timing, the equation is
    But the definition of inflation needs to hold not always, not just in expectations. Thus, you need to shift it by one period.
  2. @ChrisL is right: your market clearing condition contains
omega_p/2 * ( pi/pi-1)^2

From what you described, this should actually be

omega_p/2 * ( pi/STEADY_STATE(pi)-1)^2

That mistake seems to be in more than one equation.
3. Given that we identified several issues, you should carefully check all your equations again.

1 Like

Thank you for your kind reply. You helped me a lot.
I will carefully check my all equations based your and @ChrisL suggestion.