gui: fix up initval and endval: don’t start at simulation at steady state; initialize endogenous variables as well
parent
6d99b6d120
commit
16dfc206bf
|
@ -47,29 +47,35 @@ jm = loadjson(json, 'SimplifyCell', 1);
|
||||||
%% INITVAL instructions
|
%% INITVAL instructions
|
||||||
% initialize exogenous shocks to zero and compute initial steady state
|
% initialize exogenous shocks to zero and compute initial steady state
|
||||||
options_.initval_file = 0;
|
options_.initval_file = 0;
|
||||||
|
oo_.steady_state(:, 1) = 0;
|
||||||
|
for i = 1:length(jm.initval_endo)
|
||||||
|
oo_.steady_state(jm.initval_endo(i).id) = jm.initval_endo(i).value;
|
||||||
|
end
|
||||||
oo_.exo_steady_state(:, 1) = 0;
|
oo_.exo_steady_state(:, 1) = 0;
|
||||||
|
for i = 1:length(jm.initval_exo)
|
||||||
|
oo_.exo_steady_state(jm.initval_exo(i).id) = jm.initval_exo(i).value;
|
||||||
|
end
|
||||||
if M_.exo_nbr > 0
|
if M_.exo_nbr > 0
|
||||||
oo_.exo_simul = ones(M_.maximum_lag,1)*oo_.exo_steady_state';
|
oo_.exo_simul = ones(M_.maximum_lag,1)*oo_.exo_steady_state';
|
||||||
end
|
end
|
||||||
if M_.exo_det_nbr > 0
|
if M_.exo_det_nbr > 0
|
||||||
oo_.exo_det_simul = ones(M_.maximum_lag,1)*oo_.exo_det_steady_state';
|
oo_.exo_det_simul = ones(M_.maximum_lag,1)*oo_.exo_det_steady_state';
|
||||||
end
|
end
|
||||||
steady;
|
|
||||||
if nargout == 1
|
|
||||||
data2json = struct();
|
|
||||||
data2json.steady_state1 = oo_.steady_state;
|
|
||||||
end
|
|
||||||
|
|
||||||
%% ENDVAL instructions
|
%% ENDVAL instructions
|
||||||
% initialize exogenous shocks to zero and compute final ss unless there is a permanent shock
|
% initialize exogenous shocks to zero and compute final ss unless there is a permanent shock
|
||||||
|
ys0_ = [];
|
||||||
|
ex0_ = [];
|
||||||
M_.det_shocks = [];
|
M_.det_shocks = [];
|
||||||
ys0_= oo_.steady_state;
|
if ~isempty(jm.anticipated_permanent_shocks) || ~isempty(jm.endval_endo)
|
||||||
ex0_ = oo_.exo_steady_state;
|
ys0_= oo_.steady_state;
|
||||||
permanent_shock_exists = isfield(jm, 'permanent_shocks') && ~isempty(jm.permanent_shocks);
|
ex0_ = oo_.exo_steady_state;
|
||||||
if permanent_shock_exists
|
for i = 1:length(jm.endval_endo)
|
||||||
for i = 1:length(jm.permanent_shocks)
|
oo_.steady_state(jm.endval_endo(i).id) = jm.endval_endo(i).value;
|
||||||
s = jm.permanent_shocks(i);
|
end
|
||||||
oo_.exo_steady_state(s.index) = s.value;
|
for i = 1:length(jm.anticipated_permanent_shocks)
|
||||||
|
s = jm.anticipated_permanent_shocks(i);
|
||||||
|
oo_.exo_steady_state(s.exo_id) = s.value;
|
||||||
if s.start_period > 1
|
if s.start_period > 1
|
||||||
% if the permanent shock does not start at the initial period
|
% if the permanent shock does not start at the initial period
|
||||||
% add a shocks block to mask the unnecessary periods
|
% add a shocks block to mask the unnecessary periods
|
||||||
|
@ -77,19 +83,12 @@ if permanent_shock_exists
|
||||||
M_.det_shocks; ...
|
M_.det_shocks; ...
|
||||||
struct(...
|
struct(...
|
||||||
'exo_det', 0, ...
|
'exo_det', 0, ...
|
||||||
'exo_id', s.index, ...
|
'exo_id', s.exo_id, ...
|
||||||
'multiplicative', 0, ...
|
'multiplicative', 0, ...
|
||||||
'periods', 1:s.start_period, ...
|
'periods', 1:s.start_period, ...
|
||||||
'value', 0)];
|
'value', 0)];
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
|
||||||
oo_.exo_steady_state(:, 1) = 0;
|
|
||||||
end
|
|
||||||
steady;
|
|
||||||
savedpermanentSS = oo_.steady_state;
|
|
||||||
if nargout == 1
|
|
||||||
data2json.steady_state2 = oo_.steady_state;
|
|
||||||
end
|
end
|
||||||
|
|
||||||
%% SHOCKS instructions (for transitory shocks)
|
%% SHOCKS instructions (for transitory shocks)
|
||||||
|
@ -99,7 +98,7 @@ if isfield(jm, 'transitory_shocks') && ~isempty(jm.transitory_shocks)
|
||||||
M_.det_shocks = [ ...
|
M_.det_shocks = [ ...
|
||||||
M_.det_shocks; ...
|
M_.det_shocks; ...
|
||||||
struct('exo_det', 0, ...
|
struct('exo_det', 0, ...
|
||||||
'exo_id', s.index, ...
|
'exo_id', s.exo_id, ...
|
||||||
'multiplicative', 0, ...
|
'multiplicative', 0, ...
|
||||||
'periods', s.start_period:s.end_period, ...
|
'periods', s.start_period:s.end_period, ...
|
||||||
'value', s.value)];
|
'value', s.value)];
|
||||||
|
|
Loading…
Reference in New Issue