diff --git a/matlab/dyn_forecast.m b/matlab/dyn_forecast.m index a58b126a187b23e3c123cea13cd2c8d862f376fd..7819ab1823d06fe5351f69028b7cd54010f67a29 100644 --- a/matlab/dyn_forecast.m +++ b/matlab/dyn_forecast.m @@ -151,12 +151,17 @@ else elseif horizon <= exo_det_length ex = zeros(exo_det_length,M.exo_nbr); end + if options.linear + iorder = 1; + else + iorder = options.order; + end if isequal(M.H,0) [yf,int_width] = simultxdet(y0,ex,oo.exo_det_simul,... - options.order,var_list,M,oo,options); + iorder,var_list,M,oo,options); else [yf,int_width,int_width_ME] = simultxdet(y0,ex,oo.exo_det_simul,... - options.order,var_list,M,oo,options); + iorder,var_list,M,oo,options); end end diff --git a/tests/Makefile.am b/tests/Makefile.am index b6d3a0655934a1bb7f2af22208ed65a339aefb80..2ab4959101209a55f605d80a2f4387adc67e5e53 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -295,6 +295,7 @@ MODFILES = \ stochastic_purely_forward/stochastic_purely_forward.mod \ stochastic_purely_forward/stochastic_purely_forward_with_static.mod \ forecast/Hansen_exo_det_forecast.mod \ + forecast/linear_exo_det_forecast.mod \ forecast/ls2003_rolling_window_forecast.mod \ gradient/fs2000_numgrad_13.mod \ gradient/fs2000_numgrad_15.mod \ diff --git a/tests/forecast/linear_exo_det_forecast.mod b/tests/forecast/linear_exo_det_forecast.mod new file mode 100644 index 0000000000000000000000000000000000000000..cd256bb79bc1e8af813b4a9a44e2eaa9fd89b1f3 --- /dev/null +++ b/tests/forecast/linear_exo_det_forecast.mod @@ -0,0 +1,48 @@ +// Regression test for issue #1608 (combining forecast, varexo_det and linear) + +var y, pi, i, g, u, k; +varexo e_g e_u e_k; +varexo_det gov; + +parameters lambda, pi_target, y_target, phi_pi, phi, rho, rhoout, rhopi, rhoint, sigma1, sigma2, sigma3; + +lambda = 0.3; +pi_target = 0; +y_target = 0; +phi_pi = 1.5; +phi = 1; +rho = 0.99; +T = 50; +rhoout = 0.8; +rhopi = 0.5; +rhoint = 0; +sigma1 = 1; +sigma2 = 1; +sigma3 = 1; + +model(linear); +y=y(+1)-phi*(i-pi(+1))+gov+g; +pi=lambda*y+rho*pi(+1)+u; +i=phi_pi*(pi-pi_target)+k; +g=rhoout*g(-1)+e_g; +u=rhopi*u(-1)+e_u; +k=rhoint*k(-1)+e_k; +end; + +steady; +check; + +shocks; +var e_g; +stderr sigma1; +var e_u; +stderr sigma2; +var e_k; +stderr sigma3; +var gov; +periods 1:9; +values 0.2; +end; + +stoch_simul(irf=0); +forecast;