Blanchard & Kahn conditions are not satisfied: no stable equilibrium & The Jacobian of the static model is singular

Hi all,
So I’m trying to set up and run a small two country open economy model as my master thesis, this model to be precise:

I get the following error message when running the code: “Blanchard & Kahn conditions are not satisfied: no stable equilibrium.”. When I run the model_diagnostics I get the following information, that I don’t know how to solve,:

"MODEL_DIAGNOSTICS: The Jacobian of the static model is singular
MODEL_DIAGNOSTICS: there is 1 colinear relationships between the variables and the equations
Colinear variables:
Colinear equations
20 21 24 25 26 27 36 38 39

MODEL_DIAGNOSTICS: The singularity seems to be (partly) caused by the presence of a unit root
MODEL_DIAGNOSTICS: as the absolute value of one eigenvalue is in the range of ±1e-6 to 1.
MODEL_DIAGNOSTICS: If the model is actually supposed to feature unit root behavior, such a warning is expected,
MODEL_DIAGNOSTICS: but you should nevertheless check whether there is an additional singularity problem.
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 have double checked all the equations so I have no clue what’s wrong actually, and since the model is from a published paper it should work I assume.
Any suggestions? All help is appreciated, thank you in advance!

model.mod (5.4 KB)

Have you asked the authors for replication files?

Thank you for reply.

No I have not, since the author doesn’t use Dynare but ‘DSGE-SVt’ Matlab package and stochastic volatility for the shocks. I intend not to, and stick with Dynare.

Do you have any suggestions? I have read on the forum that it might be related to the terms of trade or the Taylor rule etc, but I don’t really manage to solve it in this case.

I would still ask the authors to cross-check with implementation. Replicating papers is hard. I also suggest

See also

I got the code from the author but it’s too confusing and it will take way too much time for me to decipher and learn the package she is using(I don’t have much experience with Matlab).

I checked the model in latex and all the equations seems fine, really confusing. Any other/last suggestions?
Edit: If I remove the real wage variable (omega), the diagnostics command says MODEL_DIAGNOSTICS: No obvious problems with this mod-file were detected.

But the model still doesnt run and I get the following error messages:

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

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

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

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

It’s not about the package per se but rather about the entered model equations. You should be able to cross-check their implementation with yours.

The script I received looks like this, which gives me nothing

I just sent her another email asking for the model details however but i think the script I received is the one.
user_mod.m (17.7 KB)

But that shows the timing. The entries set here are the coefficients in the linearized equations. G0 is contemporaneous, G1 forward-looking. V.* is the index of the respective variable.

Yes, so I then need another script with the authors equations/model? (I assumed the linearized equations in the online appendix was correct, maybe there is missing some market clearing condition or something)

I don’t understand the question. Your screenshot shows every single equation, which variables appear in the equation and which timing they have. Nothing else should be required to check the timing between that code and yours.

My question is, I’m not sure how to interpret it, for example, at row 39 why is the coefficient of capital minus Omega?

Also, I noticed a potential problem, the author writes that all variables are log-deviations from steady state except r_t=R_t-R, and a_t=A_t-A but all equations are log-linearized and I have entered both r_t and a_t as equal zero in the steady state model block.
Might this be related to my problem? I don’t know how to set up the model if some of the equations aren’t log-deviations but the rest are? Also there is no R_t-R and A_t-A in the specified equations so I’m a bit confused.

I’m also sorry for taking up so much of your valuable time Professor!

Edit: I solved it, the problem were the steady state relations in the Net foreign assets equation. I checked the model and equations from a previous study (which the author updated) and there were no steady state relations. So when I removed them it worked.

Hi - can someone help me spot the timing (or other) issue in this mod file? I am getting the BK errors but I think the timing is correct? I am using Dynare 4.6.4. Any help will be really appreciated! Model diagnostics said no obvious errors.
US_IC3_v2.mod (14.7 KB)

If the timing is correct, it may be a sign error, a problem with linearization or simply a problem with the parameterization.

Hi again,
So I’m trying to estimate the model with data/bayesian methods and I’m back with “Blanchard & Kahn conditions are not satisfied: no stable equilibrium.”

It works however with stoch_simul as stated last week, any suggestions?

Thanks in advance.

Usually, the culprit is a unit root, so that you are missing the diffuse_filter-option.

It worked (also had to change mode_compute=6 instead of 4). However I do get the following messages:

"Estimation::marginal density: The support of the weighting density function is not large enough…
Estimation::marginal density: I increase the variance of this distribution.

Estimation::marginal density: Let me try again.

Estimation::marginal density: There’s probably a problem with the modified harmonic mean estimator.


Log data density is -Inf.

The Brooks and Gelman (1998) plots also looks terrible! Advice?

Edit: I’m currently investigating the mode check.

Here are the plots for mode_check, should I change priors for those with red dots? Problems with the data? What about “ssigma” ?

Did you correctly specify the observation euqations? That is the most common mistake.

I’m using log-differenced real gdp and investment per capita, log-differenced gdp deflator as inflation, and the interest rate is specified as

where R^(data) is in percentage, as stated in the manual. R^(obs) does not have mean zero however. I’m using quarterly data over 26 years.

Could the problem be with the interest rate or the log-differenced output and investment?

1 Like

Thanks very much for the response! I am still looking for the error(s) however. The frustrating part is it was all working fine in the previous version of matlab (2017) I had. The errors started appearing after I updated to matlab 2021. Any clue why that might be the case?