49 lines
1.6 KiB
Matlab
49 lines
1.6 KiB
Matlab
% Copyright (C) 2005 Michel Juillard
|
|
%
|
|
function forecast(var_list)
|
|
global options_ dr_ oo_ M_
|
|
|
|
old_options = options_;
|
|
options_ = set_default_option(options_,'periods',40);
|
|
if options_.periods == 0
|
|
options_.periods = 40;
|
|
end
|
|
options_ = set_default_option(options_,'conf_sig',0.9);
|
|
|
|
if size(oo_.endo_simul,2) < M_.maximum_lag
|
|
y0 = repmat(oo_.steady_state,M_.maximum_lag);
|
|
else
|
|
y0 = oo_.endo_simul(:,1:M_.maximum_lag);
|
|
end
|
|
|
|
if M_.exo_det_nbr == 0
|
|
[yf,int_width] = forcst(oo_.dr,y0,options_.periods,var_list);
|
|
else
|
|
exo_det_length = size(oo_.exo_det_simul,1);
|
|
if options_.periods > exo_det_length
|
|
ex = zeros(options_.periods,M_.exo_nbr);
|
|
oo_.ex_det_simul = [ oo_.exo_det_simul;...
|
|
repmat(oo_.exo_det_steady_state',...
|
|
options_.periods- ...
|
|
ex_det_length,1)];
|
|
%ex_det_length,1),1)];
|
|
elseif options_.periods < exo_det_length
|
|
ex = zeros(exo_det_length,M_.exo_nbr);
|
|
end
|
|
[yf,int_width] = simultxdet(y0,dr_,ex,oo_.exo_det_simul,...
|
|
options_.order,var_list);
|
|
end
|
|
|
|
for i=1:M_.endo_nbr
|
|
eval(['oo_.forecast.Mean.' M_.endo_names(i,:) '= yf(' int2str(i) ',M_.maximum_lag+1:end)'';']);
|
|
eval(['oo_.forecast.HPDinf.' M_.endo_names(i,:) '= yf(' int2str(i) ',M_.maximum_lag+1:end)''-' ...
|
|
' int_width(:,' int2str(i) ');']);
|
|
eval(['oo_.forecast.HPDsup.' M_.endo_names(i,:) '= yf(' int2str(i) ',M_.maximum_lag+1:end)''+' ...
|
|
' int_width(:,' int2str(i) ');']);
|
|
end
|
|
|
|
for i=1:M_.exo_det_nbr
|
|
eval(['oo_.forecast.Exogenous.' lgx_det_(i,:) '= M_.exo_det_simul(:,' int2str(i) ');']);
|
|
end
|
|
|
|
options_ = old_options; |