Moments of second-order approximation

When I run a first-order approx. with Dynare using stoch_simul(order=1,nograph) I get the theoretical moments printed out by Dynare and they are stored in oo_.mean.

When I run a second-order approx. with Dynare using stoch_simul(order=2,nograph) I get the “Approximated theoretical moments” printed out and they are then stored in oo_.mean (I think). I guess they are “approximated”, because uncertainty equivalence does not hold any more and the deviation from the uncertainty equivalence can only be approximated?

Now, in my model, I have the problem that I get the message that “irfs cannot be displayed” because they are explosive and that I should use pruning or do some other things to my model. I can get rid of this problem by just reducing the size of the shocks. But doesn’t that have an effect on the the approximated theoretical moments? If I make the shocks very very small the deviations from certainty equivalence should be very very small (or am I understanding something wrong?). Another “fix” which makes Dynare run without complaining about explosiveness, is that I set irf=0, i.e., stoch_simul(order=2,nograph,irf=0). But then, something happens to the approximated theoretical moments. In particular, I have a two-symmetric-countries model and then suddenly I get completely different approximated theoretical moments for the two countries for all variables. So something is messed up/changes when I use the irf-option in a second-order approx. I cannot find and answer to that in the manual. Are the policy functions still correct?

The “approximated” refers to the fact that a first-order solution already delivers a second-order accurate approximation of the second moments. Thus, theoretical second moments are based on the first order solution as documented in the manual.

Changing the shocks size will affect the solution at order=2. So this is not advocated. You should rather go for pruning.

Not requesting IRFs should not have an effect on the theoretical moments. If this is the case, please provide codes to replicate the issue.

After a while I’m back to a similar question: what exactly does Dynare report as (APPROXIMATED) THEORETICAL MOMENTS?

When I use the command
stoch_simul(order=1, nograph);
the theoretical mean provided by Dynare is the deterministic steady state.
When I use
stoch_simul(order=2, nograph); or stoch_simul(order=2, irf=0, nograph)
the approximated theoretical mean is the ergodic mean (I think).

Regarding the std. dev. and variance, I thought that at first order, Dynare would provide the standard deviation and variance around the deterministic steady state, while, at second-order, it would provide the std. dev. and variance around the ergodic mean. However, when I compare the Dynare output for the Gertler/Karadi (2011) model (see attached), I get exactly the same std. dev. and variance at first and second order. Why? What kind of variance is reported in the two cases?

FA_check.mod (7.9 KB)


  1. It is not the mean or variance at a point. We are talking about unconditional moments of probability distributions. So the mean and the variance are the mean and variance of the ergodic/stationary distribution.
  2. As shown in e.g. Kim/Kim/Schaumburg/Sims, second order accurate second moments require only linear terms in the policy rules. Imagine there were quadratic terms in the policy rule. For a second moment, you would need to square them, resulting in terms of fourth order. So linear terms are sufficient. Things are different for the mean where you need the uncertainty correction. In nonlinear models the mean will generally differ at second order (the more so the bigger the shock variances and the higher the nonlinearities)