Error in replication: how to deal with the exogeneous gross real rate

Hi everyone,

I am trying to replicate Heterogeneity and Aggregate Fluctuations: Insights from TANK Models. When I work with the basic RANK model, I got the error message “There are 1 eigenvalue(s) larger than 1 in modulus for 2 forward-looking variable(s) The rank condition ISN’T verified!”. The code is attached.

Could anyone help me solve the problem or find the reason?
To be honest, I’m very confused by the setup of gross real interest rate: the central bank keeps the real interest rate constant in the face of aggregate shocks (other than monetary policy shocks). When it comes to the monetary policy shock, the real rate follows an exogenous process, R_t=Rexp{v_t} where v_t=rho_vv_t-1+eps_v.

Thank you very much!
Model_RANK.mod (1.8 KB)

var 
y_gap   $\tilde y$    (long_name='output gap')
y       ${y}$         (long_name='output')
y_nat   ${y^{n}}$     (long_name='natural output')
pi      ${\pi}$       (long_name='inflation')
a       ${a}$         (long_name='AR(1) technology shock process')
R       ${R}$         (long_name='gross real return')
v       ${v}$         (long_name='AR(1) monetary policy shock process')
;

varexo
eps_a   ${\varepsilon_a}$     (long_name='technology shock')
eps_r   ${\varepsilon_r}$     (long_name='monetary policy shock')
;

parameters
beta    ${\beta}$     (long_name='discount factor')
rho_a   ${\rho_a}$    (long_name='persistence of technology shocks')
rho_r   ${\rho_r}$    (long_name='persistence of monetary policy shocks')
sigma   ${\sigma}$    (long_name='coefficient of risk aversion')
phi     ${\phi}$      (long_name='Frisch elasticity')
epsilon ${\epsilon}$  (long_name='demand elasticity')
xi      ${\xi}$       (long_name='adjustment cost parameter')
R_nat   ${R^{n}}$     (long_name='steady state gross interest rate')
;

beta=0.995;
sigma=1;
phi=1;
rho_a=0.9;
rho_r=0.5;
epsilon=11;
xi=200;
R_nat=1.005;


model;

//composite parameters
#lambda=(epsilon-1)/xi;
#kappa=lambda*(sigma+phi);

[name='New Keynesian Philips Curve']
pi=beta*pi(+1)+kappa*y_gap;

[name='Dynamic IS curve']
y_gap=y_gap(+1)-1/sigma*(R-R_nat)/R_nat;

[name='output gap']
y_gap=y-y_nat;

[name='natural output']
y_nat=(1+phi)/(sigma+phi)*a;

[name='TFP shock']
a=rho_a*a(-1)+eps_a;

[name='exogeneous process for the real rate']
R=R_nat*exp(v);
v=rho_r*v(-1)+eps_r;

end;

initval;
y_gap=0;
y=0;
y_nat=0;
pi=0;
a=0;
R=1.005;
v=0;
end;


resid;
steady;
check;

shocks;
var eps_r=0.0625;
var eps_a=0;
end;

stoch_simul(order=1, irf=20);

Quickly skimming the paper, it seems that they never fully solve the model. They seem to only analytically focus on output. Inflation seems to be indeterminate. That is what you are experiencing in your code.

Thank you so much for your response, professor! yes, they focus on output.

In this case, how should I modify my code so that I can get the charts(for example, figure 1, 5; I will mainly focus on the RANK and TANK I, II, III models) in Dynare? or at least I can run my code?

My guess is that they used the analytical formulas derived in the text that allow computing the results for output but not inflation.

okay, I see. Thank you very much, Professor!

I just modified the code and tried again in Dynare, but I can only get the similar results 1) using the command ‘perfect_foresight_solver’ + 2) deleting the NKPC from the model. Is this correct?

When I use the command stoch_simul, I keep getting the messeage “The rank condition ISN’T verified!.”