Commit 228b2a53 authored by Johannes Pfeifer 's avatar Johannes Pfeifer

conditional forecasts: add check whether simulation was successful

parent 181725c7
...@@ -204,9 +204,6 @@ if ~estimated_model ...@@ -204,9 +204,6 @@ if ~estimated_model
trend = repmat(ys(oo_.dr.order_var,:),1,options_cond_fcst.periods+1); %trend needs to contain correct steady state trend = repmat(ys(oo_.dr.order_var,:),1,options_cond_fcst.periods+1); %trend needs to contain correct steady state
end end
NumberOfStates = length(InitState); NumberOfStates = length(InitState);
FORCS1 = zeros(NumberOfStates,options_cond_fcst.periods+1,options_cond_fcst.replic); FORCS1 = zeros(NumberOfStates,options_cond_fcst.periods+1,options_cond_fcst.replic);
...@@ -252,7 +249,11 @@ for b=1:options_cond_fcst.replic %conditional forecast using cL set to constrain ...@@ -252,7 +249,11 @@ for b=1:options_cond_fcst.replic %conditional forecast using cL set to constrain
[FORCS1(:,:,b), FORCS1_shocks(:,:,b)] = mcforecast3(cL,options_cond_fcst.periods,constrained_paths,shocks,FORCS1(:,:,b),T,R,mv, mu); [FORCS1(:,:,b), FORCS1_shocks(:,:,b)] = mcforecast3(cL,options_cond_fcst.periods,constrained_paths,shocks,FORCS1(:,:,b),T,R,mv, mu);
FORCS1(:,:,b)=FORCS1(:,:,b)+trend; %add trend FORCS1(:,:,b)=FORCS1(:,:,b)+trend; %add trend
end end
if max(max(max(abs(FORCS1(constrained_vars,1:cL,:)-constrained_paths))))>1e-4
fprintf('\nconditional_forecasts: controlling of variables was not successful.\n')
fprintf('This can be due to numerical imprecision (e.g. explosive simulations)\n')
fprintf('or because the instrument(s) do not allow controlling the variable(s).\n')
end
mFORCS1 = mean(FORCS1,3); mFORCS1 = mean(FORCS1,3);
mFORCS1_shocks = mean(FORCS1_shocks,3); mFORCS1_shocks = mean(FORCS1_shocks,3);
......
function [forcs, e]= mcforecast3(cL,H,mcValue,shocks,forcs,T,R,mv,mu) function [forcs, e]= mcforecast3(cL,H,mcValue,shocks,forcs,T,R,mv,mu)
% forcs = mcforecast3(cL,H,mcValue,shocks,forcs,T,R,mv,mu) % [forcs, e] = mcforecast3(cL,H,mcValue,shocks,forcs,T,R,mv,mu)
% Computes the shock values for constrained forecasts necessary to keep % Computes the shock values for constrained forecasts necessary to keep
% endogenous variables at their constrained paths % endogenous variables at their constrained paths
% %
...@@ -7,13 +7,15 @@ function [forcs, e]= mcforecast3(cL,H,mcValue,shocks,forcs,T,R,mv,mu) ...@@ -7,13 +7,15 @@ function [forcs, e]= mcforecast3(cL,H,mcValue,shocks,forcs,T,R,mv,mu)
% o cL [scalar] number of controlled periods % o cL [scalar] number of controlled periods
% o H [scalar] number of forecast periods % o H [scalar] number of forecast periods
% o mcValue [n_controlled_vars by cL double] paths for constrained variables % o mcValue [n_controlled_vars by cL double] paths for constrained variables
% o shocks [nexo by H double] shock values draws (with zeros for controlled_varexo) % o shocks [nexo by H double] shock values draws (with zeros for controlled_varexo)
% o forcs % o forcs [n_endovars by H+1 double] matrix of endogenous variables storing the inital condition
% o T [n_endovars by n_endovars double] transition matrix of the state equation. % o T [n_endovars by n_endovars double] transition matrix of the state equation.
% o R [n_endovars by n_exo double] matrix relating the endogenous variables to the innovations in the state equation. % o R [n_endovars by n_exo double] matrix relating the endogenous variables to the innovations in the state equation.
% o mv [n_controlled_exo by n_endovars boolean] indicator vector selecting constrained endogenous variables % o mv [n_controlled_exo by n_endovars boolean] indicator vector selecting constrained endogenous variables
% o mu [n_controlled_vars by nexo boolean] indicator vector % o mu [n_controlled_vars by nexo boolean] indicator vector selecting controlled exogenous variables
% selecting controlled exogenous variables % OUTPUTS
% o forcs [n_endovars by H+1 double] matrix of forecasted endogenous variables
% o e [nexo by H double] matrix of exogenous variables
% %
% Algorithm: % Algorithm:
% Relies on state-space form: % Relies on state-space form:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment