Changes
Page history
Further improvements to 4.6 release notes
authored
Feb 17, 2020
by
Sébastien Villemot
Hide whitespace changes
Inline
Side-by-side
NewFeatures.md
View page @
3d30d77a
...
...
@@ -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, M
atlab, ...
). This new feature opens the possibility to
Python, Julia, M
ATLAB, 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
...
...
...
...