diff --git a/tests/Makefile.am b/tests/Makefile.am index 528f92379..e8b09c698 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -174,6 +174,7 @@ MODFILES = \ shock_decomposition/fs2000_est_varlist.mod \ stochastic_purely_forward/stochastic_purely_forward.mod \ stochastic_purely_forward/stochastic_purely_forward_with_static.mod \ + forecast/Hansen_exo_det_forecast.mod \ gradient/fs2000_numgrad_13.mod \ gradient/fs2000_numgrad_15.mod \ gradient/fs2000_numgrad_2.mod \ diff --git a/tests/forecast/Hansen_exo_det_forecast.mod b/tests/forecast/Hansen_exo_det_forecast.mod new file mode 100644 index 000000000..22744908a --- /dev/null +++ b/tests/forecast/Hansen_exo_det_forecast.mod @@ -0,0 +1,95 @@ +/* +* The Hansen model following McCandless, George T. (2008): The ABCs of RBCs, Hardvard University Press, Chapter 6 +* +* This mod-file tests the correctness of forecasting with exogenous deterministic variables. +* A forecast starting at the steady state in t=0, where the only shock is a perfectly +* anticipated shock in t=8, is equal to the IRF to a 7 period anticipated news shock. +* Note the timing difference due to the fact that in forecasting. the agent starts at the +* steady state at time 0 and has the first endogenous reaction period at t=1 so that the shock at +* t=8 is only 7 period anticipated + +* This implementation was written by Johannes Pfeifer. Please note that the +* following copyright notice only applies to this Dynare implementation of the +* model. +*/ + +/* + * Copyright (C) 2014 Johannes Pfeifer + * + * 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 . + */ + + + +var c r y h k a; +varexo eps_a_surp eps_a_antic; +varexo_det e_det; + +parameters beta delta theta rho_a A_disutil; + +beta = 0.99; +delta = 0.025; +theta = 0.36; +rho_a = 0.35; +A_disutil = 2; + +model; +1/c = beta*((1/c(+1))*(r(+1) +(1-delta))); +(1-h)*(1-theta)*(y/h) = A_disutil*c; +c = y +(1-delta)*k(-1) - k; +y = a*k(-1)^(theta)*h^(1-theta); +r = theta*(y/k(-1)); +log(a)=rho_a*log(a(-1))+eps_a_surp+eps_a_antic(-7)+e_det; +end; + +steady_state_model; +a = 1; +h = (1+(A_disutil/(1-theta))*(1 - (beta*delta*theta)/(1-beta*(1-delta))))^(-1); +k = h*(theta*a/(1/beta -(1-delta)))^(1/(1-theta)); +y = a*k^(theta)*h^(1-theta); +c = y-delta*k; +r = 1/beta - (1-delta); +end; + +steady; + +shocks; +var eps_a_surp; stderr 0; +var eps_a_antic; stderr 0.01; +var e_det; +periods 8; +values 0.01; +end; + +stoch_simul(irf=40,nomoments, order=1); + +% make_ex_; + +forecast(periods=40); +figure +for ii=1:M_.orig_endo_nbr + subplot(3,3,ii) + var_name=deblank(M_.endo_names(ii,:)); + var_index=strmatch(var_name,deblank(M_.endo_names),'exact'); + plot(1:40,oo_.dr.ys(var_index)+oo_.irfs.([var_name,'_eps_a_antic']),'b',1:40,... % + oo_.forecast.Mean.(var_name),'r--') + title(var_name) + difference(ii,:)=oo_.dr.ys(var_index)+oo_.irfs.([var_name,'_eps_a_antic'])-oo_.forecast.Mean.(var_name)'; +end + +if max(max(abs(difference)))>1e-10 + error('Forecasts with exogenous deterministic variable is wrong') +end \ No newline at end of file