Error out if perfect_foresight_solver is called with shocks(learnt_in=…) or endval(learnt_in=…) blocks
This is to prevent the accidental use of the regular perfect foresight solver when one actually wants the one with expectation errors.kalman-mex
parent
7449d26e51
commit
df9c7d85b8
|
@ -1,8 +1,10 @@
|
|||
function perfect_foresight_solver()
|
||||
function perfect_foresight_solver(no_error_if_learnt_in_is_present)
|
||||
% Computes deterministic simulations
|
||||
%
|
||||
% INPUTS
|
||||
% None
|
||||
% no_error_if_learnt_in_is_present [boolean, optional]
|
||||
% if true, then do not error out if a shocks(learnt_in=…) or endval(learnt_in=…)
|
||||
% block is present
|
||||
%
|
||||
% OUTPUTS
|
||||
% none
|
||||
|
@ -33,6 +35,13 @@ global M_ options_ oo_ ys0_ ex0_
|
|||
|
||||
check_input_arguments(options_, M_, oo_);
|
||||
|
||||
if nargin == 0
|
||||
no_error_if_learnt_in_is_present = false;
|
||||
end
|
||||
if (~isempty(M_.learnt_shocks) || ~isempty(M_.learnt_endval)) && ~no_error_if_learnt_in_is_present
|
||||
error('A shocks(learnt_in=...) or endval(learnt_in=...) block is present. You want to call perfect_foresight_with_expectations_error_setup and perfect_foresight_with_expectations_error_solver.')
|
||||
end
|
||||
|
||||
periods = options_.periods;
|
||||
|
||||
if options_.debug
|
||||
|
|
|
@ -67,7 +67,7 @@ while info_period <= periods
|
|||
|
||||
options_.periods = sim_length;
|
||||
|
||||
perfect_foresight_solver;
|
||||
perfect_foresight_solver(true);
|
||||
|
||||
if ~oo_.deterministic_simulation.status
|
||||
error('perfect_foresight_with_expectation_errors_solver: failed to compute solution for information available at period %d\n', info_period)
|
||||
|
|
|
@ -42,11 +42,13 @@ oo_.exo_steady_state = orig_exo_steady_state;
|
|||
|
||||
perfect_foresight_setup;
|
||||
|
||||
// Information arriving in period 1 (temp shock now)
|
||||
oo_.exo_simul(2,1) = 1.2;
|
||||
perfect_foresight_solver;
|
||||
verbatim;
|
||||
|
||||
// Information arriving in period 2 (temp shock now + permanent shock in future)
|
||||
% Information arriving in period 1 (temp shock now)
|
||||
oo_.exo_simul(2,1) = 1.2;
|
||||
perfect_foresight_solver(true);
|
||||
|
||||
% Information arriving in period 2 (temp shock now + permanent shock in future)
|
||||
oo_.exo_simul(3,1) = 1.3;
|
||||
oo_.exo_steady_state = 1.1;
|
||||
oo_.exo_simul(end, 1) = oo_.exo_steady_state;
|
||||
|
@ -57,11 +59,11 @@ saved_endo = oo_.endo_simul(:, 1);
|
|||
saved_exo = oo_.exo_simul(1, :);
|
||||
oo_.endo_simul = oo_.endo_simul(:, 2:end);
|
||||
oo_.exo_simul = oo_.exo_simul(2:end, :);
|
||||
perfect_foresight_solver;
|
||||
perfect_foresight_solver(true);
|
||||
oo_.endo_simul = [ saved_endo oo_.endo_simul ];
|
||||
oo_.exo_simul = [ saved_exo; oo_.exo_simul ];
|
||||
|
||||
// Information arriving in period 3 (temp shock now + permanent shock in future)
|
||||
% Information arriving in period 3 (temp shock now + permanent shock in future)
|
||||
oo_.exo_simul(4,1) = 1.4;
|
||||
oo_.exo_steady_state = 1.2;
|
||||
oo_.exo_simul(end, 1) = oo_.exo_steady_state;
|
||||
|
@ -72,11 +74,11 @@ saved_endo = oo_.endo_simul(:, 1:2);
|
|||
saved_exo = oo_.exo_simul(1:2, :);
|
||||
oo_.endo_simul = oo_.endo_simul(:, 3:end);
|
||||
oo_.exo_simul = oo_.exo_simul(3:end, :);
|
||||
perfect_foresight_solver;
|
||||
perfect_foresight_solver(true);
|
||||
oo_.endo_simul = [ saved_endo oo_.endo_simul ];
|
||||
oo_.exo_simul = [ saved_exo; oo_.exo_simul ];
|
||||
|
||||
// Information arriving in period 6 (permanent shock arriving now)
|
||||
% Information arriving in period 6 (permanent shock arriving now)
|
||||
oo_.exo_simul(7,1) = 1.1;
|
||||
oo_.exo_simul(8,1) = 1.1;
|
||||
oo_.exo_steady_state = 1.1;
|
||||
|
@ -88,7 +90,7 @@ saved_endo = oo_.endo_simul(:, 1:5);
|
|||
saved_exo = oo_.exo_simul(1:5, :);
|
||||
oo_.endo_simul = oo_.endo_simul(:, 6:end);
|
||||
oo_.exo_simul = oo_.exo_simul(6:end, :);
|
||||
perfect_foresight_solver;
|
||||
perfect_foresight_solver(true);
|
||||
oo_.endo_simul = [ saved_endo oo_.endo_simul ];
|
||||
oo_.exo_simul = [ saved_exo; oo_.exo_simul ];
|
||||
|
||||
|
@ -97,3 +99,5 @@ oo_.exo_simul = [ saved_exo; oo_.exo_simul ];
|
|||
if any(any(pfwee_simul-oo_.endo_simul ~= 0))
|
||||
error('Error in perfect_foresight_with_expectation_errors')
|
||||
end
|
||||
|
||||
end; // verbatim
|
||||
|
|
|
@ -41,11 +41,13 @@ oo_.exo_steady_state = orig_exo_steady_state;
|
|||
|
||||
perfect_foresight_setup;
|
||||
|
||||
// Information arriving in period 1 (temp shock now)
|
||||
oo_.exo_simul(2,1) = 1.2;
|
||||
perfect_foresight_solver;
|
||||
verbatim;
|
||||
|
||||
// Information arriving in period 2 (temp shock now + permanent shock in future)
|
||||
% Information arriving in period 1 (temp shock now)
|
||||
oo_.exo_simul(2,1) = 1.2;
|
||||
perfect_foresight_solver(true);
|
||||
|
||||
% Information arriving in period 2 (temp shock now + permanent shock in future)
|
||||
oo_.exo_simul(3,1) = 1.3;
|
||||
oo_.exo_steady_state = 1.1;
|
||||
oo_.exo_simul(9:10, 1) = repmat(oo_.exo_steady_state', 2, 1);
|
||||
|
@ -55,11 +57,11 @@ saved_endo = oo_.endo_simul(:, 1);
|
|||
saved_exo = oo_.exo_simul(1, :);
|
||||
oo_.endo_simul = oo_.endo_simul(:, 2:end);
|
||||
oo_.exo_simul = oo_.exo_simul(2:end, :);
|
||||
perfect_foresight_solver;
|
||||
perfect_foresight_solver(true);
|
||||
oo_.endo_simul = [ saved_endo oo_.endo_simul ];
|
||||
oo_.exo_simul = [ saved_exo; oo_.exo_simul ];
|
||||
|
||||
// Information arriving in period 3 (temp shock now + permanent shock in future)
|
||||
% Information arriving in period 3 (temp shock now + permanent shock in future)
|
||||
oo_.exo_simul(4,1) = 1.4;
|
||||
oo_.exo_steady_state = 1.2;
|
||||
oo_.exo_simul(9:11, 1) = repmat(oo_.exo_steady_state', 3, 1);
|
||||
|
@ -69,11 +71,11 @@ saved_endo = oo_.endo_simul(:, 1:2);
|
|||
saved_exo = oo_.exo_simul(1:2, :);
|
||||
oo_.endo_simul = oo_.endo_simul(:, 3:end);
|
||||
oo_.exo_simul = oo_.exo_simul(3:end, :);
|
||||
perfect_foresight_solver;
|
||||
perfect_foresight_solver(true);
|
||||
oo_.endo_simul = [ saved_endo oo_.endo_simul ];
|
||||
oo_.exo_simul = [ saved_exo; oo_.exo_simul ];
|
||||
|
||||
// Information arriving in period 6 (permanent shock arriving now)
|
||||
% Information arriving in period 6 (permanent shock arriving now)
|
||||
oo_.exo_simul(7,1) = 1.1;
|
||||
oo_.exo_simul(8,1) = 1.1;
|
||||
oo_.exo_steady_state = 1.1;
|
||||
|
@ -85,7 +87,7 @@ saved_endo = oo_.endo_simul(:, 1:5);
|
|||
saved_exo = oo_.exo_simul(1:5, :);
|
||||
oo_.endo_simul = oo_.endo_simul(:, 6:end);
|
||||
oo_.exo_simul = oo_.exo_simul(6:end, :);
|
||||
perfect_foresight_solver;
|
||||
perfect_foresight_solver(true);
|
||||
oo_.endo_simul = [ saved_endo oo_.endo_simul ];
|
||||
oo_.exo_simul = [ saved_exo; oo_.exo_simul ];
|
||||
|
||||
|
@ -94,3 +96,5 @@ oo_.exo_simul = [ saved_exo; oo_.exo_simul ];
|
|||
if any(any(pfwee_simul-oo_.endo_simul ~= 0))
|
||||
error('Error in perfect_foresight_with_expectation_errors')
|
||||
end
|
||||
|
||||
end; // verbatim
|
||||
|
|
|
@ -91,11 +91,13 @@ oo_.exo_steady_state = orig_exo_steady_state;
|
|||
|
||||
perfect_foresight_setup;
|
||||
|
||||
// Information arriving in period 1 (temp shock now and tomorrow)
|
||||
oo_.exo_simul(2:3,1) = 1.2;
|
||||
perfect_foresight_solver;
|
||||
verbatim;
|
||||
|
||||
// Information arriving in period 2 (temp shock now + permanent shock in future)
|
||||
% Information arriving in period 1 (temp shock now and tomorrow)
|
||||
oo_.exo_simul(2:3,1) = 1.2;
|
||||
perfect_foresight_solver(true);
|
||||
|
||||
% Information arriving in period 2 (temp shock now + permanent shock in future)
|
||||
oo_.exo_simul(3,1) = 1.3;
|
||||
oo_.exo_steady_state = 1.1;
|
||||
oo_.exo_simul(end, 1) = oo_.exo_steady_state;
|
||||
|
@ -106,11 +108,11 @@ saved_endo = oo_.endo_simul(:, 1);
|
|||
saved_exo = oo_.exo_simul(1, :);
|
||||
oo_.endo_simul = oo_.endo_simul(:, 2:end);
|
||||
oo_.exo_simul = oo_.exo_simul(2:end, :);
|
||||
perfect_foresight_solver;
|
||||
perfect_foresight_solver(true);
|
||||
oo_.endo_simul = [ saved_endo oo_.endo_simul ];
|
||||
oo_.exo_simul = [ saved_exo; oo_.exo_simul ];
|
||||
|
||||
// Information arriving in period 3 (temp shocks + permanent shock in future)
|
||||
% Information arriving in period 3 (temp shocks + permanent shock in future)
|
||||
oo_.exo_simul(4,1) = 1.4;
|
||||
oo_.exo_steady_state = 1.1+0.1;
|
||||
oo_.exo_simul(8,1) = (1.5/1.2)*oo_.exo_steady_state;
|
||||
|
@ -122,11 +124,11 @@ saved_endo = oo_.endo_simul(:, 1:2);
|
|||
saved_exo = oo_.exo_simul(1:2, :);
|
||||
oo_.endo_simul = oo_.endo_simul(:, 3:end);
|
||||
oo_.exo_simul = oo_.exo_simul(3:end, :);
|
||||
perfect_foresight_solver;
|
||||
perfect_foresight_solver(true);
|
||||
oo_.endo_simul = [ saved_endo oo_.endo_simul ];
|
||||
oo_.exo_simul = [ saved_exo; oo_.exo_simul ];
|
||||
|
||||
// Information arriving in period 6 (temp shocks + permanent shock)
|
||||
% Information arriving in period 6 (temp shocks + permanent shock)
|
||||
oo_.exo_simul(7,1) = 1*0.8;
|
||||
oo_.exo_simul(8,1) = 1.5*0.8;
|
||||
oo_.exo_steady_state = (1.1+0.1)*0.75;
|
||||
|
@ -138,7 +140,7 @@ saved_endo = oo_.endo_simul(:, 1:5);
|
|||
saved_exo = oo_.exo_simul(1:5, :);
|
||||
oo_.endo_simul = oo_.endo_simul(:, 6:end);
|
||||
oo_.exo_simul = oo_.exo_simul(6:end, :);
|
||||
perfect_foresight_solver;
|
||||
perfect_foresight_solver(true);
|
||||
oo_.endo_simul = [ saved_endo oo_.endo_simul ];
|
||||
oo_.exo_simul = [ saved_exo; oo_.exo_simul ];
|
||||
|
||||
|
@ -147,3 +149,5 @@ oo_.exo_simul = [ saved_exo; oo_.exo_simul ];
|
|||
if any(any(pfwee_simul-oo_.endo_simul ~= 0))
|
||||
error('Error in perfect_foresight_with_expectation_errors')
|
||||
end
|
||||
|
||||
end; // verbatim
|
||||
|
|
Loading…
Reference in New Issue