[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 4.13 Stochastic solution and simulation

In a stochastic context, Dynare computes one or several simulations corresponding to a random draw of the shocks. Dynare uses a Taylor approximation, up to third order, of the expectation functions (see Judd (1996), Collard and Juillard (2001a), Collard and Juillard (2001b), and Schmitt-Grohé and Uríbe (2004)). The details of the Dynare implementation of the first order solution are given in Villemot (2011).

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 4.13.1 Computing the stochastic solution

Command: stoch_simul [VARIABLE_NAME…];
Command: stoch_simul (OPTIONS…) [VARIABLE_NAME…];

  Description

  `stoch_simul` solves a stochastic (i.e. rational expectations) model, using perturbation techniques.

  More precisely, `stoch_simul` computes a Taylor approximation of the decision and transition functions for the model. Using this, it computes impulse response functions and various descriptive statistics (moments, variance decomposition, correlation and autocorrelation coefficients). For correlated shocks, the variance decomposition is computed as in the VAR literature through a Cholesky decomposition of the covariance matrix of the exogenous variables. When the shocks are correlated, the variance decomposition depends upon the order of the variables in the `varexo` command.

  The Taylor approximation is computed around the steady state (see section Steady state).

  The IRFs are computed as the difference between the trajectory of a variable following a shock at the beginning of period 1 and its steady state value.

  Variance decomposition, correlation, autocorrelation are only displayed for variables with positive variance. Impulse response functions are only plotted for variables with response larger than .

  Variance decomposition is computed relative to the sum of the contribution of each shock. Normally, this is of course equal to aggregate variance, but if a model generates very large variances, it may happen that, due to numerical error, the two differ by a significant amount. Dynare issues a warning if the maximum relative difference between the sum of the contribution of each shock and aggregate variance is larger than 0.01%.

  Currently, the IRFs are only plotted for 12 variables. Select the ones you want to see, if your model contains more than 12 endogenous variables.

  The covariance matrix of the shocks is specified with the `shocks` command (see section Shocks on exogenous variables).

  When a list of VARIABLE_NAME is specified, results are displayed only for these variables.

  Options

  `ar = INTEGER`

    Order of autocorrelation coefficients to compute and to print. Default: `5`.

  `drop = INTEGER`

    Number of points dropped at the beginning of simulation before computing the summary statistics. Default: `100`.

  `hp_filter = INTEGER`

    Uses HP filter with = INTEGER before computing moments. Default: no filter.

  `hp_ngrid = INTEGER`

    Number of points in the grid for the discrete Inverse Fast Fourier Transform used in the HP filter computation. It may be necessary to increase it for highly autocorrelated processes. Default: `512`.

  `irf = INTEGER`

    Number of periods on which to compute the IRFs. Setting `irf=0`, suppresses the plotting of IRF’s. Default: `40`.

  `relative_irf`

    Requests the computation of normalized IRFs in percentage of the standard error of each shock.

  `linear`

    Indicates that the original model is linear (put it rather in the `model` command).

  `nocorr`

    Don’t print the correlation matrix (printing them is the default).

  `nofunctions`

    Don’t print the coefficients of the approximated solution (printing them is the default).

  `nomoments`

    Don’t print moments of the endogenous variables (printing them is the default).

  `nograph.`

    Doesn’t do the graphs. Useful for loops.

  `noprint`

    Don’t print anything. Useful for loops.

  `print`

    Print results (opposite of `noprint`).

  `order = INTEGER`

    Order of Taylor approximation. Acceptable values are `1`, `2` and `3`. Note that for third order, `k_order_solver` option is implied and only empirical moments are available (you must provide a value for `periods` option). Default: `2`.

  `k_order_solver`

    Use a k-order solver (implemented in C++) instead of the default Dynare solver. This option is not yet compatible with the `bytecode` option (see section Model declaration. Default: disabled for order 1 and 2, enabled otherwise

  `periods = INTEGER`

    If different from zero, empirical moments will be computed instead of theoretical moments. The value of the option specifies the number of periods to use in the simulations. Values of the `initval` block, possibly recomputed by `steady`, will be used as starting point for the simulation. The simulated endogenous variables are made available to the user in a vector for each variable and in the global matrix `oo_.endo_simul` (see oo_.endo_simul). Default: `0`.

  `qz_criterium = DOUBLE`

    Value used to split stable from unstable eigenvalues in reordering the Generalized Schur decomposition used for solving 1^st order problems. Default: `1.000001` (except when estimating with `lik_init` option equal to `1`: the default is `0.999999` in that case; see section Estimation).

  `replic = INTEGER`

    Number of simulated series used to compute the IRFs. Default: `1` if `order`=`1`, and `50` otherwise.

  `solve_algo = INTEGER`

    See solve_algo, for the possible values and their meaning.

  `aim_solver`

    Use the Anderson-Moore Algorithm (AIM) to compute the decision rules, instead of using Dynare’s default method based on a generalized Schur decomposition. This option is only valid for first order approximation. See AIM website for more details on the algorithm.

  `conditional_variance_decomposition = INTEGER`

    See below.

  `conditional_variance_decomposition = [INTEGER1:INTEGER2]`

    See below.

  `conditional_variance_decomposition = [INTEGER1 INTEGER2 …]`

    Computes a conditional variance decomposition for the specified period(s). Conditional variances are given by . For period 1, the conditional variance decomposition provides the decomposition of the effects of shocks upon impact.

  `pruning`

    Discard higher order terms when iteratively computing simulations of the solution, as in Schaumburg and Sims (2008).

  `partial_information`

    Computes the solution of the model under partial information, along the lines of Currie and Levine (1986). Agents are supposed to observe only some variables of the economy. The set of observed variables is declared using the `varobs` command. Note that if `varobs` is not present or contains all endogenous variables, then this is the full information case and this option has no effect.

  Output

  This command sets `oo_.dr`, `oo_.mean`, `oo_.var` and `oo_.autocorr`, which are described below.

  If option `periods` is present, sets `oo_.endo_simul` (see oo_.endo_simul), and also saves the simulated variables in MATLAB/Octave vectors of the global workspace with the same name as the endogenous variables.

  If options `irf` is different from zero, sets `oo_.irfs` (see below) and also saves the IRFs in MATLAB/Octave vectors of the global workspace (this latter way of accessing the IRFs is deprecated and will disappear in a future version).

  Example 1

      shocks;
      var e;
      stderr 0.0348;
      end;

      stoch_simul;

  Performs the simulation of the 2nd order approximation of a model with a single stochastic shock `e`, with a standard error of 0.0348.

  Example 2

      stoch_simul(linear,irf=60) y k;

  Performs the simulation of a linear model and displays impulse response functions on 60 periods for variables `y` and `k`.

MATLAB/Octave variable: oo_.mean

  After a run of `stoch_simul`, contains the mean of the endogenous variables. Contains theoretical mean if the `periods` option is not present, and empirical mean otherwise. The variables are arranged in declaration order.

MATLAB/Octave variable: oo_.var

  After a run of `stoch_simul`, contains the variance-covariance of the endogenous variables. Contains theoretical variance if the `periods` option is not present, and empirical variance otherwise. The variables are arranged in declaration order.

MATLAB/Octave variable: oo_.autocorr

  After a run of `stoch_simul`, contains a cell array of the autocorrelation matrices of the endogenous variables. The element number of the matrix in the cell array corresponds to the order of autocorrelation. The option `ar` specifies the number of autocorrelation matrices available. Contains theoretical autocorrelations if the `periods` option is not present, and empirical autocorrelations otherwise.

MATLAB/Octave variable: oo_.irfs

  After a run of `stoch_simul` with option `irf` different from zero, contains the impulse responses, with the following naming convention: `VARIABLE_NAME_SHOCK_NAME`.

  For example, `oo_.irfs.gnp_ea` contains the effect on `gnp` of a one standard deviation shock on `ea`.

The approximated solution of a model takes the form of a set of decision rules or transition equations expressing the current value of the endogenous variables of the model as function of the previous state of the model and shocks oberved at the beginning of the period. The decision rules are stored in the structure `oo_.dr` which is described below.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 4.13.2 Typology and ordering of variables

Dynare distinguishes four types of endogenous variables:

Purely backward (or purely predetermined) variables

  Those that appear only at current and past period in the model, but not at future period (i.e. at and but not ). The number of such variables is equal to `oo_.dr.npred - oo_.dr.nboth`.

Purely forward variables

  Those that appear only at current and future period in the model, but not at past period (i.e. at and but not ). The number of such variables is stored in `oo_.dr.nfwrd`.

Mixed variables

  Those that appear at current, past and future period in the model (i.e. at , and ). The number of such variables is stored in `oo_.dr.nboth`.

Static variables

  Those that appear only at current, not past and future period in the model (i.e. only at , not at or ). The number of such variables is stored in `oo_.dr.nstatic`.

Note that all endogenous variables fall into one of these four categories, since after the creation of auxiliary variables (see section Auxiliary variables), all endogenous have at most one lead and one lag. We therefore have the following identity:

    oo_.dr.npred + oo_.dr.nfwrd + oo_.dr.nstatic = M_.endo_nbr

Internally, Dynare uses two orderings of the endogenous variables: the order of declaration (which is reflected in `M_.endo_names`), and an order based on the four types described above, which we will call the DR-order (“DR” stands for decision rules). Most of the time, the declaration order is used, but for elements of the decision rules, the DR-order is used.

The DR-order is the following: static variables appear first, then purely backward variables, then mixed variables, and finally purely forward variables. Inside each category, variables are arranged according to the declaration order.

Variable `oo_.dr.order_var` maps DR-order to declaration order, and variable `oo_.dr.inv_order_var` contains the inverse map. In other words, the k-th variable in the DR-order corresponds to the endogenous variable numbered `oo_.dr_order_var(k)` in declaration order. Conversely, k-th declared variable is numbered `oo_.dr.inv_order_var(k)` in DR-order.

Finally, the state variables of the model are the purely backward variables and the mixed variables. They are orderer in DR-order when they appear in decision rules elements. There are `oo_.dr.npred` such variables.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 4.13.3 First order approximation

The approximation has the form:

where is the steady state value of and .

The coefficients of the decision rules are stored as follows:

- is stored in `oo_.dr.ys`. The vector rows correspond to all endogenous in the declaration order.
- A is stored in `oo_.dr.ghx`. The matrix rows correspond to all endogenous in DR-order. The matrix columns correspond to state variables in DR-order.
- B is stored `oo_.dr.ghu`. The matrix rows correspond to all endogenous in DR-order. The matrix columns correspond to exogenous variables in declaration order.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 4.13.4 Second order approximation

The approximation has the form:

where is the steady state value of , , and is the shift effect of the variance of future shocks.

The coefficients of the decision rules are stored in the variables described for first order approximation, plus the following variables:

- is stored in `oo_.dr.ghs2`. The vector rows correspond to all endogenous in DR-order.
- is stored in `oo_.dr.ghxx`. The matrix rows correspond to all endogenous in DR-order. The matrix columns correspond to the Kronecker product of the vector of state variables in DR-order.
- is stored in `oo_.dr.ghuu`. The matrix rows correspond to all endogenous in DR-order. The matrix columns correspond to the Kronecker product of exogenous variables in declaration order.
- is stored in `oo_.dr.ghxu`. The matrix rows correspond to all endogenous in DR-order. The matrix columns correspond to the Kronecker product of the vector of state variables (in DR-order) by the vector of exogenous variables (in declaration order).

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

### 4.13.5 Third order approximation

The approximation has the form:

where is the steady state value of , and is a vector consisting of the deviation from the steady state of the state variables (in DR-order) at date followed by the exogenous variables at date (in declaration order). The vector is therefore of size = `oo_.dr.npred + M_.exo_nbr`.

The coefficients of the decision rules are stored as follows:

- is stored in `oo_.dr.ys`. The vector rows correspond to all endogenous in the declaration order.
- is stored in `oo_.dr.g_0`. The vector rows correspond to all endogenous in DR-order.
- is stored in `oo_.dr.g_1`. The matrix rows correspond to all endogenous in DR-order. The matrix columns correspond to state variables in DR-order, followed by exogenous in declaration order.
- is stored in `oo_.dr.g_2`. The matrix rows correspond to all endogenous in DR-order. The matrix columns correspond to the Kronecker product of state variables (in DR-order), followed by exogenous (in declaration order). Note that the Kronecker product is stored in a folded way, i.e. symmetric elements are stored only once, which implies that the matrix has columns. More precisely, each column of this matrix corresponds to a pair where each index represents an element of and is therefore between and . Only non-decreasing pairs are stored, i.e. those for which . The columns are arranged in the lexicographical order of non-decreasing pairs. Also note that for those pairs where , since the element is stored only once but appears two times in the unfolded matrix, it must be multiplied by 2 when computing the decision rules.
- is stored in `oo_.dr.g_3`. The matrix rows correspond to all endogenous in DR-order. The matrix columns correspond to the third Kronecker power of state variables (in DR-order), followed by exogenous (in declaration order). Note that the third Kronecker power is stored in a folded way, i.e. symmetric elements are stored only once, which implies that the matrix has columns. More precisely, each column of this matrix corresponds to a tuple where each index represents an element of and is therefore between and . Only non-decreasing tuples are stored, i.e. those for which . The columns are arranged in the lexicographical order of non-decreasing tuples. Also note that for tuples that have three distinct indices (i.e. and and , since these elements are stored only once but appears six times in the unfolded matrix, they must be multiplied by 6 when computing the decision rules. Similarly, for those tuples that have two equal indices (i.e. of the form or or ), since these elements are stored only once but appears three times in the unfolded matrix, they must be multiplied by 3 when computing the decision rules.

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ]

This document was generated by SÃ©bastien Villemot on May 24, 2011 using texi2html 1.82.