**The information on this page is outdated. The current version is at https://git.dynare.org/Dynare/dynare/-/wikis/Auxiliary-variables**

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 in Dynare ≤ 4.6, in all cases in Dynare ≥ 4.7)
- 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 aux var.

# Aux var for endogenous with lead >= 2

This is an aux var 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 aux var begins with `AUX_ENDO_LEAD_`.

This kind of aux var has `M_.aux_vars(i).type = 0`.

# Aux var for endogenous with lag >= 2

This is an aux var 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 aux var 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 aux var has `M_.aux_vars(i).type = 1`.

# Aux var for exogenous with a lead

This is an aux var which is a substitute for an expression in the original model where a lead on an exogenous variable appears.

The name of such an aux var begins with `AUX_EXO_LEAD_`.

This kind of aux var has `M_.aux_vars(i).type = 2`.

# Aux var for exogenous with a lag

This is an aux var which is a substitute for an exogenous variable in the original model which has a lag.

The name of such an aux var 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 aux var has `M_.aux_vars(i).type = 3`.

# Aux var for expectation operator using the (full) information set of another period

This is an aux var which is a substitute for an expression like `EXPECTATION(-1)(...)`.

The name of such an aux var begins with `AUX_EXPECT_LEAD_` or `AUX_EXPECT_LAG_`.

This kind of aux var has `M_.aux_vars(i).type = 4`.

# Aux var for the differentiate of a forward variable (since 4.4)

This is an aux var which is a substitute for a forward variable, when the `differentiate_forward_vars` option of `model` is used.

The name of such an aux var 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 aux var has `M_.aux_vars(i).type = 5`.

# Aux var for multipliers for first order conditions of the Ramsey problem (since 4.3)

This is an aux var which is created for a lagrange multiplier for the ramsey problem.

The name of such an aux var 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 aux var has `M_.aux_vars(i).type = 6`.