diff --git a/NEWS.md b/NEWS.md index c6d55bb847342d1e8c44400a47580b87671d7a73..ff41e49901d6574b25b7c7cc2ca0cfe011e81113 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,347 @@ +Announcement for Dynare 5.0 (on 2022-01-07) +=========================================== + +We are pleased to announce the release of Dynare 5.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 8.3 (R2014a) to +9.11 (R2021b), and with GNU Octave version 6.4.0 (under Windows). + +The new tools for semi-structural models and the improvements on the nonlinear +solvers were funded by the ECB. Special thanks to Nikola Bokan (ECB) for his +contributions and numerous bug reports and fixes. + +Major user-visible changes +-------------------------- + + - New routines for simulating semi-structural (backward) models where + some equations incorporate expectations based on future values of a VAR or + trend component model. See the `var_model`, `trend_component_model` and + `var_expectation_model` commands, and the `var_expectation` operator. + + - New routines for simulating semi-structural models where some equations are + specified using the polynomial adjustment costs (PAC) approach, as in the + FRB/US model (see Brayton et al., 2014 and Brayton et al., 2000) and the + ECB-BASE model (see Angelini et al., 2019). The forward-looking terms of the + PAC equations can be computed either using a satellite VAR model, or using + full model-consistent expectations. See the `pac_model` command and the + `pac_expectation` operator. + + - New Method of Moments toolbox that provides functionality to estimate + parameters by (i) Generalized Method of Moments (GMM) up to 3rd-order pruned + perturbation approximation or (ii) Simulated Method of Moments (SMM) up to + any perturbation approximation order. The toolbox is inspired by replication + codes accompanied to Andreasen et al. (2018), Born and Pfeifer (2014), and + Mutschler (2018). It is accessible via the new `method_of_moments` command + and the new `matched_moments` block. Moreover, by default, a new non-linear + least squares optimizer based on `lsqnonlin` is used for minimizing the + method of moments objective function (available under `mode_compute=13`). + GMM can further benefit from using Gradient-based optimizers (using + `analytic_standard_errors` option and/or passing `'Jacobian','on'` to the + optimization options) as the Jacobian of the moment conditions can be + computed analytically. + + - Implementation of the Occbin algorithm by Guerrieri and Iacoviello (2015), + together with the inversion filter of Cuba-Borda, Guerrieri, Iacoviello, and + Zhong (2019) and the piecewise Kalman filter of Giovannini, Pfeiffer, and + Ratto (2021). It is available via the new block `occbin_constraints` and the + new commands `occbin_setup`, `occbin_solver`, `occbin_graph` and + `occbin_write_regimes`. + + - Stochastic simulations + + - `stoch_simul` now supports theoretical moments at `order=3` with + `pruning`. + + - `stoch_simul` now reports second moments based on the pruned state space + if the `pruning` option is set (in previous Dynare releases it would + report a second-order accurate result based on the linear solution). + + - Estimation + + - Performance optimization to pruned state space system and Lyapunov + solvers. + + - New option `mh_posterior_mode_estimation` to `estimation` to perform + mode-finding by running the MCMC. + + - New heteroskedastic filter and smoother, where shocks standard error may + *unexpectedly* change in every period. Triggered by + `heteroskedastic_filter` option of the `estimation` command, and + configured via the `heteroskedastic_shocks` block. + + - New option `mh_tune_guess` for setting the initial value for + `mh_tune_jscale`. + + - New option `smoother_redux` to `estimation` and `calib_smoother` to + trigger computing the Kalman smoother on a restricted state space instead + of the full one. + + - New block `filter_initial_state` for setting the initial condition of the + Kalman filter/smoother. + + - New option `mh_initialize_from_previous_mcmc` to the `estimation` command + that allows to pick initial values for a new MCMC from a previous one. + + - The `xls_sheet` option of the `estimation` command now takes a quoted + string as value. The former unquoted syntax is still accepted, but no + longer recommended. + + - New option `particle_filter_options` to set various particle filter options + + - Perfect foresight and extended path + + - New specialized algorithm in `perfect_foresight_solver` to deal with + purely static problems. + + - The `debug` option of `perfect_foresight_solver` provides debugging + information if the Jacobian is singular. + + - In deterministic models (perfect foresight or extended path), exogenous + variables with lead/lags are now replaced by auxiliary variables. This + brings those models in line with the transformation done on stochastic + models. However note that transformation is still not exactly the same + between the two classes of models, because there is no need to take into + account the Jensen inequality on the latter. In deterministic models, + there is a one-to-one mapping between exogenous with lead/lags and + auxiliaries, while in stochastic models, an auxiliary endogenous may + correspond to a more complex nonlinear expression. + + - Optimal policy + + - Several improvements to `evaluate_planner_objective`: + + - it now applies a consistent approximation order when doing the + computation; + - in addition to the conditional welfare, it now also provides the + unconditional welfare; + - in a stochastic context, it now works with higher order approximation + (only the conditional welfare is available for order ⩾ 3); + - it now also works in a perfect foresight context. + + - `discretionary_policy` is now able to solve nonlinear models (it will + then use their first-order approximation, and the analytical steady state + must be provided). + + - Identification + + - New option `schur_vec_tol` to the `identification` command, for setting + the tolerance level used to find nonstationary variables in Schur + decomposition of the transition matrix. + + - The `identification` command now supports optimal policy. + + - Shock decomposition + + - The `fast_realtime` option of the `realtime_shock_decomposition` command + now accepts a vector of integers, which runs the smoother for all the + specified data vintages. + + - Macro processor + + - Macroprocessor variables can be defined without a value (they are + assigned integer 1). + + - LaTeX and JSON outputs + + - New `nocommutativity` option to the `dynare` command. This option tells + the preprocessor not to use the commutativity of addition and + multiplication when looking for common subexpressions. As a consequence, + when using this option, equations in various outputs (LaTeX, JSON…) will + appear as the user entered them (without terms or factors swapped). Note + that using this option may have a performance impact on the preprocessing + stage, though it is likely to be small. + + - Model-local variables are now substituted out as part of the various + model transformations. This means that they will no longer appear in + LaTeX or in JSON files (for the latter, they are still visible with + `json=parse` or `json=check`). + + - Compilation of the model (`use_dll` option) + + - Block decomposition (option `block` of `model`) can now be used in + conjunction with the `use_dll` option. + + - The `use_dll` option can now directly be given to the `dynare` command. + + - dseries classes + + - Routines for converting between time series frequencies (e.g. daily to + monthly) have been added. + + - dseries now support bi-annual and daily frequency data. + + - dseries can now import data from [DBnomics](https://db.nomics.world), via + the [mdbnomics](https://git.dynare.org/dbnomics/mdbnomics) plugin. Note + that this does not yet work under Octave. For the time being, the + DBnomics plugin must be installed separately. + + - Misc improvements + + - The `histval_file` and `initval_file` commands have been made more + flexible and now have functionalities similar to the `datafile` option of + the `estimation` command. + + - When using the `loglinear` option, the output from Dynare now clearly + shows that the results reported concern the log of the original variable. + + - Options `block` and `bytecode` of `model` can now be used in conjunction + with model-local variables (variables declared with a pound-sign `#`). + + - The `model_info` command now prints the typology of endogenous variables + for non-block decomposed models. + + - The total computing time of a run (in seconds) is now saved to `oo_.time`. + + - New `notime` option to the `dynare` command, to disable the printing and + the saving of the total computing time. + + - New `parallel_use_psexec` command-line Windows-specific option for + parallel local clusters: when `true` (the default), use `psexec` to spawn + processes; when `false`, use `start`. + + - when compiling from source, it is no longer necessary to pass the + `MATLAB_VERSION` version to the configure script; the version is now + automatically detected. + +Incompatible changes +-------------------- + + - Dynare will now generally save its output in the `MODFILENAME/Output` folder + (or the `DIRNAME/Output` folder if the `dirname` option was specified) + instead of the main directory. Most importantly, this concerns the + `_results.mat` and the `_mode.mat` files. + + - The structure of the `oo_.planner_objective` field has been changed, in + relation to the improvements to `evaluate_planner_objective`. + + - The preprocessor binary has been renamed to `dynare-preprocessor`, and is + now located in a dedicated `preprocessor` subdirectory. + + - The `dynare` command no longer accepts `output=dynamic` and `output=first` + (those options actually had no effect). + + - The minimal required MATLAB version is now R2014a (8.3). + + - The 32-bit support has been dropped for Windows. + +Bugs that were present in 4.6.4 and that have been fixed in 5.0 +--------------------------------------------------------------- + +* Equations marked with `static`-tags were not detrended when a `deflator` was + specified +* Parallel execution of `dsge_var` estimation was broken +* The preprocessor would incorrectly simplify forward-looking constant + equations of the form `x(+1)=0` to imply `x=0` +* Under some circumstances, the use of the `model_local_variable` statement + would lead to a crash of the preprocessor +* When using the `block`-option without `bytecode` the residuals of the static + model were incorrectly displayed +* When using `k_order_solver`, the `simult_` function ignored requested + approximation orders that differed from the one used to compute the decision + rules +* Stochastic simulations of the `k_order_solver` without `pruning` iterated on + the policy function with a zero shock vector for the first (non-endogenous) + period +* `estimation` would ignore the mean of non-zero observables if the mean was 0 + for the initial parameter vector +* `mode_check` would crash if a parameter was estimated to be exactly 0 +* `load_mh_file` would not be able to load proposal density if the previous run + was done in parallel +* `load_mh_file` would not work with MCMC runs from Dynare versions before + 4.6.2 +* `ramsey_model` would not correctly work with `lmmcp` +* `ramsey_model` would crash if a non-scalar error code was encountered during + steady state finding. +* Using undefined objects in the `planner_objective` function would yield an + erroneous error message about the objective containing exogenous variables +* `model_diagnostics` did not correctly handle a previous `loglinear` option +* `solve_algo=3` (csolve) would ignore user-set `maxit` and `tolf` options +* The `planner_objective` values were not based on the correct initialization + of auxiliary variables (if any were present) +* The `nostrict` command line option was not ignoring unused endogenous + variables in `initval`, `endval` and `histval` +* `prior_posterior_statistics_core` could crash for models with eigenvalues + very close to 1 +* The display of the equation numbers in `debug` mode related to issues in the + Jacobian would not correctly take auxiliary equations into account +* The `resid` command was not correctly taking auxiliary and missing equations + related to optimal policy (`ramsey_model`, `discretionary_policy`) into + account +* `bytecode` would lock the `dynamic.bin` file upon encountering an exception, + requiring a restart of MATLAB to able to rerun the file +* Estimation with the `block` model option would crash when calling the block + Kalman filter +* The `block` model option would crash if no `initval` statement was present +* Having a variable with the same name as the mod-file present in the base + workspace would result in a crash +* `oo_.FilteredVariablesKStepAheadVariances` was wrongly computed in the Kalman + smoother based on the previous period forecast error variance +* Forecasts after `estimation` would not work if there were lagged exogenous + variables present +* Forecasts after `estimation` with MC would crash if measurement errors were + present +* Smoother results would be infinity for auxiliary variables associated with + lagged exogenous variables +* In rare cases, the posterior Kalman smoother could crash due to previously + accepted draws violating the Blanchard-Kahn conditions when using an + unrestricted state space +* `perfect_foresight_solver` would crash for purely static problems +* Monte Carlo sampling in `identification` would crash if the minimal state + space for the Komunjer and Ng test could not be computed +* Monte Carlo sampling in `identification` would skip the computation of + identification statistics for all subsequent parameter draws if an error was + triggered by one draw +* The `--steps`-option of Dynare++ was broken +* `smoother2histval` would crash if variable names were too similar +* `smoother2histval` was not keeping track of whether previously stored results + were generated with `loglinear` +* The `initval_file` option was not supporting Dynare’s translation of a model + into a one lead/lag-model via auxiliary variables + +References +---------- + + - Andreasen et al. (2018): “The Pruned State-Space System for Non-Linear DSGE + Models: Theory and Empirical Applications,†Review of Economic Studies, + 85(1), 1–49 + + - Angelini, Bokan, Christoffel, Ciccarelli and Zimic (2019): “Introducing + ECB-BASE: The blueprint the new ECB semi-structural model for the euro area,†+ ECB Working Paper no. 2315 + + - Born and Pfeifer (2014): “Policy risk and the business cycle,†Journal of + Monetary Economics, 68, 68–85 + + - Brayton, Davis and Tulip (2000): “Polynomial Adjustment Costs in FRB/US,†+ Unpublished manuscript + + - Brayton, Laubach and Reifschneider (2014): “The FRB/US Model: A Tool for + Macroeconomic Policy Analysis,†FEDS Notes. Washington: Board of Governors + of the Federal Reserve System, https://doi.org/10.17016/2380-7172.0012 + + - Cuba-Borda, Guerrieri, Iacoviello, and Zhong (2019): “Likelihood evaluation + of models with occasionally binding constraints,†Journal of Applied + Econometrics, 34(7), 1073–1085 + + - Giovannini, Pfeiffer and Ratto (2021): “Efficient and robust inference of + models with occasionally binding constraints,†Working Paper 2021-03, Joint + Research Centre, European Commission + + - Guerrieri and Iacoviello (2015): “OccBin: A toolkit for solving dynamic + models with occasionally binding constraints easily,†Journal of Monetary + Economics, 70, 22–38 + + - Mutschler (2018): “Higher-order statistics for DSGE models,†Econometrics + and Statistics, 6(C), 44–56 + + Announcement for Dynare 4.6.4 (on 2021-03-18) =============================================