Steady state existence

Hi Johannes!

A quick question that shouldn’t take you more than 3 minutes: attached is a mod file and a file with the parameters (you can also copy the text below into a matlab file and execute from there if you put everything in the same folder) – the residuals on the steady state are extremely small, but it is not computing. I just wanted to clarify whether I am doing something wrong, or if it’s just not a very stable solution. I wanted to get a feel of the solution from Dynare before coding my only solution. If my setup looks fine, then I will experiment with my own coded solution.

As always, thank you for your time and insight!


clear all; close all; clc;
P = parameters; %make sure these are updated
beta=P.beta; chipp=P.chipp; chifw=P.chifw; psipp=P.psipp; psifw=P.psifw;
xi=P.xi; gamma=P.gamma; pi=P.pi; se_h=P.se_h; rho_h=P.rho_h;
eta=P.eta; tau_c=P.tau_c; tau_i=P.tau_i; tau_n=P.tau_n; tau_k=P.tau_k; tau_marg=P.tau_marg; delta=P.delta;
iota=P.iota; alpha=P.alpha;

save parameterfile beta chipp chifw psipp psifw xi alpha gamma pi eta iota se_h rho_h delta tau_c tau_i tau_n tau_k tau_marg;
dynare hkgrowth.mod; %addpath C:\dynare\4.4.2\matlab
parameters.m (579 Bytes)
hkgrowth.mod (2.13 KB)

I don’t understand the problem. Dynare does find the steady state without any apparent problems. The error message comes from the Blanchard-Kahn conditions not being satsfied.

I didn’t realize that I uploaded that parameterization (was changing the parameters back and forth), but the problem arises from the fact that very small changes in a few parameters leads to no steady state – so the solution is not at all robust even if BK conditions weren’t violated.

Nonetheless, I just wanted to check that I wasn’t doing something wrong in the Dynare setup. This might be a problem where perturbation methods perform poorly.

It is possible that the steady state equations are highly non-linear in the parameters and no steady state exists. But usually the steady state values are continuous in the parameters and small variations should not affect the results in a big way. Have you tried increasing maxit?

Indeed, I was reading your reply in another thread, so I increased maxit “steady(solve_algo=2,maxit=5000);”. Solving a simple model with human capital turns out to be much harder than expected, at least under this new formulation of human capital! The nonlinearity comes from the fact that there are two intertemporal Eulers - one on consumption, one on labor - and under the simple setup in this file, no intratemporal Euler.

Thank you again for your reply and promptness!

Hey Johannes,

I returned to trying to solve this in dynare after making solving it in another software and trying to use its implied initial conditions. I was reading a thread about supplying an external steady state file (Steady state file) and followed the methodology, but it seems to not work. The error that comes up is:
??? Error using ==> print_info at 37
The generalized Schur (QZ) decomposition failed. For more information, see the
documentation for Lapack function dgges: info=11, n=9. You can also run model_diagnostics
to get more information on what may cause this problem.

Note the model diagnostics says that the shock equations are collinear – those are the last four equations in the dynare file that specify the process and then take exp(shock).

If you have a minute, could you check the external steady state file? I use homotopy to solve a simpler version of the steady state. It works outside of dynare – it’s what I use for my steady state computations. To get the Dynare file to run, just run this in a separate script:

clear all; close all; clc;
cd ‘[where you saved the parameter file]’
P = parameters; %make sure these are updated
beta=P.beta; chipp=P.chipp; chifw=P.chifw; psipp=P.psipp; psifw=P.psifw;
xi=P.xi; gamma=P.gamma; pipp=P.pipp; se_h=P.se_h; se_pp=P.se_pp; rho_h=P.rho_h; rho_pp=P.rho_pp;
eta=P.eta; tau_c=P.tau_c; tau_i=P.tau_i; tau_n=P.tau_n; tau_k=P.tau_k; tau_marg=P.tau_marg; delta=P.delta;
iota=P.iota; alpha=P.alpha;

cd '[where you saved the dynare files]
save parameterfile beta chipp chifw psipp psifw xi alpha gamma pipp eta iota se_h se_pp rho_h rho_pp delta tau_c tau_i tau_n tau_k tau_marg;
dynare hkgrowth.mod; %addpath C:\dynare\4.4.2\matlab
parameters.m (619 Bytes)
hkgrowth_steadystate.m (3.09 KB)
hkgrowth.mod (3.72 KB)

It tells me that ss_bmark is missing.

My fault, I should have posted that too.
ss_bmark.m (1.32 KB)

The problematic equations are

z_h=rho_h*z_h(-1)+se_h*eps_h; A_h=exp(z_h); z_pp=rho_pp*z_pp(-1)+se_pp*eps_pp; A_h=exp(z_pp);
The first three equations define exogenous processes for z_h, A_h and z_pp. Now you add a fourth equation redefining A_h to simultaneously be a function of the exogenous process z_pp. Essentially you are saying that

But this cannot be as both z_pp and z_h are driven by independent stochastic shocks. Hence, these four equations simultaneously holding is a zero probability event.
As you have four equations determining three variables, there must be another equation missing.

Wow, you’re amazing – as usual – good catch, that was an error on my part. Really appreciate your genuine interest in solving these sorts of problems!