diff --git a/NEWS.md b/NEWS.md index ab1f1114543f029f5815e189e1747b616dea6463..f1fac85b2cddac617748fbfb1b9cabb33d5e30fc 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,345 @@ +Announcement for Dynare 4.6.0 +============================= + +We are pleased to announce the release of Dynare 4.6.0. + +This major release adds new features and fixes various bugs. + +The Windows, macOS and source packages are already available for download at +[the Dynare website](https://www.dynare.org/download/). + +All users are strongly encouraged to upgrade. + +This release is compatible with MATLAB versions ranging from 7.9 (R2009b) to +9.7 (R2019b), and with GNU Octave versions 5.2.0 (under Windows) and 4.4.1 +(under macOS). + +Here is the list of major user-visible changes: + + - Stochastic simulations + + - 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). + + - New option `filtered_theoretical_moments_grid` of `stoch_simul`, that + supersedes `hp_ngrid`. + + - Estimation + + - 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). + + - 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. + + - New option `mh_tune_jscale` of `estimation` command for tuning the scale + parameter of the proposal distribution of the Random Walk Metropolis + Hastings. + + - Added debugging info when parameters take a `NaN` or `Inf` value. + + - Option `mode_compute=1` is now available under Octave. + + - 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. + + - Option `stack_solve_algo=2` is now available under Octave. + + - Steady state + + - Option `solve_algo=7` is now available under Octave. + + - Optimal policy + + - 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). + + - 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. + + - Discretionary policy returns a more informative error message when the + objective has nonzero derivatives with respect to some variables. + + - Identification + + - Added minimal system identification check of *Komunjer and Ng (2011)*. + + - 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)*. + + - All tests (moments, spectrum, minimal system, strength) can be turned + off. + + - More numerical options can be changed by the user. + + - Improved printing and storage (same folder) of results. + + - Sensitivity analysis + + - New `diffuse_filter` option to the `dynare_sensitivity` command. + + - Arbitrary expressions can now be passed for the interval boundaries in + `irf_calibration` and `moment_calibration`. ⚠ This breaks the + previous syntax, requiring that the lower/upper bounds be separated by + commas. + + - Forecasting and smoothing + + - 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. + + - New option `parameter_set` to the `calib_smoother` command. + + - ⚠ The results of `conditional_forecast` command is now saved in + `oo_` (used to be in a file) + + - 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). + + - New `diff`, `flip`, `max_nrows`, `plot_init_date` and `plot_end_date` + options to `plot_shock_decomposition`. + + - New `initial_decomposition_decomposition` command, for computing and + plotting the decomposition of the effect of smoothed initial conditions of + state variables. + + - New `squeeze_shock_decomposition` command, for removing decompositions of + variables that are not of interest. + + - New `with_epilogue` option (common to `shock_decomposition`, + `realtime_shock_decomposition` and `initial_condition_decomposition`). + + - New `init2shocks` block to attribute initial conditions to shocks. + + - 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. + + - Arrays of arrays are now supported. + + - New macro directives `@#echomacrovars` and `@#echomacrovars(save)` for + displaying or saving the values of all macro-variables. + + - Inline comments are now supported. + + - ⚠ All division operations are now done with doubles (as opposed to + integers). To achieve the old functionality, use the new `floor` operator. + + - ⚠ 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]]`). + + - ⚠ 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`. + + - New option `planner_discount_latex_name` of `ramsey_model` and + `discretionary_policy`. + + - New command `model_local_variable` command for assigning a LaTeX name to + model-local variables. + + - The `write_latex_static_model` and `write_latex_original_model` commands + now support the `write_equation_tags` option. + + - 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, variables and parameters declaration + + - 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`. + + - 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']`. + + - 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). + + - 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. + + - It is now possible to assign an arbitrary macro-expression to a + macro-variable defined on the command-line, using the `-D` syntax. + + - 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, Octave…). This new feature opens the possibility to + develop alternative back-ends for the Dynare language. + + - ⚠ 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. + + - dseries classes + + - New functionalities and efficiency improvements. + + - Complete rewrite using the new `classdef` syntax and exploiting in place + modifications when possible. + + - Integration of the `dates` classes within `dseries`. + + - Reporting classes + + - Automatically create titlepage with page numbers/page titles. + + - Allow for the removal of headers and footers from a given page. + + - Allow user to set page number. + + - Split up report output. Create new files for the preamble, the body of + the report, and each individual page of the report. + + - The classes have been converted to the new `classdef` syntax. + + - Misc + + - External functions can be located in MATLAB/Octave namespaces. + + - 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. + + - 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`. + + - ⚠ 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/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). + + - 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 + + +Since there are a few backward-incompatible changes in this release, users may +want to have a look at the [upgrade +guide](https://git.dynare.org/Dynare/dynare/-/wikis/BreakingFeaturesIn4.6) to +adapt their existing codes. + + Announcement for Dynare 4.5.7 (on 2019-02-06) =============================================