BK not satisfied Open Economy DSGE

Hi all:

I am a graduate student working on my second year paper. I made an open economy DSGE model to look at the spillover of unconventional monetary policy of centre country. The model is merge of Banerjee, Devereux and Lombardo(2016) and Sims and Wu(2020). When i run my code, it reported that:

Error using print_info (line 32)
Blanchard & Kahn conditions are not satisfied: indeterminacy.

Error in stoch_simul (line 103)
print_info(info, options_.noprint, options_);

Error in tomeme2.driver (line 1171)
[info, oo_, options_, M_] = stoch_simul(M_, options_, oo_, var_list_);

Error in dynare (line 293)
evalin(‘base’,[fname ‘.driver’]) ;

Error in ss_tomeme (line 125)
dynare tomeme2

Any one can point it out why BK conditions are not satisfied. I checked it several times but i can’t find more mistakes. Also, is it possible to know that the BK condition is not satisfied is because jump variables are too much or not enough?

tomeme.rar (6.0 KB)

1 Like

I would recommend having a look at Timing of capital in two sector economy
Maybe the same problem applies to bonds in your economy.

Hi professor Pfeifer:

Thanks for your reply! Your response is always one of the most valuable source for me to learn dynare.

Today i tried to think about how to fix the problem but still didn’t figure it out. I didn’t aggregate capital like two sector economy did. Also bonds in two countries are independent and not aggregated. The only link between capital of two countries is one country can borrow from the other one and buy bond to finance its own production. So is it possible to tell more details about how this indeterminancy problem came from?

Before this step, i built a simpler one. There’s no capital flow but only trade goods between the two countries, and it works well. When i added the capital flow, the indeterminancy problem came out.

Thanks again for your help!

Rahul

It’s hard to tell. Maybe the reason is that you now create a portfolio choice problem between bonds and capital that does not have a unique solution.

Hi professor Pfeifer:

Thanks for your reply!

I solved the problem by moving the EME household oversea euler equation (they can purchase bonds from the country) one period ahead. So it change from:
1 = (RdcLame(1)rer(1))/(rerCpic(1))
to
1 = (Rdc(-1)Lamerer)/(rer(-1)Cpic)
as shown in line 231 in my dynare code. The code runs but i am wondering can i do that? I saw some other codes writing SDF as "SDF=beta
mue/mue(-1)" (mue is marginal utility) rather than "SDF(1)=beta
mue(1)/mue" so i was thinking it might be fine. But my code results is wired. The tightening monetary policy in center country made the currency depreciate. So i am thinking is it because the way i wrote euler equation is wrong? So that the UIP condition become very wired.

Thanks again!

Rahultomeme4.m (16.6 KB) tomeme4.mod (17.0 KB)

Oh sorry this is the executive m.file:
tomeme4_executive.m (4.0 KB)

No, you cannot easily shift the timing. The SDF code you mention is a definition. Within the Euler equation it then appears as SDF(+1), so the timing is again correct for an Euler equation.

Hi professor Pfeifer:

Thanks for your reply! I think there’s something wrong in my model or code. To simplify the model, i remove the financial friction (set parameter of Gertler and Karadi incentive constraint = 0). The code is:

tomeme_frictionless.m (2.4 KB)
tomeme_frictionless.mod (16.8 KB)

But we i run the code, it reported the mistake that:

Error using print_info (line 32)
The generalized Schur (QZ) decomposition failed. For more information, see the documentation for Lapack function
dgges: info=76, n=74. You can also run model_diagnostics to get more information on what may cause this problem.

Error in stoch_simul (line 103)
print_info(info, options_.noprint, options_);

Error in tomeme_frictionless.driver (line 1009)
[info, oo_, options_, M_] = stoch_simul(M_, options_, oo_, var_list_);

Error in dynare (line 293)
evalin(‘base’,[fname ‘.driver’]) ;

Error in tomeme_frictionless (line 124)
dynare tomeme_frictionless.mod

When i use model_diagnostics(M_,options_,oo_) to check the, it reports that:

MODEL_DIAGNOSTICS: The Jacobian of the static model is singular
MODEL_DIAGNOSTICS: there is 3 colinear relationships between the variables and the equations
Relation 1
Colinear variables:
Ce
Cc
Ge
Gc
Ke
Kc
Ie
Ic
Ihe
Ihc
Ye
Yc
Ywe
Ywc
Le
Lc
Lde
Ldc
f1e
f1c
f2e
f2c
x1e
x1c
x2e
x2c
mue
muc
fwe
fwc
fe
fc
ne
nc
dc
de
be
V
rer
Pe
Pc
Relation 2
Colinear variables:
Ce
Cc
Ge
Gc
Ke
Kc
Ie
Ic
Ihe
Ihc
Ye
Yc
Ywe
Ywc
Le
Lc
Lde
Ldc
f1e
f1c
f2e
f2c
x1e
x1c
x2e
x2c
mue
muc
fwe
fwc
fe
fc
ne
nc
dc
de
be
V
rer
Pe
Pc
Relation 3
Colinear variables:
Ce
Cc
Ge
Gc
Ke
Kc
Ie
Ic
Ihe
Ihc
Ye
Yc
Ywe
Ywc
Le
Lc
Lde
Ldc
f1e
f1c
f2e
f2c
x1e
x1c
x2e
x2c
mue
muc
fwe
fwc
fe
fc
ne
nc
dc
de
be
V
rer
Pe
Pc
Relation 1
Colinear equations
1 2 7 8 9 32 33 38 44 45 46 71 72

Relation 2
Colinear equations
7 8 9 32 33 38 44 45 46 71 72

Relation 3
Colinear equations
7 8 9 32 33 38 44 45 46 71 72

MODEL_DIAGNOSTICS: The presence of a singularity problem typically indicates that there is one
MODEL_DIAGNOSTICS: redundant equation entered in the model block, while another non-redundant equation
MODEL_DIAGNOSTICS: is missing. The problem often derives from Walras Law.

I saw your suggestions on others related questions that start from a simplified model. I have coded the simplified before. In each side of the economy they are exactly the same. There are trade between the two countries but there’s no capital flow between the two. So the financial indermediaries only get deposit from its own household and lend loans to the local firms. The model works very well even with financial friction. The code is:

tomeme_excutive.m (2.2 KB)
tomeme1.mod (15.6 KB)

After i added the capital flow between two economy it reported BK condition is not satisfied. And after i remove financial friction it reported " The generalized Schur (QZ) decomposition failed". I am very confused since the financial intermediary is the same as Banerjee, Devereux and Lombardo(2016). So could you please tell me what might be the reasons for the mistake? Or which direction i should explore to debug.

Moreover, what are “colinear equations” it reported? For example, the equation 1 and 2 are just defining SDF in two countries. Yes they are same but with different variables. I am confused how can those “colinear”?

Thanks a lot! Your comments are really helpful!

Rahul

Hi professor Pfeifer:

I found the bug, there was a time error in Rv which is supposed to be Rv(-1).

Thanks for your help!