BK conditions satisfied when model is in one form but not when written in equivalent form


I want to solve the following simple model in Dynare:

x_t = E_t x_{t+1} - \frac{1}{\sigma} (i_{t-1} - r_t^n) \\ \mu_t^x = \frac{1}{\beta} \mu_{t-1}^x - x_t \\ E_t \mu_{t+1}^x = 0.

simple_impinf.mod (488 Bytes)
When I try to do so, I get the following error:

There are 2 eigenvalue(s) larger than 1 in modulus for 2 forward-looking variable(s)
The rank condition ISN’T verified!

If I eliminate \mu_t^x from the equations and write the model in the equivalent form

x_t = E_t x_{t+1} - \frac{1}{\sigma} (i_{t-1} - r_t^n) \\ E_t x_{t+1} = \frac{1}{\beta} (E_{t-1} x_t - x_t).

then Dynare solves the model without a problem: simple_impinf_nomu.mod (472 Bytes)

What’s going wrong in the former case? Can it be fixed without eliminating the \mu_t^x (because I want to expand the model in such a way that eliminating the Lagrange multipler by hand may be difficult).

I don’t really see why the two are equivalent. Could you provide additional steps?

Hi Johannes

Starting with the first system, I iterate the second equation forward and take the expectation conditional on period t information to get

E_t \mu_{t+1}^x = \frac{1}{\beta} \mu_t^x - E_t x_{t+1}.

Using the third equation - i.e. E_t \mu_{t+1}^x = 0 - I get \frac{1}{\beta} \mu_t^x = E_t x_{t+1}. Substituting this expression in for \mu_t^x and \mu_{t-1}^x in the second equation then gives

E_t x_{t+1} = \frac{1}{\beta} (E_{t-1} x_t - x_t)

which is the second equation in the second system.

Conversely, to go from the second system to the first system, I define \mu_t^x = \beta E_t x_{t+1}. Substituting into the second equation of the second system for E_t x_{t+1} and E_{t-1} x_t gives the second equation of the first system. Further

E_t \mu_{t+1}^x = \frac{1}{\beta} \mu_t^x - E_t x_{t+1} = 0

so the third equation of the first system also holds.

The two systems are therefore equivalent (if my reasoning is correct).

1 Like

I see. You uncovered a bug in Dynare 4.6, see Preprocessor simplification incorrectly treats foward-looking equations. (#83) · Issues · Dynare / preprocessor · GitLab. Both files will still run in 4.5.7 and will work again in Dynare 4.7.

Thanks Johannes! I’ll try it in the older version.

You can also stay with Dynare 4.6.4 for the moment.
You can prevent the preprocessor bug by tagging the third equation for \mu_x.
E.g. this model block should solve the problem

x = x(+1) - 1/sigma*(i(-1) - rn);
mu_x = 1/beta*mu_x(-1) - x;
mu_x = 0;
mu_x(+1) = 0;

Yes, that is a workaround to disable preprocessor simplifications.