Eigenvalues less than forward looking variables

I am getting eigenvalues less than the number of forward looking variables. There is no timing issue with the model. SO the result is very perplexing. Can anyone please help with this problem. Attached is the mod file.

Thanks
Steveslovakia.mod (5.3 KB)

Sometimes it is a parameter problem when Blanchard-Kahn condition is not satisfied.

If you are certain that it is not a timing problem, then I guess check the parameters. You can change them one at a time, assigning different values to see which parameter is causing the problem.

Thank you for your response. Since you have raised the issue of parameters, I have a question. Parameters are fixed wrt to steady state values of variables. Say for example, the discount factor beta is calibrated wrt the steady state interest rate. Changing beta would then mean changing the steady state value of interest rate. This would amount to almost changing the entire model because interest rate is connected to so many other variables. All other steady state values have to be reset. Then how does one change parameters and see if BK conditions are satisfied. There are so many parameters in a model.

The DSGE model can be written in compact form as Y_t = A Y_{t-1} + e_t, where matrix A is the companion matrix of the model. The eigenvalues here are computed based on A, which contains functions of the deep parameters of the model.

So suppose that you have a parameter issue causing BK condition to be violated, and not a timing issue, then I guess the model cannot be solved for the parameters you have chosen. If you want to keep same parameters, then you may want to modify your model slightly to change the elements of matrix A.

But first of all, check to see if it is indeed parameter issue. It is not true that changing one parameter affects ALL steady-state variables unless each steady-state variable in your model is a function of all the parameters.

And there is nothing wrong with some steady-states changing, unless you have a known target for ALL your steady-state variables.

If you have certain targets for your steady state variables, e.g., K/L = 0.5, and you don’t want that to change, you can calibrate it instead of calibrating the parameters that determines it. For example, you can declare k_l, y_l, etc as parameters and calculate (\delta=I/k), \alpha, etc based on theses. But then, you may have to solve for the steady-state in k_l (=K/L), which may be more tedious.

Remember, the steady-state is just a mapping between parameters and steady variables. Given steady-state relationship \beta = \frac{1}{1+r_{ss}}, you can fix \beta to get r_{ss} or you can fix r_{ss} to get \beta if you have a target value for r_{ss}.

But check first if your problem is indeed parameter problem.

Thank you. If some eigenvalues show Inf. Is that an indication towards any equation in the model that needs rectification? In what direction should we target modification of the model when we see values like Inf in the eigenvalues?

If there are 50 equations in the model, then there are 50 eigenvalues. So it seems the eigenvalues follow the ordering of the equations. I mean if you do it by hand, so I guess it is same in dynare too. Or maybe dynare first partitions the equations into stable and unstable as in BK theory. But I think it does not matter for your problem. Conditioned on your problem being a parameter issue, the way I do it is to change the parameters one at a time…trial and error sort of. Maybe there are better ways, but unfortunately I do not know.

If dynare follows the ordering of the equations in stating the eigenvalues, my problem equation is technology specification. Changing those parameters did not yield any fruitful result. So it seems unlikely.

So I guess dynare then groups them first into stable/unstable or state/control equations. You may want to try the other parameters…

I am pretty sure your timing is wrong. If you look at

k_b=(1-delta_k)*k_b(-1)+f*(1-kappa)*L(-1);

then k_b is already predetermined and therefore entered in the standard Dynare timing convention. But then you declare it as

predetermined_variables q, h, k_b;

which shifts it by one more period.

Thanks Professor. If I don’t declare kb as pre determined, I get more inf in eigenvalue. What do I do?

Infinite generalized eigenvalues are not a problem. The important part is to get the timing correct. You stated

which is obviously not true. So continue checking and correcting the timing. That’s more likely to be the cause of BK violations than parameter settings.

Now there is no eigenvalue issue. But strangely still the BK conditions are not satisfied.

slovakia.mod (5.5 KB)

You did not provide the external function you are using.

Here are the external files

lambda.m (55 Bytes) qh.m (51 Bytes) ql.m (51 Bytes)

Use model_diagnostics to see

MODEL_DIAGNOSTICS: The following endogenous variables aren't present at the current period in the model:
mu_b

I corrected the model for the missing variables (mu_b) and re ran the model. Dynare says…

MODEL_DIAGNOSTICS: No obvious problems with this mod-file were detected.

Blanchard & Kahn conditions are not satisfied: indeterminacy due to rank failure.
slovakia.mod (5.6 KB)

Check all your timings. For example,

lambda_p(-1) = 1/(c_p(-1)-a_p*c_p(-2))  ;

looks very strange. It should almost never happen that an equation does not contain a variable dated time t.

I did those deliberately… But putting the usual euler form also yields no results.
I have a B = 0 (bond equation) in my model. Is that causing the problem.

You need to fix all of these problems. Having B=0 often is also problematic. Simply plug in and drop B from the variables.

I re-ran the model. I am getting the following error

Error using print_info (line 32)
One of the eigenvalues is close to 0/0 (the absolute value of numerator and denominator is smaller than 0.0000!
If you believe that the model has a unique solution you can try to reduce the value of qz_zero_threshold.

What does this indicate? What is the probable source of error now?slovakia.mod (5.7 KB)