The Schorfheide (2000) example

Good day all,

I have been running the Dynare example code (both fs2000_nonstationary.mod and fs2000.mod) that come as part of the pre-programmed Dynare example suite (fs2000_nonstationary.mod code presented below). The model is based on the Nason and Cogley (1994) model and the Schorfheide (2000) paper. It is essentially the same as the example given in Prof Eric Sims’ course notes online (Spring 2010) “Money in a Real Business Cycle Model” ( www3.nd.edu/~esims1/money_rbc.pdf ). What I cannot understand is why the Response to a technology shock in the Dynare examples produce IRFs with negative real output responses to the TFP shock – perhaps I am missing something regarding how to interpret the output but I have searched high and low for how it should be interpreted and can find nothing. My best guess is that is has something to do with the options connected to the stoch_simul options and that the IRFs need to take on a certain form which is not the default (but I certainly have no confidence in my own guess here).

The output shown in the Nason and Cogley paper, the Schorfheide paper and Sims’ notes all show what you would expect, a positive real output response. I have attached the Nason and Cogley original the discussion is from the bottom of page S49 with the diagrams on page S50, the discussion is also in Schorfheide (attached) at the bottom of page pg 663 onto pg 664 with the diagram on pg 664. Is someone able to advise how the example code can be specified to generate the results as they are displayed in the reference material?

This is the fs2000_nonstationary.mod code:

/*

  • This file is a modified version of ‘fs2000.mod’.
  • The difference is that, here, the equations are written in non-stationary form,
  • and Dynare automatically does the detrending.
  • Also note that “m” and “dA” in ‘fs2000.mod’ are here called “gM” and “gA”
    */

/*

  • Copyright © 2004-2010 Dynare Team
  • This file is part of Dynare.
  • Dynare is free software: you can redistribute it and/or modify
  • it under the terms of the GNU General Public License as published by
  • the Free Software Foundation, either version 3 of the License, or
  • (at your option) any later version.
  • Dynare is distributed in the hope that it will be useful,
  • but WITHOUT ANY WARRANTY; without even the implied warranty of
  • MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  • GNU General Public License for more details.
  • You should have received a copy of the GNU General Public License
  • along with Dynare. If not, see http://www.gnu.org/licenses/.
    */

var gM gA;
trend_var(growth_factor=gA) A;
trend_var(growth_factor=gM) M;
var(deflator=A) k c y;
var(deflator=M(-1)/A) P;
var(deflator=M(-1)) W l d;
var R n;
varexo e_a e_m;

parameters alp bet gam mst rho psi del;

alp = 0.33;
bet = 0.99;
gam = 0.003;
mst = 1.011;
rho = 0.7;
psi = 0.787;
del = 0.02;

model;
gA = exp(gam+e_a);
log(gM) = (1-rho)log(mst) + rholog(gM(-1))+e_m;
c+k = k(-1)^alp*(An)^(1-alp)+(1-del)k(-1);
P
c = M;
P/(c(+1)P(+1))=betP(+1)
(alpk^(alp-1)(A(+1)n(+1))^(1-alp)+(1-del))/(c(+2)P(+2));
(psi/(1-psi))
(c
P/(1-n))=W;
R = P*(1-alp)k(-1)^alpA^(1-alp)n^(-alp)/W;
W = l/n;
M-M(-1)+d = l;
1/(c
P)=betR/(c(+1)P(+1));
y = k(-1)^alp
(A
n)^(1-alp);
end;

initval;
k = 6;
gM = mst;
P = 2.25;
c = 0.45;
W = 4;
R = 1.02;
d = 0.85;
n = 0.19;
l = 0.86;
y = 0.6;
gA = exp(gam);
end;

shocks;
var e_a; stderr 0.014;
var e_m; stderr 0.005;
end;

steady;

check;

stoch_simul;

Thanks in advance
Have a great day
2000 - Schorfheide - Loss function-based evaluation of DSGE models.pdf (254 KB)
1994 - Nason, Cogley - Testing the implications of long-run neutrality for monetary business cycle models.pdf (1.86 MB)

Could the reason be that Schorheide has a permanent technology shock and you are considering a detrended model, i.e. you have to add the new higher steady state back to it?

Hi Prof,
I agree that could very well be a reason! However, my ignorance is on display here in that I would therefore assume it would be straight forward using Dynare to add the higher steady state and produce a graph like the ones in Schorfheide etc. But I have no idea how that would be done and I have not come a cross such a transformation in all the example codes I have - I would assume people would be doing this but I have not seen such a thing. Is anyone able to suggest to me how the code should be altered to produce the graphs Schorfheide etc produce. I.e. How would I plot the trended IRF result of a permanent technology shock? Is there a resource someone could direct me to that discusses such a procedure?
Thanking you all

Hi Prof,

I see you may have an potential code example on your webpage, from: AguiarGopinath2007.mod :

//%%%%%%%%%%%%%%%%%%%%%% Plot impulse response functions of %%%%%%%%%%%%%%
//%%%%%%%%%%%%%%%%%%%%%% non-stationary time series %%%%%%%%%%%%%%

//generate IRF of stationary model variables
stoch_simul(order=1,nograph) log_y log_c log_i g;

//Now back out IRF of non-stationary model variables by adding trend growth back

log_Gamma_0=0; //Initialize Level of Technology at t=0;
log_Gamma(1,1)=g_eps_g(1,1)+log_Gamma_0; //Level of Tech. after shock in period 1

// reaccumulate the non-stationary level series; note that AG2007 detrend with X_t-1, thus the technology level in the loop is shifted by 1 period
for ii=2:options_.irf
log_Gamma(ii,1)=g_eps_g(ii,1)+log_Gamma(ii-1,1);
log_y_nonstationary(ii,1)=log_y_eps_g(ii,1)+log_Gamma(ii-1,1);
log_c_nonstationary(ii,1)=log_c_eps_g(ii,1)+log_Gamma(ii-1,1);
log_i_nonstationary(ii,1)=log_i_eps_g(ii,1)+log_Gamma(ii-1,1);
end
//Make the plot
figure(‘Name’,‘IRF of non-detrended variables to a trend productivity shock’);
subplot(3,1,1)
plot(1:options_.irf,log_y_nonstationary)
title(‘Output’)
subplot(3,1,2)
plot(1:options_.irf,log_c_nonstationary)
title(‘Consumption’)
subplot(3,1,3)
plot(1:options_.irf,log_i_nonstationary)
title(‘Investment’)

I am going to attempt to to play around with this before probably getting it wrong and crawling back here for assistance …

Yes, that is the way to go.