Unit root variables

Hello,

I was reading some an old post about unit root variables in Dynare and the obsolete “unit_root_vars” command as well as the diffuse_filter.

github.com/DynareTeam/dynare/issues/573

Has dynare been updated at all over the last few years to deal with simulating models where one or more variables may be nonstationary? I have a model in growth rates (which are stationary) that includes some cointegrating relationships where the level variables are not stationary. I am able to simulate the model in AIM, but I am trying to convert everything to Dynare and it does not like the fact that there is not a steady state given the trending level variables (e.g. the log level of GDP). AIM is able to deal with the unit root processes, but I cannot figure out how to get the exact same model and model parameters to work with Dynare.

A very simplified example highlighting the issue is as follows:

gc = f(gc(-1), C(-1), Y(-1), W(-1), r, …)

C = C(-1) + gc +eps_c

…and so on

where f(*) is a generic function command, gc is consumption growth, C is the log-level of consumption, Y is the log level of income, W is the log level of wealth, and r is the interest rate.

Hi,

pure non-stationary models have an infinity of steady states; non-stationary models with drift have none.

In Dynare, this creates a problem if you have a non-linear model where you need to compute a local approximation. In this case, you cannot endogenously compute the steady state, because there are many of them. You need to provide the steady state.

If your model is already linear, there should be no such problem, because the default initial value of 0 already is the steady state.

A simulation example of a model with unit root would be the standard local trend model:

var beta mu psi	tren slop cyc v;

varexo e_irr e_lev e_slp e_cyc;

parameters rho sdirr sdlev sdslp sdcyc;
	
rho    = 0.75;   
sdirr = 0.005;  
sdlev = 0.0001; 
sdslp = 0.0001; 
sdcyc = 0.005; 

model(linear);
	mu	= mu(-1) + beta(-1) + sdlev*e_lev;
	beta =	beta(-1) + sdslp*e_slp;
	psi = rho*psi(-1) + sdcyc*e_cyc;
		
	tren =	mu(-1);
	
	slop =	beta(-2);
	
	cyc = psi(-1);
	
	v = tren + cyc + sdirr*e_irr;	
end;

shocks;
	var e_irr; stderr 1;
	var e_lev; stderr 1;
	var e_slp; stderr 1;
	var e_cyc; stderr 1;
end;

stoch_simul(order=1,irf=20,periods=200);

rplot tren cyc;