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 range `M_.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.
# 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`.
# 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`.
# 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`.
# 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`.
# 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`.
# 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`.
# 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`.