Since Dynare 4.1, the Dynare preprocessor modifies the model given by the user, under certain circumstances, by adding auxiliary variables to it.
Auxiliary variables are created in the following cases:
 for endogenous variables with a lag or a lead of two or more (only in stochastic contexts in Dynare 4.1, in all cases in Dynare >= 4.2)
 for exogenous variables with a lag or a lead, only in stochastic contexts
 when the EXPECTATION operator is used.
Auxiliary variables are always endogenous variables. Internally, the indices of the original endogenous (as declared by the user) are in the range 1:M_.orig_endo_nbr
. Auxiliary variables have indices in the range M_.orig_endo_nbr+1:M_.endo_nbr
.
In most cases, auxiliary equations are added along with auxiliary variables, in order to keep equal the number of equations and endogenous.
In order to get information about auxiliary variables and equations added by the preprocessor, the write_latex_dynamic_model
and write_latex_static_model
commands can be useful tools.
The vector structure M_.aux_vars
also contains information about auxiliary variables. For each auxiliary variable, the following fields are declared:

M_.aux_vars(i).endo_index
: the index of the auxiliary variable, in the rangeM_.orig_endo_nbr+1:M_.endo_nbr

M_.aux_vars(i).type
: an integer representing the type of the auxiliary variable (see below for the list of types). The structure can also contain other informations depending on the type of the auxiliary variable.
0. Auxiliary variable for endogenous with lead >= 2
This is an auxiliary variable which is a substitute for an expression in the original model where a lead of 2 or more on an endogenous variable appears.
The name of such an auxiliary variable begins with AUX_ENDO_LEAD_
.
This kind of auxiliary variable has M_.aux_vars(i).type = 0
.
1. Auxiliary variable for endogenous with lag >= 2
This is an auxiliary variable which is a substitute for an endogenous variable in the original model which has a lag of 2 or more.
The name of such an auxiliary variable begins with AUX_ENDO_LAG_
.
M_.aux_vars(i).orig_index
contains the index of the endogenous variable for which it is a substitute, and M_.aux_vars(i).orig_lead_lag
contains the lag of the original variable (as a negative value).
This kind of auxiliary variable has M_.aux_vars(i).type = 1
.
2. Auxiliary variable for exogenous with a lead
This is an auxiliary variable which is a substitute for an expression in the original model where a lead on an exogenous variable appears.
The name of such an auxiliary variable begins with AUX_EXO_LEAD_
.
This kind of auxiliary variable has M_.aux_vars(i).type = 2
.
3. Auxiliary variable for exogenous with a lag
This is an auxiliary variable which is a substitute for an exogenous variable in the original model which has a lag.
The name of such an auxiliary variable begins with AUX_EXO_LAG_
.
M_.aux_vars(i).orig_index
contains the index of the exogenous variable for which it is a substitute, and M_.aux_vars(i).orig_lead_lag
contains the lag of the original variable (as a negative value).
This kind of auxiliary variable has M_.aux_vars(i).type = 3
.
4. Aux var for expectation operator using the (full) information set of another period
This is an auxiliary variable which is a substitute for an expression like EXPECTATION(1)(...)
.
The name of such an auxiliary variable begins with AUX_EXPECT_LEAD_
or AUX_EXPECT_LAG_
.
This kind of auxiliary variable has M_.aux_vars(i).type = 4
.
5. Auxiliary variable for the differentiate of a forward variable (since 4.4)
This is an auxiliary variable which is a substitute for a forward variable, when the differentiate_forward_vars
option of model
is used.
The name of such an auxiliary variable begins with AUX_DIFF_FWRD_
.
M_.aux_vars(i).orig_index
contains the index of the endogenous variable of which it is the differentiate.
This kind of auxiliary variable has M_.aux_vars(i).type = 5
.
6. Auxiliary variable for multipliers for first order conditions of the Ramsey problem (since 4.3)
This is an auxiliary variable which is created for a lagrange multiplier of the ramsey problem.
The name of such an auxiliary variable begins with MULT_i
, where i
is the equation number with which the multiplier is associated.
M_.aux_vars(i).eq_nbr
contains the number of the equation (constraint) with which the multiplier is associated.
This kind of auxiliary variable has M_.aux_vars(i).type = 6
.
var_model
order and max lag in model (since 4.6)
7. Auxiliary variable to account for difference between This is an auxiliary variable to account for the difference in lags between that declared in the var_model
statement and those present in the model.
The name of such an auxiliary variable begins with AUX_VARMODEL_
.
M_.aux_vars(i).orig_index
contains the index of the variable in the VAR
M_.aux_vars(i).orig_lead_lag
contains the lag of the variable in the VAR
This kind of auxiliary variable has M_.aux_vars(i).type = 7
.
diff
operator (since 4.6)
8. auxiliary variable for This is an auxiliary variable which is a substitute for the diff
operator
The name of such an auxiliary variable begins with AUX_DIFF_
.
M_.aux_vars(i).orig_index
contains the index of the variable contained in the diff
operator. This field exists if the diff
was taken of a variable, not of an expression.
M_.aux_vars(i).orig_lead_lag
contains the lag of the variable contained in the diff
operator. This field exists if the diff
was taken of a variable, not of an expression.
This kind of auxiliary variable has M_.aux_vars(i).type = 8
.
diff
operator (since 4.6)
9. auxiliary variable for lag on If a diff
operator is applied to a variable with lagged values (e.g. diff(x(3)
), a diff auxiliary variable is created for the diff
operator applied to the variable with lag equal to zero (e.g. diff(x)
) and diff lags auxiliary variables are created for the following sequence (e.g. a diff lag auxiliary variable would be created for diff(x(1)
, diff(x(2))
, and diff(x(3)
).
The name of such an auxiliary variable begins with AUX_DIFF_LAG_
.
M_.aux_vars(i).orig_index
contains the index of the preceding auxiliary variable for diff lag or of the auxiliary variable for diff itself (types 8 or 9)
M_.aux_vars(i).orig_lead_lag
contains 0
(not needed because we know the lag is 1
different than the previous one.
This kind of auxiliary variable has M_.aux_vars(i).type = 9
.
10. auxiliary variable for unary operations (since 4.6)
This is an auxiliary variable which is a substitute for certain unary operations, namely: exp
, log
, log10
, cos
, sin
, tan
, acos
, asin
, atan
, cosh
, sinh
, tanh
, acosh
, asinh
, atanh
, sqrt
, abs
, sign
, and erf
.
The name of such an auxiliary variable begins with AUX_UOP_
.
M_.aux_vars(i).orig_index
contains the index of the original variable to which the unary operation was applied.
M_.aux_vars(i).orig_lead_lag
contains the lag of the original variable to which the unary operation was applied.
This kind of auxiliary variable has M_.aux_vars(i).type = 10
.