Further improvements to 4.6 release notes authored by Sébastien Villemot's avatar Sébastien Villemot
...@@ -74,16 +74,14 @@ Dynare 4.6 ...@@ -74,16 +74,14 @@ Dynare 4.6
- Identification (!1648, !1689, !1683, !1711) - Identification (!1648, !1689, !1683, !1711)
- Added minimal system identification check of *Komunjer and Ng (2011, - Added minimal system identification check of *Komunjer and Ng (2011)*.
Econometrica)*.
- Added spectrum identification check of *Qu and Tkachenko (2012, - Added spectrum identification check of *Qu and Tkachenko (2012)*.
Quantitative Economics)*.
- Identification is now also available for approximation orders 2 and 3 - Identification is now also available for approximation orders 2 and 3
with either analytical or numerical parameter derivatives. The relevant with either analytical or numerical parameter derivatives. The relevant
moments and spectrum are computed from the pruned state space system moments and spectrum are computed from the pruned state space system
as in *Mutschler (2015, JEDC)*. as in *Mutschler (2015)*.
- All tests (moments, spectrum, minimal system, strength) can be turned - All tests (moments, spectrum, minimal system, strength) can be turned
off. off.
...@@ -148,45 +146,47 @@ Dynare 4.6 ...@@ -148,45 +146,47 @@ Dynare 4.6
(union, intersection, difference, cartesian power and product), type (union, intersection, difference, cartesian power and product), type
checking and conversion. checking and conversion.
- Added support for comprehensions (e.g. the set containing the squares of - Added support for comprehensions (*e.g.* the set containing the squares of
all even numbers between 1 and 5 can be constructed with `[ i^2 for i in all even numbers between 1 and 5 can be constructed with `[ i^2 for i in
1:5 when mod(i,2) == 0]`) 1:5 when mod(i,2) == 0]`).
- User-defined functions can be declared using the `@#define` operator (e.g. - User-defined functions can be declared using the `@#define` operator (*e.g.*
`@#define f(x) = 2*x^2+3*x+5`) `@#define f(x) = 2*x^2+3*x+5`).
- `@#elseif`-clauses are now supported in conditional statements - `@#elseif`-clauses are now supported in conditional statements.
- `@#for` loops can iterate over several variables at the same time (e.g. - `@#for` loops can iterate over several variables at the same time (*e.g.*
`@#for (i,j) in X`, where `X` is an array containing tuples of size 2) `@#for (i,j) in X`, where `X` is an array containing tuples of size 2).
- A `defined()` function allows testing whether macro variables have been defined - A `defined()` function allows testing whether macro variables have been
defined.
- Empty arrays (with the `[]` syntax) are now possible (#707) - Empty arrays (with the `[]` syntax) are now possible (#707).
- Arrays of arrays are now supported - Arrays of arrays are now supported.
- New macro directives `@#echomacrovars` and `@#echomacrovars(save)` for - New macro directives `@#echomacrovars` and `@#echomacrovars(save)` for
displaying or saving the values of all macro-variables. (#1564) displaying or saving the values of all macro-variables. (#1564)
- Inline comments are now supported - Inline comments are now supported.
- :warning: All division operations are now done with doubles (as opposed to - :warning: All division operations are now done with doubles (as opposed to
integers). To achieve the old functionality, use the new `floor` operator. integers). To achieve the old functionality, use the new `floor` operator.
- :warning: Colon syntax used to require braces around it to create an array - :warning: Colon syntax used to require braces around it to create an array
(e.g. `[1:3]` would create `[1,2,3]`). Now this is not necessary (`1:3` (*e.g.* `[1:3]` would create `[1,2,3]`). Now this is not necessary (`1:3`
creates `[1,2,3]` while `[1:3]` would create `[[1,2,3]]`) creates `[1,2,3]` while `[1:3]` would create `[[1,2,3]]`).
- :warning: Previously, printing a boolean would print `1` or `0`. Now, it - :warning: Previously, printing a boolean would print `1` or `0`. Now, it
prints `true` or `false`. To achieve the old functionality, you must cast prints `true` or `false`. To achieve the old functionality, you must cast
it to a real, e.g. `@{(real)(1!=0)}` it to a real, *e.g.* `@{(real)(1!=0)}`.
- LaTeX output - LaTeX output
- New command `write_latex_steady_state_model` (#1496) - New command `write_latex_steady_state_model`. (#1496)
- New option `planner_discount_latex_name` of `ramsey_model` and `discretionary_policy`. (#1686) - New option `planner_discount_latex_name` of `ramsey_model` and
`discretionary_policy`. (#1686)
- New command `model_local_variable` command for assigning a LaTeX name to - New command `model_local_variable` command for assigning a LaTeX name to
model-local variables. (#563) model-local variables. (#563)
...@@ -212,21 +212,31 @@ Dynare 4.6 ...@@ -212,21 +212,31 @@ Dynare 4.6
- New `compilation_setup` block for specifying a custom compiler or custom - New `compilation_setup` block for specifying a custom compiler or custom
compilation flags. compilation flags.
- Model and variables declaration - Model, variables and parameters declaration
- New syntax to declare model variables in the `model` block. (#1386) - New syntax to declare model variables and parameters on-the-fly in the
`model` block. To do this, simply follow the symbol name with a vertical
line (`|`, pipe character) and either an `e`, an `x`, or a `p`. For
example, to declare a parameter named `alpha` in the model block, you
could write `alpha|p` directly in an equation where it appears.
Similarly, to declare an endogenous variable `c` in the model block you
could write `c|e`. (#1386)
- New syntax to declare model variable and parameters on-the-fly in
equation tags. In the tag, simply state the type of variable to be
declared (`endogenous`, `exogenous`, or `parameter` followed by an equal
sign and the variable name in single quotes. Hence, to declare a variable
`c` as endogenous in an equation tag, you can type `[endogenous='c']`.
(see 01d5a1308244ffb5a85e7f8f1d6a9e104b458715)
- New `epilogue` block for computing output variables of interest that may - New `epilogue` block for computing output variables of interest that may
not be necessarily defined in the model (e.g. various kinds of not be necessarily defined in the model (*e.g.* various kinds of
real/nominal shares or relative prices, or annualized variables out of a real/nominal shares or relative prices, or annualized variables out of a
quarterly model). quarterly model).
- Allow for on-the-fly variable declaration in equation tags (see
01d5a1308244ffb5a85e7f8f1d6a9e104b458715)
- Command-line options - Command-line options
- Added the possibility to declare Dynare command-line options in the mod - Added the possibility to declare Dynare command-line options in the `.mod`
file. file.
- New option `nopreprocessoroutput` to disable printing of messages from - New option `nopreprocessoroutput` to disable printing of messages from
...@@ -242,28 +252,29 @@ Dynare 4.6 ...@@ -242,28 +252,29 @@ Dynare 4.6
- Preprocessor outputs and inputs - Preprocessor outputs and inputs
- Added JSON output to the preprocessor. A representation of the model file - Added JSON output to the preprocessor. A representation of the model file
and the whole content of the `*.mod` file is saved in `*.json` files. and the whole content of the `.mod` file is saved in `.json` files.
These JSON files can be easily parsed from any language (C++, Fortran, These JSON files can be easily parsed from any language (C++, Fortran,
Python, Julia, Matlab, ...). This new feature opens the possibility to Python, Julia, MATLAB, Octave…). This new feature opens the possibility to
develop alternative back-ends for the Dynare language. develop alternative back-ends for the Dynare language.
- :warning: Most files generated by the preprocessor are now grouped under - :warning: Most files generated by the preprocessor are now grouped under
two subdirectories. Assuming your file is `FILENAME.mod`, then M-files two subdirectories. Assuming your file is `FILENAME.mod`, then M-files
and MEX-files will be under `+FILENAME/`, while other output (JSON, and MEX-files will be under `+FILENAME/`, while other output (JSON,
LaTeX, source code for the MEX files) will be under `FILENAME/` LaTeX, source code for the MEX files) will be under `FILENAME/`.
- The macro-generated output is now more readable (no more line numbers and - The macro-generated output is now more readable (no more line numbers and
empty lines). The old behaviour can be restored using the `linemacro` empty lines). The old behaviour can be restored using the `linemacro`
option (see above). option (see above).
- Ability to call the preprocessor by passing the `.mod` file as a string - Ability to call the preprocessor by passing the `.mod` file as a string
argument from the macOS or GNU/Linux command line (#1509) argument from the macOS or GNU/Linux command line. (#1509)
- dseries classes - dseries classes
- New functionalities and efficiency improvements. - New functionalities and efficiency improvements.
- Complete rewrite using the new `classdef` syntax and exploiting in place modifications when possible. - Complete rewrite using the new `classdef` syntax and exploiting in place
modifications when possible.
- Integration of the `dates` classes within `dseries`. - Integration of the `dates` classes within `dseries`.
...@@ -282,24 +293,43 @@ Dynare 4.6 ...@@ -282,24 +293,43 @@ Dynare 4.6
- Misc - Misc
- External functions can be located in MATLAB namespaces. (#1639) - External functions can be located in MATLAB/Octave namespaces. (#1639)
- Improvements to the balanced growth path test that is performed after - Improvements to the balanced growth path test that is performed after
Dynare has detrended the model (given the trends on variables declared by Dynare has detrended the model (given the trends on variables declared by
the user): the default tolerance has been raised, and a different value the user): the default tolerance has been raised, and a different value
can be set with new option `balanced_growth_test_tol` to the `model` can be set with new option `balanced_growth_test_tol` to the `model`
block; as a consequence, failing the test is now an error again (#1389) block; as a consequence, failing the test is now an error again. (#1389)
- New collection of `get` and `set` utilities to retrieve and alter - New collection of MATLAB/Octave utilities to retrieve and alter objects:
objects. (!1686) `get_irf`, `get_mean`, `get_shock_stderr_by_name`, `get_smooth`,
`get_update`, `set_shock_stderr_value`. (!1686)
- :warning: Previously, when some MEX files were missing, Dynare would - :warning: Previously, when some MEX files were missing, Dynare would
automatically fall back to slower M-file functional alternative; this is automatically fall back to slower M-file functional alternative; this is
no longer the case. It is however still possible to manually add these no longer the case. It is however still possible to manually add these
alternatives in the MATLAB path (they are located under alternatives in the MATLAB/Octave path (they are located under
`matlab/missing/mex`; this only applies to the `mjdgges`, `gensylv`, `matlab/missing/mex`; this only applies to the `mjdgges`, `gensylv`,
`A_times_B_kronecker_C`, `sparse_hessian_times_B_kronecker_C` and `A_times_B_kronecker_C`, `sparse_hessian_times_B_kronecker_C` and
`local_state_space_iteration_2` DLLs) `local_state_space_iteration_2` DLLs).
- References
- Komunjer, I. and S. Ng (2011), “[Dynamic Identification of Dynamic
Stochastic General Equilibrium
Models](https://www.onlinelibrary.wiley.com/doi/abs/10.3982/ECTA8916),”
*Econometrica*, 79(6), 1995–2032
- Qu, Z. and D. Tkachenko (2012), “[Identification and frequency domain
quasi‐maximum likelihood estimation of linearized dynamic stochastic
general equilibrium
models](https://onlinelibrary.wiley.com/doi/abs/10.3982/QE126),”
*Quantitative Economics*, 3(1), 95–132
- Mutschler, W. (2015), “[Identification of DSGE models—The effect of
higher-order approximation and
pruning](https://www.sciencedirect.com/science/article/pii/S0165188915000731),”
*Journal of Economic Dynamics and Control*, 56, 34–54
Dynare 4.5 Dynare 4.5
... ...
......