Discuss interface for method of Moments in Dynare (GMM, SMM, IRF Matching)
Hey, I am working on a first draft for a toolbox for moment estimation with GMM, SMM and IRF-Matching (I will start with GMM, then SMM, and deal with IRF-matching later) which will work for perturbation (with pruning) up to third-order. I have a couple of questions|proposal for the best interface and call for this and would like your guys take on this.
Declaring parameters
Here I would simply opt to what we do in a Maximum likelihood estimation and use the same syntax in an estimated_params
or an estimated_params_bounds
block:
stderr VARIABLE_NAME | corr VARIABLE_NAME_1, VARIABLE_NAME_2 | PARAMETER_NAME, LOWER_BOUND, UPPER_BOUND;
Declaring which moments to use
Here I would propose a block similar to moment_calibration
, but call it estimated_moments
:
estimated_moments;
y_obs,y_obs; //[unconditional variance]
y_obs,y_obs(-(1:4)); //[some acf]
@#for ilag in -2:2
y_obs,R_obs(@{ilag}); //[ccf]
@#endfor
end;
Invocation
Now the toughest question. How to invoke it? I see two options.
Option A: Add an option to estimation
, e.g.
estimation(moments_estimation='GMM');
Option B: Have an own command for this, e.g.:
gmm_estimation(OPTIONS);
smm_estimation(OPTIONS);
irf_matching(OPTIONS);
which then internally calls a wrapper dynare_moments_estimation.m
and runs the toolbox.
What do you guys think?