Next: Initial and terminal conditions, Previous: Model declaration, Up: The Model file [Contents][Index]

The model which is solved internally by Dynare is not exactly the model declared by the user. In some cases, Dynare will introduce auxiliary endogenous variables—along with corresponding auxiliary equations—which will appear in the final output.

The main transformation concerns leads and lags. Dynare will perform a transformation of the model so that there is only one lead and one lag on endogenous variables and, in the case of a stochastic model, no leads/lags on exogenous variables.

This transformation is achieved by the creation of auxiliary
variables and corresponding equations. For example, if `x(+2)`

exists in the model, Dynare will create one auxiliary variable
`AUX_ENDO_LEAD = x(+1)`

, and replace `x(+2)`

by
`AUX_ENDO_LEAD(+1)`

.

A similar transformation is done for lags greater than 2 on endogenous
(auxiliary variables will have a name beginning with
`AUX_ENDO_LAG`

), and for exogenous with leads and lags (auxiliary
variables will have a name beginning with `AUX_EXO_LEAD`

or
`AUX_EXO_LAG`

respectively).

Another transformation is done for the `EXPECTATION`

operator. For each occurrence of this operator, Dynare creates an
auxiliary variable defined by a new equation, and replaces the
expectation operator by a reference to the new auxiliary variable. For
example, the expression `EXPECTATION(-1)(x(+1))`

is replaced by
`AUX_EXPECT_LAG_1(-1)`

, and the new auxiliary variable is
declared as `AUX_EXPECT_LAG_1 = x(+2)`

.

Auxiliary variables are also introduced by the preprocessor for the
`ramsey_model`

and `ramsey_policy`

commands. In this case, they are used to represent the Lagrange
multipliers when first order conditions of the Ramsey problem are computed.
The new variables take the form `MULT_`

, where `i``i` represents
the constraint with which the multiplier is associated (counted from the
order of declaration in the model block).

The last type of auxiliary variables is introduced by the
`differentiate_forward_vars`

option of the `model`

block.
The new variables take the form `AUX_DIFF_FWRD_`

, and are
equal to `i``x-x(-1)`

for some endogenous variable `x`

.

Once created, all auxiliary variables are included in the set of endogenous variables. The output of decision rules (see below) is such that auxiliary variable names are replaced by the original variables they refer to.

The number of endogenous variables before the creation of auxiliary
variables is stored in `M_.orig_endo_nbr`

, and the number of
endogenous variables after the creation of auxiliary variables is
stored in `M_.endo_nbr`

.

See Dynare Wiki for more technical details on auxiliary variables.