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

The rank condition ISN’T verified!

Error using print_info (line 45)
Blanchard Kahn conditions are not satisfied: indeterminacy
Error in stoch_simul (line 92)
print_info(info, options_.noprint, options_);
Error in liq_b (line 456)
info = stoch_simul(var_list_);
Error in dynare (line 223)
evalin(‘base’,fname) ;

I have tried using Model_diagnostics but it cannot identify any problems with the .mod file

I have a feeling the problem could be with equation 8 and 9 as they can be collapsed into one equation but then I am not sure which endogenous variable to eliminate. Could someone kindly provide some guidance.

That is generally hard to tell. Most probably there is still a timing problem or a problem with the parameterization. I would recommend simplifying the model by adding lump sum taxation to balance the budget and see whether it runs. Only then add the financing rules. This assures that it is not a matter of the parameterization of the fiscal rules.

I also have the same message error when running my code.

I checked the timing of my variables many times and cannot see where the problem comes from.

As I have one more forward-looking variables in comparison with the number of explosive eigenvalues, I changed the timing of the risk-free rate that I have in my model such that it is no longer predetermined, and then the model is running.

But in my view this does not make sense economically, as the risk-free rate is a predetermined variable, so it should be written in Dynare in t when received in t+1, right ? But then, the Blanchard-Kahn conditions are not satisfied.

Could it be that in my model, default on risk-free bonds can occur ex-post, even though I didn’t explicitly allow for default ?

@dynare16 Without the equations, it is hard to tell what you are talking about. But in most models the risk-free rate between time t and t+1 is not predetermined. The reason is that at time t the shocks first realize and only then the interest rate is chosen. This implies that the risk-free rate is chosen at time t, making it a regular jump variable.

The code is running because the risk-free rate is not predetermined here. When it is predetermined, Blanchard-Kahn conditions are not satisfied. So I just want to make sure that a non-predetermined risk-free rate is consistent in my model.

Now I see what you mean with predetermined risk-free rate. Indeed your timing for the risk-free rate in the model looks wrong.
The underlying reason why the wrong timing makes the model run might be the same as in [Timing of capital in two sector economy)

Then what should I conclude ? The risk-free rate which is paid in period t should be written r(-1) in Dynare, right ? And then the problem with the Blanchard Kahn conditions comes from another variable ? But I can’t see which one.

Yes, the risk-free rate which is paid in period t should be written r(-1).
Please follow the above link I gave you and check it out, because I think your problem is related to one stock (debt) that is predetermined being split up within the period for two uses. In this case, the latter are not predetermined anymore.

It seems to me that the stock of debt is not predetermined : in period t, households demand debt, firms demand debt and market clears, and both sectors use that debt to fund projects in period t already. And then the risk-free rate is paid in period t on debt borrowed in period t-1 but it is already determined in period t-1 at the time market clears. Am I wrong ?

In the model, I used one variable for households’ demand for debt, one variable for firms’ demand but only one variable for debt supply from patient households. Is this wrong ? I considered that, as both debts are riskless, they are bought on a unique market with a unique borrowing rate. Maybe I should use two distinct variables for debt supply from patient households : one for firms and the other one for impatient households, and then two market-clearing conditions ?

I don’t know your model well enough, so you are the one who needs to figures this out based on economic intuition. In particular you need to think about the timing convention in your model.

The question which debt stock is predetermined is answered by considering when their value is determined. For example, when you buy a risk-free bond today at price R^(-1) you know that the debt stock one period later will be B=1. It does not matter that markets need to adjust at time t+1 to clear the debt market. That only means demand needs to adjust to a given supply

After thinking about it, I don’t think I have any predetermined stock of debt in my model because patient households choose what they want to lend at the same time firms and impatient households choose what they want to borrow and then the debt market clears such that the total amount lent by patient households is split between firms and impatient households. This all occurs in the same period.

However, the decision problem of impatient households might not be very standard and I am wondering whether this could be what makes the Blanchard-Kahn conditions not satisfied in my model. Impatient households can borrow from patient households and they can save money by buying risky stocks to firms. Does that make the borrowing rate not predetermined as there is some risk on impatient households’ savings ?
As for firms, they can borrow from patient households and issue stocks.
I do not allow for default in my model. But I am not sure whether my borrowing rate should be seen as a risk-free rate (known in the previous period before being paid) or not.

In the Iacoviello paper “Financial Business Cycles” www2.bc.edu/~iacoviel/research_files/FBC.pdf (2014), I don’t understand why the deposit rate paid by banks to patient households is predetermined and why, on the contrary, the lending rate paid by firms to banks on their loans is not predetermined. Do I have something similar here ?

It might be, but I am no expert in this literature. You need to understand the economic intuition behind your modeling approach. It will deliver the answer to the correct timing that makes the model solve.