4.1 adding instruments option to ramsey_policy; ramsey_policy can now use a *_steadystate.m file
git-svn-id: https://www.dynare.org/svn/dynare/trunk@3219 ac1d8469-bf42-47a9-8791-bf33cf982152time-shift
parent
203c6582ba
commit
74a8acc29c
48
matlab/dr1.m
48
matlab/dr1.m
|
@ -83,11 +83,49 @@ function [dr,info,M_,options_,oo_] = dr1(dr,task,M_,options_,oo_)
|
||||||
M_.maximum_lag = orig_model.maximum_lag;
|
M_.maximum_lag = orig_model.maximum_lag;
|
||||||
M_.maximum_endo_lag = orig_model.maximum_endo_lag;
|
M_.maximum_endo_lag = orig_model.maximum_endo_lag;
|
||||||
end
|
end
|
||||||
old_solve_algo = options_.solve_algo;
|
|
||||||
% options_.solve_algo = 1;
|
if options_.steadystate_flag
|
||||||
oo_.steady_state = dynare_solve('dyn_ramsey_static_',oo_.steady_state,0,M_,options_,oo_,it_);
|
k_inst = [];
|
||||||
options_.solve_algo = old_solve_algo;
|
instruments = options_.instruments;
|
||||||
[junk,junk,multbar] = dyn_ramsey_static_(oo_.steady_state,M_,options_,oo_,it_);
|
for i = 1:size(instruments,1)
|
||||||
|
k_inst = [k_inst; strmatch(options_.instruments(i,:), ...
|
||||||
|
M_.endo_names,'exact')];
|
||||||
|
end
|
||||||
|
ys = oo_.steady_state;
|
||||||
|
inst_val = dynare_solve('dyn_ramsey_static_', ...
|
||||||
|
oo_.steady_state(k_inst),0, ...
|
||||||
|
M_,options_,oo_,it_);
|
||||||
|
ys(k_inst) = inst_val;
|
||||||
|
[x,check] = feval([M_.fname '_steadystate'],...
|
||||||
|
ys,[oo_.exo_steady_state; ...
|
||||||
|
oo_.exo_det_steady_state]);
|
||||||
|
if size(x,1) < M_.endo_nbr
|
||||||
|
if length(M_.aux_vars) > 0
|
||||||
|
x = add_auxiliary_variables_to_steadystate(x,M_.aux_vars,...
|
||||||
|
M_.fname,...
|
||||||
|
oo_.exo_steady_state,...
|
||||||
|
oo_.exo_det_steady_state,...
|
||||||
|
M_.params);
|
||||||
|
else
|
||||||
|
error([M_.fname '_steadystate.m doesn''t match the model']);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
oo_.steady_state = x;
|
||||||
|
[junk,junk,multbar] = dyn_ramsey_static_(oo_.steady_state(k_inst),M_,options_,oo_,it_);
|
||||||
|
else
|
||||||
|
oo_.steady_state = dynare_solve('dyn_ramsey_static_', ...
|
||||||
|
oo_.steady_state,0,M_,options_,oo_,it_);
|
||||||
|
[junk,junk,multbar] = dyn_ramsey_static_(oo_.steady_state,M_,options_,oo_,it_);
|
||||||
|
end
|
||||||
|
check1 = max(abs(feval([M_.fname '_static'],...
|
||||||
|
oo_.steady_state,...
|
||||||
|
[oo_.exo_steady_state; ...
|
||||||
|
oo_.exo_det_steady_state], M_.params))) > options_.dynatol ;
|
||||||
|
if check1
|
||||||
|
error(['The steadystate values returned by ' M_.fname ...
|
||||||
|
'_steadystate.m don''t solve the static model!' ])
|
||||||
|
end
|
||||||
|
|
||||||
[jacobia_,M_] = dyn_ramsey_dynamic_(oo_.steady_state,multbar,M_,options_,oo_,it_);
|
[jacobia_,M_] = dyn_ramsey_dynamic_(oo_.steady_state,multbar,M_,options_,oo_,it_);
|
||||||
klen = M_.maximum_lag + M_.maximum_lead + 1;
|
klen = M_.maximum_lag + M_.maximum_lead + 1;
|
||||||
dr.ys = [oo_.steady_state;zeros(M_.exo_nbr,1);multbar];
|
dr.ys = [oo_.steady_state;zeros(M_.exo_nbr,1);multbar];
|
||||||
|
|
|
@ -49,14 +49,39 @@ function [resids, rJ,mult] = dyn_ramsey_static_(x,M_,options_,oo_,it_)
|
||||||
% lead_lag incidence matrix for endogenous variables
|
% lead_lag incidence matrix for endogenous variables
|
||||||
i_lag = M_.lead_lag_incidence;
|
i_lag = M_.lead_lag_incidence;
|
||||||
|
|
||||||
|
if options_.steadystate_flag
|
||||||
|
k_inst = [];
|
||||||
|
instruments = options_.instruments;
|
||||||
|
for i = 1:size(instruments,1)
|
||||||
|
k_inst = [k_inst; strmatch(options_.instruments(i,:), ...
|
||||||
|
M_.endo_names,'exact')];
|
||||||
|
end
|
||||||
|
oo_.steady_state(k_inst) = x;
|
||||||
|
[x,check] = feval([M_.fname '_steadystate'],...
|
||||||
|
oo_.steady_state,...
|
||||||
|
[oo_.exo_steady_state; ...
|
||||||
|
oo_.exo_det_steady_state]);
|
||||||
|
if size(x,1) < M_.endo_nbr
|
||||||
|
if length(M_.aux_vars) > 0
|
||||||
|
x = add_auxiliary_variables_to_steadystate(x,M_.aux_vars,...
|
||||||
|
M_.fname,...
|
||||||
|
oo_.exo_steady_state,...
|
||||||
|
oo_.exo_det_steady_state,...
|
||||||
|
M_.params);
|
||||||
|
else
|
||||||
|
error([M_.fname '_steadystate.m doesn''t match the model']);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
% value and Jacobian of objective function
|
% value and Jacobian of objective function
|
||||||
ex = zeros(1,M_.exo_nbr);
|
ex = zeros(1,M_.exo_nbr);
|
||||||
[U,Uy,Uyy] = feval([fname '_objective_static'],x(i_endo),ex, M_.params);
|
[U,Uy,Uyy] = feval([fname '_objective_static'],x(i_endo),ex, M_.params);
|
||||||
Uy = Uy';
|
Uy = Uy';
|
||||||
Uyy = reshape(Uyy,endo_nbr,endo_nbr);
|
Uyy = reshape(Uyy,endo_nbr,endo_nbr);
|
||||||
|
|
||||||
% value and Jacobian of dynamic function
|
|
||||||
y = repmat(x(i_endo),1,max_lag+max_lead+1);
|
y = repmat(x(i_endo),1,max_lag+max_lead+1);
|
||||||
|
% value and Jacobian of dynamic function
|
||||||
k = find(i_lag');
|
k = find(i_lag');
|
||||||
it_ = 1;
|
it_ = 1;
|
||||||
% [f,fJ,fH] = feval([fname '_dynamic'],y(k),ex);
|
% [f,fJ,fH] = feval([fname '_dynamic'],y(k),ex);
|
||||||
|
@ -83,7 +108,11 @@ function [resids, rJ,mult] = dyn_ramsey_static_(x,M_,options_,oo_,it_)
|
||||||
resids1 = Uy+A*mult;
|
resids1 = Uy+A*mult;
|
||||||
% resids = [f; sqrt(resids1'*resids1/endo_nbr)];
|
% resids = [f; sqrt(resids1'*resids1/endo_nbr)];
|
||||||
[q,r,e] = qr([A Uy]');
|
[q,r,e] = qr([A Uy]');
|
||||||
resids = [f; r(end,(endo_nbr-inst_nbr+1:end))'];
|
if options_.steadystate_flag
|
||||||
|
resids = [r(end,(endo_nbr-inst_nbr+1:end))'];
|
||||||
|
else
|
||||||
|
resids = [f; r(end,(endo_nbr-inst_nbr+1:end))'];
|
||||||
|
end
|
||||||
rJ = [];
|
rJ = [];
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -97,7 +97,7 @@ class ParsingDriver;
|
||||||
%token END ENDVAL EQUAL ESTIMATION ESTIMATED_PARAMS ESTIMATED_PARAMS_BOUNDS ESTIMATED_PARAMS_INIT
|
%token END ENDVAL EQUAL ESTIMATION ESTIMATED_PARAMS ESTIMATED_PARAMS_BOUNDS ESTIMATED_PARAMS_INIT
|
||||||
%token FILENAME FILTER_STEP_AHEAD FILTERED_VARS FIRST_OBS
|
%token FILENAME FILTER_STEP_AHEAD FILTERED_VARS FIRST_OBS
|
||||||
%token <string_val> FLOAT_NUMBER
|
%token <string_val> FLOAT_NUMBER
|
||||||
%token FORECAST K_ORDER_SOLVER
|
%token FORECAST K_ORDER_SOLVER INSTRUMENTS
|
||||||
%token GAMMA_PDF GRAPH CONDITIONAL_VARIANCE_DECOMPOSITION
|
%token GAMMA_PDF GRAPH CONDITIONAL_VARIANCE_DECOMPOSITION
|
||||||
%token HISTVAL HOMOTOPY_SETUP HOMOTOPY_MODE HOMOTOPY_STEPS HP_FILTER HP_NGRID
|
%token HISTVAL HOMOTOPY_SETUP HOMOTOPY_MODE HOMOTOPY_STEPS HP_FILTER HP_NGRID
|
||||||
%token IDENTIFICATION INF_CONSTANT INITVAL INITVAL_FILE
|
%token IDENTIFICATION INF_CONSTANT INITVAL INITVAL_FILE
|
||||||
|
@ -1293,6 +1293,7 @@ ramsey_policy_options_list : ramsey_policy_options_list COMMA ramsey_policy_opti
|
||||||
|
|
||||||
ramsey_policy_options : stoch_simul_options
|
ramsey_policy_options : stoch_simul_options
|
||||||
| o_planner_discount
|
| o_planner_discount
|
||||||
|
| o_instruments
|
||||||
;
|
;
|
||||||
|
|
||||||
write_latex_dynamic_model : WRITE_LATEX_DYNAMIC_MODEL ';'
|
write_latex_dynamic_model : WRITE_LATEX_DYNAMIC_MODEL ';'
|
||||||
|
@ -1875,6 +1876,7 @@ o_equations : EQUATIONS EQUAL vec_int
|
||||||
| EQUATIONS EQUAL INT_NUMBER
|
| EQUATIONS EQUAL INT_NUMBER
|
||||||
{ driver.option_num("ms.equations",$3); }
|
{ driver.option_num("ms.equations",$3); }
|
||||||
;
|
;
|
||||||
|
o_instruments : INSTRUMENTS EQUAL '(' symbol_list ')' {driver.option_symbol_list("instruments"); };
|
||||||
|
|
||||||
range : symbol ':' symbol
|
range : symbol ':' symbol
|
||||||
{
|
{
|
||||||
|
|
|
@ -315,7 +315,7 @@ int sigma_e = 0;
|
||||||
<DYNARE_STATEMENT>draws_nbr_mean_var_estimate {return token::DRAWS_NBR_MEAN_VAR_ESTIMATE;}
|
<DYNARE_STATEMENT>draws_nbr_mean_var_estimate {return token::DRAWS_NBR_MEAN_VAR_ESTIMATE;}
|
||||||
<DYNARE_STATEMENT>draws_nbr_modified_harmonic_mean {return token::DRAWS_NBR_MODIFIED_HARMONIC_MEAN;}
|
<DYNARE_STATEMENT>draws_nbr_modified_harmonic_mean {return token::DRAWS_NBR_MODIFIED_HARMONIC_MEAN;}
|
||||||
<DYNARE_STATEMENT>dirichlet_scale {return token::DIRICHLET_SCALE;}
|
<DYNARE_STATEMENT>dirichlet_scale {return token::DIRICHLET_SCALE;}
|
||||||
|
<DYNARE_STATEMENT>instruments {return token::INSTRUMENTS;}
|
||||||
|
|
||||||
/* These four (var, varexo, varexo_det, parameters) are for change_type */
|
/* These four (var, varexo, varexo_det, parameters) are for change_type */
|
||||||
<DYNARE_STATEMENT>var { return token::VAR; }
|
<DYNARE_STATEMENT>var { return token::VAR; }
|
||||||
|
|
Loading…
Reference in New Issue