Refactor Dynare 4.6 release notes authored by Sébastien Villemot's avatar Sébastien Villemot
This page documents the new features in Dynare. For previous versions of Dynare, please read the dedicated frozen page on the [DynareWiki](http://www.dynare.org/DynareWiki/NewFeatures).
This page documents the changes between Dynare versions (including the unstable
noe). For previous versions of Dynare, please read the dedicated frozen page on
the [DynareWiki](http://www.dynare.org/DynareWiki/NewFeatures).
Dynare 4.7 (unstable)
---------------------
Dynare 4.6
----------
- The perturbation method is now available at an arbitrary approximation order. In other words, the `order` option of `stoch_simul` accepts an arbitrary positive integer (of course, up to some model-specific computational limit) (see #217 for details)
- Stochastic simulations
- (Nonlinear) estimation is also now available at an arbitrary approximation
order (#1673)
- The perturbation method is now available at an arbitrary approximation
order. In other words, the `order` option of `stoch_simul` accepts an
arbitrary positive integer (of course, up to some model-specific
computational limit). (#217)
- Improvements to `identification` command:
- New option `filtered_theoretical_moments_grid` of `stoch_simul`, that
supersedes `hp_ngrid`.
- added minimal system identification check of *Komunjer and Ng (2011, Econometrica)*
- added spectrum identification check of *Qu and Tkachenko (2012, Quantitative Economics)*
- all tests (moments, spectrum, minimal system, strength) can be turned off
- more numerical options which can be changed by the user
- improved printing and storage (same folder) of results
- fixed numerical derivatives
- fixed functionality when there is correlation of shocks or one wants to consider corr parameters for both analytical as well as numerical derivatives
- Reference: !1648
- Estimation
- Optimal policy
- :warning: The `ramsey_policy`-command is now deprecated. It is superseded by calls to `ramsey_policy`, `stoch_simul`, and `evaluate_planner_objective` (see https://git.dynare.org/Dynare/dynare/wikis/BreakingFeaturesIn4.6)
- New command `evaluate_planner_objective` to compute the value of the `planner_objective` (https://git.dynare.org/Dynare/dynare/issues/1678)
- New option `planner_discount_latex_name` of `ramsey_policy` (#1686)
- It is now possible to estimate a model under optimal policy (either
Ramsey or discretionary) (#1173)
- (Nonlinear) estimation is now also available at an arbitrary approximation
order. In other words, the `order` option of `estimation` accepts an
arbitrary positive integer (of course, up to some model-specific
computational limit). (#1673)
- Various improvements to particle filters.
- It is now possible to estimate models under optimal policy (see below).
- Variance decomposition of observables now accounts for measurement error.
(#1486)
- Improvements to option `use_dll`:
- New option `mh_tune_jscale` of `estimation` command for tuning the scale
parameter of the proposal distribution of the Random Walk Metropolis
Hastings.
- compilation is now faster on large models (by disabling targeted optimization flags in the compiler)
- it is no longer necessary to configure MATLAB for compiling MEX files, since the compilation is done by the preprocessor; on Windows, a suitable compiler (MinGW) ships with the Dynare installer; on other platforms, GCC must be in the path
- Added debugging info when parameters take a `NaN` or `Inf` value. (!1538)
- Improvements to perfect foresight simulation and extended path: a significant speed improvement should be noted on large models (when neither `bytecode` nor `block` option is used). The stacked problem is now constructed using a MEX file that greatly speeds up the process (in particular, the time spent in that step can become negligible when the `use_dll` option is used).
- Option `mode_compute=1` is now available under Octave.
- Various improvements to particle filters (TO BE DETAILED)
- Perfect foresight and extended path
- A significant speed improvement should be noted on large models (when
neither `bytecode` nor `block` option is used). The stacked problem is
now constructed using a dedicated machine-compiled library that greatly
speeds up the process (in particular, the time spent in that step can
become negligible when the `use_dll` option is used).
- New options `print` and `noprint` of `perfect_foresight_solver` command.
(#1647)
- Option `stack_solve_algo=2` is now available under Octave.
- Steady state
- Option `solve_algo=7` is now available under Octave.
- Optimal policy
- Options `solve_algo=7`, `stack_solve_algo=2` and `mode_compute=1` now work under Octave
- The `ramsey_policy` command is now deprecated. It is superseded by
successive calls to `ramsey_model`, `stoch_simul`, and
`evaluate_planner_objective` (in this order). (#1678)
- In `conditional_forecast_paths`, it is no longer required that all constrained paths be of the same length. There may now be a different number of controlled variables at each period. In that case, the order of declaration of endogenous controlled variables and of `controlled_varexo` matters: if the second endogenous variable is controlled for less periods than the first one, the second `controlled_varexo` isn't set for the last periods. (see #699)
- It is now possible to estimate a model under optimal policy (either
Ramsey or discretionary) by running the `estimation` command after either
`ramsey_model` or `discretionary_policy`. It is however not yet possible
to estimate parameters that appear in the discount factor of the social
planner. (#1173)
- Discretionary policy returns a more informative error message when the
objective has nonzero derivatives with respect to some variables. (!1468)
- 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. These JSON files can be easily parsed from any language (C++, Fortran, Python, Julia, Matlab, ...). This new feature opens the possibility to develop alternative back-ends for the Dynare language.
- Identification (!1648)
- Added the possibility to declare Dynare command options in the mod file.
- Added minimal system identification check of *Komunjer and Ng (2011,
Econometrica)*.
- Discretionary policy returns a more informative error message when the objective has nonzero derivatives with respect to some variables. (!1468)
- `write_latex_static_model` and `write_latex_original_model` now support the `write_equation_tags`-option (#1431)
- Added spectrum identification check of *Qu and Tkachenko (2012,
Quantitative Economics)*.
- The `calib_smoother`-command now take the option `parameter_set` (#1477)
- All tests (moments, spectrum, minimal system, strength) can be turned
off.
- New command `model_local_variable` that allows defining LaTeX-expressions for model-local variables (#563)
- More numerical options can be changed by the user.
- Always write `M_.state_var`, independently of what commands are issued (#637)
- Improved printing and storage (same folder) of results.
- New command-line option `nopreprocessoroutput` (#1390)
- Sensitivity analysis
- New `diffuse_filter` option to the `dynare_sensitivity` command. (!1562)
- New command `write_latex_steady_state_model` (#1496)
- Arbitrary expressions can now be passed for the interval boundaries in
`irf_calibration` and `moment_calibration`. :warning: This breaks the
previous syntax, requiring that the lower/upper bounds be separated by
commas. (preprocessor#12)
- Ability to call the preprocessor by passing the `.mod` file as a string argument from the macOS or GNU/Linux command line (#1509)
- Forecasting and smoothing
- Variance decomposition of observables now accounts for measurement error (#1486)
- In `conditional_forecast_paths`, it is no longer required that all
constrained paths be of the same length. There may now be a different
number of controlled variables at each period. In that case, the order of
declaration of endogenous controlled variables and of `controlled_varexo`
matters: if the second endogenous variable is controlled for less periods
than the first one, the second `controlled_varexo` isn't set for the last
periods. (#699)
- New dynare option `noemptylinemacro` (#1551)
- New option `parameter_set` to the `calib_smoother` command (#1477)
- The Macro processor has been rewritten
- New features
- `elseif`-clauses are now supported
- a `defined()`-function allows testing whether macro variables have been defined
- Empty arrays (with the `[]` syntax) are now possible (#707)
- Arrays of arrays are now possible
- New types: Double, Tuple, Function
- New macro directives `@#echomacrovars` and `@#echomacrovars(save)` (#1564)
- Inline comments are now supported
- Support for comprehensions
- :warning: Breaking changes
- :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]]`)
- :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)}`
- :warning: The results of `conditional_forecast` command is now saved in
`oo_` (used to be in a file; see #1672)
- Dseries and Reporting have been rewritten using the Matlab/Octave `classdef` syntax
- Shock decomposition
- The `dynare_sensitivity`-command now accepts the `diffuse_filter`-option (!1562)
- Added `fast_realtime` option to real time shock decomposition (deactivated
by default, runs the smoother only twice: once for the last in-sample and
once for the last out-of-sample data point) (!1563) and (!1552)
- Added debugging info on NaN and Inf parameters (!1538)
- New `diff`, `flip`, `max_nrows`, `plot_init_date` and `plot_end_date`
options to `plot_shock_decomposition` (#1649, !1655,
74e7c12d9d4f802cb687f6f1f122330fa5c4a2f4)
- Shock decomposition:
- Added `fast_realtime` option to real time shock decomposition (deactivated by default, runs the smoother only twice: once for the last in-sample and once for the last out-of-sample data point) (!1563) and (!1552)
- Added `diff`, `flip` and `max_nrows` options to `plot_shock_decomposition`
(#1649, !1655)
- Options `plot_init_date` and `plot_end_date` of `plot_shock_decomposition`
are now documented (see 74e7c12d9d4f802cb687f6f1f122330fa5c4a2f4)
- New `initial_decomposition_decomposition` command, for computing and
plotting the decomposition of the effect of smoothed initial conditions of
state variables (#1586)
- New `squeeze_shock_decomposition` command, for removing decompositions of
variables that are not of interest (!1655)
- New `with_epilogue` option (common to `shock_decomposition`,
`realtime_shock_decomposition` and `initial_condition_decomposition`) (!1688)
`realtime_shock_decomposition` and `initial_condition_decomposition`)
(!1688)
- New `init2shocks` block to attribute initial conditions to shocks (#1650)
- New syntax to declare model variables in the `model` block (#1386)
- Macro processor
- New object types: real (supersedes integers), boolean (distinct from
integers), tuple, user-defined function.
- New operators: various mathematical functions, set operations on arrays
(union, intersection, difference, cartesian power and product), type
checking and conversion.
- 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]`)
- 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
- `@#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
- Empty arrays (with the `[]` syntax) are now possible (#707)
- 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
- :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]]`)
- :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)}`
- LaTeX output
- New command `write_latex_steady_state_model` (#1496)
- New option `planner_discount_latex_name` of `ramsey_policy`. (#1686)
- New command `model_local_variable` command for assigning a LaTeX name to
model-local variables. (#563)
- The `write_latex_static_model` and `write_latex_original_model` commands
now support the `write_equation_tags` option. (#1431)
- Compilation of the model (`use_dll` option) made easier and faster
- Under Windows, it is no longer necessary to manually install the
compiler, since the latter is now shipped by the Dynare installer.
- Under macOS, the Dynare installer now automatically downloads and
installs the compiler.
- It is no longer necessary to configure MATLAB to let it know where the
compiler is, since the compilation is now done by the preprocessor.
- The compilation phase is now faster on large models (this has been
achieved by disabling a few time-consuming and not-so-useful optimization
passes otherwise done by the compiler).
- New `compilation_setup` block for specifying a custom compiler or custom
compilation flags.
- Model and variables declaration
- New syntax to declare model variables in the `model` block. (#1386)
- New `epilogue` block for computing output variables of interest that may
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
file.
- New option `nopreprocessoroutput` to disable printing of messages from
the preprocessor. (#1390)
- It is now possible to assign an arbitrary macro-expression to a
macro-variable defined on the command-line, using the `-D` syntax.
(#1696)
- New option `linemacro` to revert to the old format of the
macro-processed file (see below).
- 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.
These JSON files can be easily parsed from any language (C++, Fortran,
Python, Julia, Matlab, ...). 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/`
- 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)
- dseries classes
- Numerous new functionalities. Unfortunately it was not possible to
document them in time for the initial 4.6 release. We hope to fix that
soon.
- Added option `mh_tune_jscale` in `estimation` for tuning the scale parameter of the proposal distribution of the Random Walk Metropolis Hastings.
- Complete rewrite using the new `classdef` syntax.
- Allow for on-the-fly variable declaration in equation tags (see 01d5a1308244ffb5a85e7f8f1d6a9e104b458715)
- Integration of the `dates` classes within `dseries`.
- :warning: Previously, when some MEX files were missing, Dynare would automatically use a 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 `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)
- Reporting classes
- Automatically create titlepage with page numbers/page titles.
- Allow for the removal of headers and footers from a given page.
- :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 for MEX files) will be under `FILENAME/`
- Allow user to set page number.
- options `print` and `noprint` added to `perfect_foresight_solver` (#1647)
- Split up report output. Create new files for the preamble, the body of
the report, and each individual page of the report.
- External functions can be located in matlab namespaces (#1639)
- The classes have been converted to the new `classdef` syntax.
- Can pass expressions as intervals to `irf_calibration` and `moment_calibration`.
- :warning: This breaks the previous syntax, requiring that the lower/upper bound be separated by commas (preprocessor#12)
- Misc
- Improvements to the balanced growth test path: default tolerance has been raised, 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)
- External functions can be located in MATLAB namespaces. (#1639)
- The undocumented `linear` option of `stoch_simul` has been removed
- 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)
- :warning: The results of `conditional_forecast` command is now saved in `oo_` (used to be in a file; see #1672)
- New collection of `get` and `set` utilities to retrieve and alter
objects. (!1686)
- New suite of `get` and `set` utilities to retrieve and alter objects (!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
`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)
- New option `filtered_theoretical_moments_grid` of `stoch_simul`, that
supersedes `hp_ngrid`
Dynare 4.5
----------
......
......