IRF 2nd order approx with shocks of different sizes

As I understood from Dynare’s documentation, if you are using a 2nd order of approximation IRFs are computed by simulation (as explained in IrFs - DynareWiki). There it says that the IRF being calculated is to a shock of size equal to 1 StdDev. However, under non-linear solutions, IRFs can vary depending on the size of the shock, so it might be of interest to see the IRF to a larger shock. Is there an option to change the size of the shock for the IRF? An imperfect possible fix is to calibrate the StdDev of the shock to a larger value, and thus Dynare will be computing the IRF to a larger shock. But I think this is imperfect precisely because the size of the variance matters for non-linear solution. I’ll appreciate any feedback on this!

That feature is on our to-do-list but not yet implemented. You would need to program your GIRFs using the simult_-function. See e.g.

Great. Thank you for the reference!

In case this is useful for someone, a simple modification of the file ‘stoch_simul.m’ in dynare’s matlab folder allows you to compute IRF for different sizes. In particular, you need to do 2 things

  1. In ‘stoch_simul.m’, replace lines 250 and 251 by
                if isfield(options_,'shock_size')==1
                    y=irf(M_, options_, oo_.dr,cs(M_.exo_names_orig_ord,i)*options_.shock_size, options_.irf, options_.drop, ...
                          options_.replic, options_.order);
                    y=irf(M_, options_, oo_.dr,cs(M_.exo_names_orig_ord,i), options_.irf, options_.drop, ...
                      options_.replic, options_.order);
  1. In the mod-file, before specifying the stoch_simul command, add the line


where N is the size of the shock, expressed in terms of multiples of the standard deviation of the exogenous shock (i.e. is the shock’ standard deviation is S, this will produce the IRF to a shock of size N*S)