Further improvements to 4.6 release notes authored by Sébastien Villemot's avatar Sébastien Villemot
......@@ -74,16 +74,14 @@ Dynare 4.6
- Identification (!1648, !1689, !1683, !1711)
- Added minimal system identification check of *Komunjer and Ng (2011,
Econometrica)*.
- Added minimal system identification check of *Komunjer and Ng (2011)*.
- Added spectrum identification check of *Qu and Tkachenko (2012,
Quantitative Economics)*.
- Added spectrum identification check of *Qu and Tkachenko (2012)*.
- Identification is now also available for approximation orders 2 and 3
with either analytical or numerical parameter derivatives. The relevant
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
off.
......@@ -148,45 +146,47 @@ Dynare 4.6
(union, intersection, difference, cartesian power and product), type
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
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.
`@#define f(x) = 2*x^2+3*x+5`)
- User-defined functions can be declared using the `@#define` operator (*e.g.*
`@#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 (i,j) in X`, where `X` is an array containing tuples of size 2)
- `@#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).
- 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
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
integers). To achieve the old functionality, use the new `floor` operator.
- :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`
creates `[1,2,3]` while `[1:3]` would create `[[1,2,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]]`).
- :warning: Previously, printing a boolean would print `1` or `0`. Now, it
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
- 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
model-local variables. (#563)
......@@ -212,21 +212,31 @@ Dynare 4.6
- New `compilation_setup` block for specifying a custom compiler or custom
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
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
quarterly model).
- Allow for on-the-fly variable declaration in equation tags (see
01d5a1308244ffb5a85e7f8f1d6a9e104b458715)
- 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.
- New option `nopreprocessoroutput` to disable printing of messages from
......@@ -242,28 +252,29 @@ Dynare 4.6
- Preprocessor outputs and inputs
- 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,
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.
- :warning: Most files generated by the preprocessor are now grouped under
two subdirectories. Assuming your file is `FILENAME.mod`, then M-files
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
empty lines). The old behaviour can be restored using the `linemacro`
option (see above).
- 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
- 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`.
......@@ -282,24 +293,43 @@ Dynare 4.6
- 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
Dynare has detrended the model (given the trends on variables declared by
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`
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
objects. (!1686)
- New collection of MATLAB/Octave utilities to retrieve and alter objects:
`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
automatically fall back to slower M-file functional alternative; this is
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`,
`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
......
......