This page documents the changes between Dynare versions (including the unstable
This page documents the changes between Dynare versions (including the unstable
one). For previous versions of Dynare, please read the dedicated frozen page on
one). For previous versions of Dynare, please read the dedicated frozen page on
the [DynareWiki](http://www.dynare.org/DynareWiki/NewFeatures).
the [DynareWiki](http://www.dynare.org/DynareWiki/NewFeatures).
Dynare 7 (unstable)
Dynare 7 (unstable)
-------------------
-------------------
- Method of moments now supports estimation with discretionary optimal policy (!2279)
- Method of moments now supports estimation with discretionary optimal policy (!2279)
- Option values `solve_algo={6,7,8}` and `stack_solve_algo={2,3}` are now available without `block` nor `bytecode` (e14a49211067b27114d8173b16d4cb8f7595b0c3, aa263e6a2adc9414142551a01bbcc46abb6a3894)
- Option values `solve_algo={6,7,8}` and `stack_solve_algo={2,3}` are now available without `block` nor `bytecode` (e14a49211067b27114d8173b16d4cb8f7595b0c3, aa263e6a2adc9414142551a01bbcc46abb6a3894)
- More flexible syntax for specifying complementarity conditions (461c30fea8c296e88388f9775a2e92e674b0e3d2, 656c130036706849e7d08d9411b352b45a19eccb)
- More flexible syntax for specifying complementarity conditions (461c30fea8c296e88388f9775a2e92e674b0e3d2, 656c130036706849e7d08d9411b352b45a19eccb)
- The complementarity condition is now specified between the associated equation and its closing semicolon, using the perpendicular symbol as a separator (the latter can be input either in UTF-8, as `⟂`, corresponding to Unicode codepoint U+27C2; or alternatively as pure ASCII, as `_|_`, *i.e.* a vertical bar enclosed within two underscores)
- The complementarity condition is now specified between the associated equation and its closing semicolon, using the perpendicular symbol as a separator (the latter can be input either in UTF-8, as `⟂`, corresponding to Unicode codepoint U+27C2; or alternatively as pure ASCII, as `_|_`, *i.e.* a vertical bar enclosed within two underscores)
- Both the lower and the upper bounds can be specified at the same time in a given complementarity condition
- Both the lower and the upper bounds can be specified at the same time in a given complementarity condition
- Arbitrary functions of parameters can appear in the bounds
- Arbitrary functions of parameters can appear in the bounds
- The old syntax using the `mcp` equation tag is still supported but deprecated
- The old syntax using the `mcp` equation tag is still supported but deprecated
- Here is an example of an equation with an associated complementarity condition, using the new syntax:
- Here is an example of an equation with an associated complementarity condition, using the new syntax:
```
```
mu = 0 ⟂ 0 < i < 1+2*alpha;
mu = 0 ⟂ 0 < i < 1+2*alpha;
```
```
Dynare 6
- New `dr_cycle_reduction_maxiter` option to the `stoch_simul`, `estimation` and `method_of_moments` command, to control the maximum number of iterations when the cycle reduction algorithm is used. (#1920, preprocessor!104, !2295)
--------
Dynare 6
- The Sequential Monte Carlo sampler as described by Herbst and Schorfheide (2014) is now available under value `hssmc` for option `posterior_sampling_method`.
--------
- New routines for perfect foresight simulation with expectation errors. In such a scenario, agents make expectation errors in that the path they had anticipated in period 1 is not realized exactly. More precisely, in some simulation periods, they may receive new information that makes them revise their anticipation for the path of future shocks. Also, under this scenario, it is assumed that agents behave as under perfect foresight, *i.e.* they make their decisions as if there were no uncertainty and they knew exactly the path of future shocks; the new information that they may receive comes as a total surprise to them. Available under new `perfect_foresight_with_expectation_errors_setup` and `perfect_foresight_with_expectation_errors_solver` commands, and `shocks(learnt_in=…)`, `mshocks(learnt_in=…)` and `endval(learnt_in=…)` blocks.
- The Sequential Monte Carlo sampler as described by Herbst and Schorfheide (2014) is now available under value `hssmc` for option `posterior_sampling_method`.
- New routines for IRF matching with stochastic simulations:
- New routines for perfect foresight simulation with expectation errors. In such a scenario, agents make expectation errors in that the path they had anticipated in period 1 is not realized exactly. More precisely, in some simulation periods, they may receive new information that makes them revise their anticipation for the path of future shocks. Also, under this scenario, it is assumed that agents behave as under perfect foresight, *i.e.* they make their decisions as if there were no uncertainty and they knew exactly the path of future shocks; the new information that they may receive comes as a total surprise to them. Available under new `perfect_foresight_with_expectation_errors_setup` and `perfect_foresight_with_expectation_errors_solver` commands, and `shocks(learnt_in=…)`, `mshocks(learnt_in=…)` and `endval(learnt_in=…)` blocks.
- Both frequentist (as in Christiano, Eichenbaum, and Evans, 2005) and Bayesian (as in Christiano, Trabandt, and Walentin, 2010) IRF matching approaches are implemented. The core idea of IRF matching is to treat empirical impulse responses (*e.g.* given from an SVAR or local projection estimation) as data and select model parameters that align the model’s IRFs closely with their empirical counterparts. (!2191)
- New routines for IRF matching with stochastic simulations:
- Available under option `mom_method = irf_matching` option to the `method_of_moments` command. (preprocessor!85)
- Both frequentist (as in Christiano, Eichenbaum, and Evans, 2005) and Bayesian (as in Christiano, Trabandt, and Walentin, 2010) IRF matching approaches are implemented. The core idea of IRF matching is to treat empirical impulse responses (*e.g.* given from an SVAR or local projection estimation) as data and select model parameters that align the model’s IRFs closely with their empirical counterparts. (!2191)
- New blocks `matched_irfs` and `matched_irfs_weights` for specifying the values and weights of the empirical impulse response functions. (preprocessor#124)
- Available under option `mom_method = irf_matching` option to the `method_of_moments` command. (preprocessor!85)
- Pruning à la Andreasen et al. (2018) is now available at an arbitrary approximation order when performing stochastic simulations with `stoch_simul` (!2147), and at 3rd order when performing particle filtering. (!2071, particles!16, !2045)
- New blocks `matched_irfs` and `matched_irfs_weights` for specifying the values and weights of the empirical impulse response functions. (preprocessor#124)
- New `log` option to the `var` statement. In addition to the endogenous variable(s) thus declared, this option also triggers the creation of auxiliary variable(s) equal to the log of the corresponding endogenous variable(s). For example, given a `var(log) y;` statement, two endogenous will be created (`y` and `LOG_y`), and an auxiliary equation linking the two will also be added (equal to `y = exp(LOG_y);`). Moreover, every occurrence of `y` in the model will be replaced by `exp(LOG_y)`. This option is, for example, useful for performing a loglinear approximation of some variable(s) in the context of a first-order stochastic approximation; or for ensuring that the variable(s) stay(s) in the definition domain of the function defining the steady state or the dynamic residuals when the nonlinear solver is used. (#349)
- Pruning à la Andreasen et al. (2018) is now available at an arbitrary approximation order when performing stochastic simulations with `stoch_simul` (!2147), and at 3rd order when performing particle filtering. (!2071, particles!16, !2045)
- New model editing features (21a8a5794a83b5098cad0fe7beab93dcbe5ef6bf and 4db28998687b8845568e8750d99a1b45f0d6a94f)
- New `log` option to the `var` statement. In addition to the endogenous variable(s) thus declared, this option also triggers the creation of auxiliary variable(s) equal to the log of the corresponding endogenous variable(s). For example, given a `var(log) y;` statement, two endogenous will be created (`y` and `LOG_y`), and an auxiliary equation linking the two will also be added (equal to `y = exp(LOG_y);`). Moreover, every occurrence of `y` in the model will be replaced by `exp(LOG_y)`. This option is, for example, useful for performing a loglinear approximation of some variable(s) in the context of a first-order stochastic approximation; or for ensuring that the variable(s) stay(s) in the definition domain of the function defining the steady state or the dynamic residuals when the nonlinear solver is used. (#349)
- Multiple `model` blocks are now supported (this was already working but not explicitly documented).
- New model editing features (21a8a5794a83b5098cad0fe7beab93dcbe5ef6bf and 4db28998687b8845568e8750d99a1b45f0d6a94f)
- Multiple `estimated_params` blocks now concatenate their contents (instead of overwriting previous ones, which was the former undocumented behavior); an `overwrite` option has been added to provide the old behavior. (preprocessor@60ef6bbdbd2f95b7f8d52b1c10cf6bb9aa7773cc, preprocessor@ea44aa19d6dd2bf4c508ee081b2b6cae2a647250)
- Multiple `model` blocks are now supported (this was already working but not explicitly documented).
- New `model_options` statement to set model options in a global fashion. (preprocessor#19)
- Multiple `estimated_params` blocks now concatenate their contents (instead of overwriting previous ones, which was the former undocumented behavior); an `overwrite` option has been added to provide the old behavior. (preprocessor@60ef6bbdbd2f95b7f8d52b1c10cf6bb9aa7773cc, preprocessor@ea44aa19d6dd2bf4c508ee081b2b6cae2a647250)
- New `model_remove` command to remove equations. (preprocessor@1f004584e9c8b2ea5fbda6dd5413b516ce956679)
- New `model_options` statement to set model options in a global fashion. (preprocessor#19)
- New `model_replace` block to replace equations. (preprocessor@1f004584e9c8b2ea5fbda6dd5413b516ce956679)
- New `model_remove` command to remove equations. (preprocessor@1f004584e9c8b2ea5fbda6dd5413b516ce956679)
- New `var_remove` command to remove variables (or parameters). (preprocessor@342c4faf8d95169b7391507e703c88d76b38a243)
- New `model_replace` block to replace equations. (preprocessor@1f004584e9c8b2ea5fbda6dd5413b516ce956679)
- New `estimated_params_remove` block to remove estimated parameters. (preprocessor@5ffbc5bad31c306f561d673cde36d460cb5906c1)
- New `var_remove` command to remove variables (or parameters). (preprocessor@342c4faf8d95169b7391507e703c88d76b38a243)
- Stochastic simulations
- New `estimated_params_remove` block to remove estimated parameters. (preprocessor@5ffbc5bad31c306f561d673cde36d460cb5906c1)
- Performance improvements for simulation of the solution under perturbation and for particle filtering at higher order (⩾ 3). (#1802, !2071, particles!16, !2045)
- Stochastic simulations
- Performance improvement for the first order perturbation solution using either cycle reduction (`dr=cycle_reduction` option) or logarithmic reduction (`dr=logarithmic_reduction`). (!2085, !2089)
- Performance improvements for simulation of the solution under perturbation and for particle filtering at higher order (⩾ 3). (#1802, !2071, particles!16, !2045)
- New `nomodelsummary` option to the `stoch_simul` command, to suppress the printing of the model summary and the covariance of the exogenous shocks. (a00eb5e1ded61d2e0086f841203a5eec96e77931)
- Performance improvement for the first order perturbation solution using either cycle reduction (`dr=cycle_reduction` option) or logarithmic reduction (`dr=logarithmic_reduction`). (!2085, !2089)
- Estimation
- New `nomodelsummary` option to the `stoch_simul` command, to suppress the printing of the model summary and the covariance of the exogenous shocks. (a00eb5e1ded61d2e0086f841203a5eec96e77931)
- A truncated normal distribution can now be specified as a prior, using the 3rd and 4th parameters of the `estimated_params` block as the bounds. (!2161)
- Estimation
- New `conditional_likelihood` option to the `estimation` command. When the option is set, instead of using the Kalman filter to evaluate the likelihood, Dynare will evaluate the conditional likelihood based on the first-order reduced form of the model by assuming that the initial state vector is at its steady state. (b7693c32, f7694208)
- A truncated normal distribution can now be specified as a prior, using the 3rd and 4th parameters of the `estimated_params` block as the bounds. (!2161)
- New `additional_optimizer_steps` option to the `estimation` command to trigger the sequential execution of several optimizers when looking for the posterior mode. (!2178)
- New `conditional_likelihood` option to the `estimation` command. When the option is set, instead of using the Kalman filter to evaluate the likelihood, Dynare will evaluate the conditional likelihood based on the first-order reduced form of the model by assuming that the initial state vector is at its steady state. (b7693c32, f7694208)
- The `generate_trace_plots` command now allows comparing multiple chains. (baf8243f)
- New `additional_optimizer_steps` option to the `estimation` command to trigger the sequential execution of several optimizers when looking for the posterior mode. (!2178)
- The Geweke and Raftery-Lewis convergence diagnostics will now also be displayed when `mh_nblocks>1`. (d0e99daf9ae84cf3a605fa4cf49d506d36b2bd95)
- The `generate_trace_plots` command now allows comparing multiple chains. (baf8243f)
- New `robust`, `TolGstep`, and `TolGstepRel` options to the optimizer available under `mode_compute=5` (“newrat”). (!2231)
- The Geweke and Raftery-Lewis convergence diagnostics will now also be displayed when `mh_nblocks>1`. (d0e99daf9ae84cf3a605fa4cf49d506d36b2bd95)
- New `brooks_gelman_plotrows` option to the `estimation` command for controlling the number of parameters to depict along the rows of the figures depicting the Brooks and Gelman (1998) convergence diagnostics. (!2146)
- New `robust`, `TolGstep`, and `TolGstepRel` options to the optimizer available under `mode_compute=5` (“newrat”). (!2231)
- New `mh_init_scale_factor` option to the `estimation` command tor govern the overdispersion of the starting draws when initializing several Monte Carlo Markov Chains. This option supersedes the `mh_init_scale` option, which is now deprecated. (!2041)
- New `brooks_gelman_plotrows` option to the `estimation` command for controlling the number of parameters to depict along the rows of the figures depicting the Brooks and Gelman (1998) convergence diagnostics. (!2146)
- Steady state computation
- New `mh_init_scale_factor` option to the `estimation` command tor govern the overdispersion of the starting draws when initializing several Monte Carlo Markov Chains. This option supersedes the `mh_init_scale` option, which is now deprecated. (!2041)
- Steady state computation now accounts for occasionally-binding constraints of mixed-complementarity problems (as defined by `mcp` tags). (!1877)
- Steady state computation
- New `tolx` option to the `steady` command for governing the termination based on the step tolerance. (preprocessor!60)
- Steady state computation now accounts for occasionally-binding constraints of mixed-complementarity problems (as defined by `mcp` tags). (!1877)
- New `fsolve_options` option to the `steady` command for passing options to `fsolve` (in conjunction with the `solve_algo=0` option). (#1856)
- New `tolx` option to the `steady` command for governing the termination based on the step tolerance. (preprocessor!60)
- New option `from_initval_to_endval` option to the `homotopy_setup` block, for easily computing homotopy from initial to terminal steady state (when the former is already computed). (2e3fbfc0408a360dd169c927a5ea38c89f6ff95c)
- New `fsolve_options` option to the `steady` command for passing options to `fsolve` (in conjunction with the `solve_algo=0` option). (#1856)
- New `non_zero` option to `resid` command to restrict display to non-zero residuals. (preprocessor@9db21a231c5ab8f8aa26680ffecf3abfcf45bfab, 3d7299c1e490a6813de2b2cb450b738b4c7acdf9)
- New option `from_initval_to_endval` option to the `homotopy_setup` block, for easily computing homotopy from initial to terminal steady state (when the former is already computed). (2e3fbfc0408a360dd169c927a5ea38c89f6ff95c)
- Perfect foresight
- New `non_zero` option to `resid` command to restrict display to non-zero residuals. (preprocessor@9db21a231c5ab8f8aa26680ffecf3abfcf45bfab, 3d7299c1e490a6813de2b2cb450b738b4c7acdf9)
- Significant performance improvement of the `stack_solve_algo=1` option to the `perfect_foresight_solver` command (Laffargue-Boucekkine-Juillard algorithm) when used in conjunction with options `block` and/or `bytecode` of the `model` block. (17b016d983be260aa09926809d1f3465307c58e2, be648d350b162152e999b8ffad830dce6b373190, 77a7d5c3dec67b6d9943fc23c11afbb1d0cfd431)
- Perfect foresight
- New `relative_to_initval` option to the `mshocks` block, to use the initial steady state as a basis for the multiplication when there is an `endval` block. (5145bd0708697230c7adeb23c8a0dabf37f4cb3f)
- Significant performance improvement of the `stack_solve_algo=1` option to the `perfect_foresight_solver` command (Laffargue-Boucekkine-Juillard algorithm) when used in conjunction with options `block` and/or `bytecode` of the `model` block. (17b016d983be260aa09926809d1f3465307c58e2, be648d350b162152e999b8ffad830dce6b373190, 77a7d5c3dec67b6d9943fc23c11afbb1d0cfd431)
- New `static_mfs` option to the `model` block (and to the `model_options` command), for controlling the minimum feedback set computation for the static model. It defaults to `0` (corresponding to the behavior in Dynare version 5).
- New `relative_to_initval` option to the `mshocks` block, to use the initial steady state as a basis for the multiplication when there is an `endval` block. (5145bd0708697230c7adeb23c8a0dabf37f4cb3f)
- Various improvements to homotopy
- New `static_mfs` option to the `model` block (and to the `model_options` command), for controlling the minimum feedback set computation for the static model. It defaults to `0` (corresponding to the behavior in Dynare version 5).
- New `endval_steady` option to the `perfect_foresight_setup` command for computing the terminal steady state at the same time as the transitory dynamics (and new options `steady_solve_algo`, `steady_tolf`, `steady_tolx`, `steady_maxit` and `steady_markowitz` for controlling the steady state nonlinear solver). (d5a3a8e16af56af23c8eb27a693b2e67579bfde0)
- Various improvements to homotopy
- New `homotopy_linearization_fallback` and `homotopy_marginal_linearization_fallback` options to the `perfect_foresight_solver` command to get an approximate solution when homotopy fails to go to 100%. (d5a3a8e16af56af23c8eb27a693b2e67579bfde0)
- New `endval_steady` option to the `perfect_foresight_setup` command for computing the terminal steady state at the same time as the transitory dynamics (and new options `steady_solve_algo`, `steady_tolf`, `steady_tolx`, `steady_maxit` and `steady_markowitz` for controlling the steady state nonlinear solver). (d5a3a8e16af56af23c8eb27a693b2e67579bfde0)
- New `homotopy_initial_step_size`, `homotopy_min_step_size`, `homotopy_step_size_increase_success_count` and `homotopy_max_completion_share` options to the `perfect_foresight_solver` command to fine tune the homotopy behavior. (d5a3a8e16af56af23c8eb27a693b2e67579bfde0)
- New `homotopy_linearization_fallback` and `homotopy_marginal_linearization_fallback` options to the `perfect_foresight_solver` command to get an approximate solution when homotopy fails to go to 100%. (d5a3a8e16af56af23c8eb27a693b2e67579bfde0)
- Purely backward, forward and static models are now supported by the homotopy procedure. (fe142b663ef34d26969191d2a096b08aecc1eb10)
- New `homotopy_initial_step_size`, `homotopy_min_step_size`, `homotopy_step_size_increase_success_count` and `homotopy_max_completion_share` options to the `perfect_foresight_solver` command to fine tune the homotopy behavior. (d5a3a8e16af56af23c8eb27a693b2e67579bfde0)
- New `homotopy_exclude_varexo` option to the `perfect_foresight_solver` command, for excluding exogenous variables from the homotopy procedure (only available since version 6.1) (9f65299d8a7e63de8432a73bffdc8899eb27e936)
- Purely backward, forward and static models are now supported by the homotopy procedure. (fe142b663ef34d26969191d2a096b08aecc1eb10)
- The `stack_solve_algo=1` and `stack_solve_algo=6` options of the `perfect_foresight_solver` command were merged and are now synonymous. They both provide the Laffargue-Boucekkine-Juillard algorithm and work with and without the `block` and `bytecode` options of the `model` block. Using `stack_solve_algo=1` is now recommended, but `stack_solve_algo=6` is kept for backward compatibility. (06f665e231c1a66863612eb75802ff4f0b698c57)
- New `homotopy_exclude_varexo` option to the `perfect_foresight_solver` command, for excluding exogenous variables from the homotopy procedure (only available since version 6.1) (9f65299d8a7e63de8432a73bffdc8899eb27e936)
- OccBin
- The `stack_solve_algo=1` and `stack_solve_algo=6` options of the `perfect_foresight_solver` command were merged and are now synonymous. They both provide the Laffargue-Boucekkine-Juillard algorithm and work with and without the `block` and `bytecode` options of the `model` block. Using `stack_solve_algo=1` is now recommended, but `stack_solve_algo=6` is kept for backward compatibility. (06f665e231c1a66863612eb75802ff4f0b698c57)
- New `simul_reset_check_ahead_periods` option to the `occbin_setup` and `occbin_solver` commands, for resetting `check_ahead_periods` in each simulation period. (3765ef77)
- OccBin
- new `simul_max_check_ahead_periods`, `likelihood_max_check_ahead_periods`, and `smoother_max_check_ahead_periods` options to the `occbin_setup` command, for truncating the number of periods for which agents check ahead which regime is present. (2f236048 and preprocessor@ed95a2ca )
- New `simul_reset_check_ahead_periods` option to the `occbin_setup` and `occbin_solver` commands, for resetting `check_ahead_periods` in each simulation period. (3765ef77)
- Optimal policy
- new `simul_max_check_ahead_periods`, `likelihood_max_check_ahead_periods`, and `smoother_max_check_ahead_periods` options to the `occbin_setup` command, for truncating the number of periods for which agents check ahead which regime is present. (2f236048 and preprocessor@ed95a2ca )
- The `osr` command now accepts the `analytic_derivation` and `analytic_derivation_mode` options. (!2171)
- Optimal policy
- The `evaluate_planner_objective` command now computes the unconditional welfare for higher-order approximations (⩾ 3). (!1962)
- The `osr` command now accepts the `analytic_derivation` and `analytic_derivation_mode` options. (!2171)
- New `periods` and `drop` options to the `evaluate_planner_objective` command. (!1967)
- The `evaluate_planner_objective` command now computes the unconditional welfare for higher-order approximations (⩾ 3). (!1962)
- Semi-structural models
- New `periods` and `drop` options to the `evaluate_planner_objective` command. (!1967)
- New `pac_target_info` block for decomposing the PAC target into an arbitrary number of components. Furthermore, in the presence of such a block, the new `pac_target_nonstationary` operator can be used to select the non stationary part of the target (typically useful in the error correction term of the PAC equation). (b297353b06c9c35223500439c0bc63321675768b)
- Semi-structural models
- New `kind` option to the `pac_model` command. This option allows the user to select the formula used to compute the weights on the VAR companion matrix variables that are used to form PAC expectations. (b297353b06c9c35223500439c0bc63321675768b)
- New `pac_target_info` block for decomposing the PAC target into an arbitrary number of components. Furthermore, in the presence of such a block, the new `pac_target_nonstationary` operator can be used to select the non stationary part of the target (typically useful in the error correction term of the PAC equation). (b297353b06c9c35223500439c0bc63321675768b)
- Performance improvement to `solve_algo=12` and `solve_algo=14`, which significantly accelerates the simulation of purely backward, forward and static models with the `perfect_foresight_solver` command and the routines for semi-structural models.
- New `kind` option to the `pac_model` command. This option allows the user to select the formula used to compute the weights on the VAR companion matrix variables that are used to form PAC expectations. (b297353b06c9c35223500439c0bc63321675768b)
- dseries classes
- Performance improvement to `solve_algo=12` and `solve_algo=14`, which significantly accelerates the simulation of purely backward, forward and static models with the `perfect_foresight_solver` command and the routines for semi-structural models.
- The `remove` and `remove_` methods now accept a list of variables (they would previously only accept a single variable). (dseries@b7ca9c3e, c02e5505)
- dseries classes
- New MATLAB/Octave command `dplot` to plot mathematical expressions generated from variables fetched from (different) dseries objects. (dseries@d6c8d039a2f828e5ea009d7181c8145d23932d69).
- The `remove` and `remove_` methods now accept a list of variables (they would previously only accept a single variable). (dseries@b7ca9c3e, c02e5505)
- Misc
- New MATLAB/Octave command `dplot` to plot mathematical expressions generated from variables fetched from (different) dseries objects. (dseries@d6c8d039a2f828e5ea009d7181c8145d23932d69).
- New `display_parameter_values` command to print the parameter values in the command window. (!2268)
- Misc
- New `collapse_figures_in_tabgroup` command to dock all figures. (!2263)
- New `display_parameter_values` command to print the parameter values in the command window. (!2268)
- Performance improvement for the `use_dll` option of the `model` block. The preprocessor now takes advantage of parallelization when compiling the MEX files. (preprocessor@f6053df7545174885486a457a2253897a1ed4e27, preprocessor@5cf4729ab0790084af0b0a9e9a1062ddefff3401, preprocessor@dd66459e5f2e5c57ea25cb4a0e8709b22ff3195b, preprocessor@3dd40c6c42d82997972e90899da8632a747f5c90)
- New `collapse_figures_in_tabgroup` command to dock all figures. (!2263)
- New mathematical primitives available: complementary error function (`erfc`), hyperbolic functions (`cosh`, `sinh`, `tanh`, `acosh`, `asinh`, `atanh`). (preprocessor#85, preprocessor@c0ea8d72038cd6c57e48aca26d2d29866848ae0a)
- Performance improvement for the `use_dll` option of the `model` block. The preprocessor now takes advantage of parallelization when compiling the MEX files. (preprocessor@f6053df7545174885486a457a2253897a1ed4e27, preprocessor@5cf4729ab0790084af0b0a9e9a1062ddefff3401, preprocessor@dd66459e5f2e5c57ea25cb4a0e8709b22ff3195b, preprocessor@3dd40c6c42d82997972e90899da8632a747f5c90)
- New `last_simulation_period` option to the `initval_file` command. (#1838, f5f47cd834049bd5111f23622fb2c68d0e6a619b, preprocessor@ddddf89d9cd8771bb80beb5c44efe53f4734b41f)
- New mathematical primitives available: complementary error function (`erfc`), hyperbolic functions (`cosh`, `sinh`, `tanh`, `acosh`, `asinh`, `atanh`). (preprocessor#85, preprocessor@c0ea8d72038cd6c57e48aca26d2d29866848ae0a)
- The `calib_smoother` command now accepts the `nobs` and `heteroskedastic_filter` options. (!2110)
- New `last_simulation_period` option to the `initval_file` command. (#1838, f5f47cd834049bd5111f23622fb2c68d0e6a619b, preprocessor@ddddf89d9cd8771bb80beb5c44efe53f4734b41f)
- Under the MATLAB Desktop, autocompletion is now available for the `dynare` command and other CLI commands (thanks to Eduard Benet Cerda from MathWorks). (36a2a41e357780d468582c78c4cbb738c5bb4b26)
- The `calib_smoother` command now accepts the `nobs` and `heteroskedastic_filter` options. (!2110)
- Model debugging: The preprocessor now creates files for evaluating the left- and right-hand sides of model equations separately. For a model file called `ramst.mod`, you can call `[lhs,rhs]=ramst.debug.static_resid(y,x,params);` (for the static model) and `[lhs,rhs]=ramst.debug.dynamic_resid(y,x,params,steady_state);` (for the dynamic model), where `y` are the endogenous, `x` the exogenous, `params` the parameters, and `steady_state` is self-explanatory. NB: In the dynamic case, the vector `y` of endogenous must have $3n$ elements where $n$ is the number of endogenous (including auxiliary ones); the first $n$ elements correspond to the lagged values, the middle $n$ elements to the contemporaneous values, and the last $n$ elements to the lead values.
- Under the MATLAB Desktop, autocompletion is now available for the `dynare` command and other CLI commands (thanks to Eduard Benet Cerda from MathWorks). (36a2a41e357780d468582c78c4cbb738c5bb4b26)
- New interactive MATLAB/Octave command `search` for listing the equations in which given variable(s) appear (requires `json` command line option). (#1886)
- Model debugging: The preprocessor now creates files for evaluating the left- and right-hand sides of model equations separately. For a model file called `ramst.mod`, you can call `[lhs,rhs]=ramst.debug.static_resid(y,x,params);` (for the static model) and `[lhs,rhs]=ramst.debug.dynamic_resid(y,x,params,steady_state);` (for the dynamic model), where `y` are the endogenous, `x` the exogenous, `params` the parameters, and `steady_state` is self-explanatory. NB: In the dynamic case, the vector `y` of endogenous must have $3n$ elements where $n$ is the number of endogenous (including auxiliary ones); the first $n$ elements correspond to the lagged values, the middle $n$ elements to the contemporaneous values, and the last $n$ elements to the lead values.
- The `model_info` command allows to print the block decomposition even if the `block` option of the `model` block has not been used, by specifying the new options `block_static` and `block_dynamic`.
- New interactive MATLAB/Octave command `search` for listing the equations in which given variable(s) appear (requires `json` command line option). (#1886)
- There is now a default value for the global initialization file (`GlobalInitFile` option of the configuration file): the `global_init.m` in the Dynare configuration directory (typically `$HOME/.config/dynare/global_init.m` under Linux and macOS, and `c:\Users\USERNAME\AppData\Roaming\dynare\global_init.m` under Windows). (43b24facb)
- The `model_info` command allows to print the block decomposition even if the `block` option of the `model` block has not been used, by specifying the new options `block_static` and `block_dynamic`.
- For those compiling Dynare from source, the build system has been entirely rewritten and now uses Meson; as a consequence, it is now faster and easier to understand.
- There is now a default value for the global initialization file (`GlobalInitFile` option of the configuration file): the `global_init.m` in the Dynare configuration directory (typically `$HOME/.config/dynare/global_init.m` under Linux and macOS, and `c:\Users\USERNAME\AppData\Roaming\dynare\global_init.m` under Windows). (43b24facb)
- Incompatible changes
- For those compiling Dynare from source, the build system has been entirely rewritten and now uses Meson; as a consequence, it is now faster and easier to understand.
- :warning: The default value of the `mode_compute` option of the `estimation` command has been changed to `5` (it was previously `4`).
- Incompatible changes
- :warning: When using block decomposition (with the `block` option of the `model` block), the option `mfs` now defaults to `1`. This setting should deliver better performance in perfect foresight simulation on most models.
- :warning: The default value of the `mode_compute` option of the `estimation` command has been changed to `5` (it was previously `4`).
- :warning: The default location for the configuration file has changed. On Linux and macOS, the configuration file is now searched by default under `dynare/dynare.ini` in the configuration directories defined by the XDG specification (typically `$HOME/.config/dynare/dynare.ini` for the user-specific configuration and `/etc/xdg/dynare/dynare.ini` for the system-wide configuration, the former having precedence over the latter). Under Windows, the configuration file is now searched by default in `%APPDATA%\dynare\dynare.ini` (typically `c:\Users\USERNAME\AppData\Roaming\dynare\dynare.ini`). (43b24facb)
- :warning: When using block decomposition (with the `block` option of the `model` block), the option `mfs` now defaults to `1`. This setting should deliver better performance in perfect foresight simulation on most models.
- :warning: The information stored in `oo_.endo_simul, oo_.exo_simul`, and `oo_.irfs` is no longer duplicated in the base workspace. New helper functions `send_endogenous_variables_to_workspace`, `send_exogenous_variables_to_workspace`, and `send_irfs_to_workspace` have been introduced to explicitly request these outputs and to mimic the old behavior. (!2229)
- :warning: The default location for the configuration file has changed. On Linux and macOS, the configuration file is now searched by default under `dynare/dynare.ini` in the configuration directories defined by the XDG specification (typically `$HOME/.config/dynare/dynare.ini` for the user-specific configuration and `/etc/xdg/dynare/dynare.ini` for the system-wide configuration, the former having precedence over the latter). Under Windows, the configuration file is now searched by default in `%APPDATA%\dynare\dynare.ini` (typically `c:\Users\USERNAME\AppData\Roaming\dynare\dynare.ini`). (43b24facb)
- :warning: The `dynare_sensitivity` command has been renamed `sensitivity`. The old name is still accepted but triggers a warning. (66bc9fd9c2707c787efae797e1976b7052159dc4)
- :warning: The information stored in `oo_.endo_simul, oo_.exo_simul`, and `oo_.irfs` is no longer duplicated in the base workspace. New helper functions `send_endogenous_variables_to_workspace`, `send_exogenous_variables_to_workspace`, and `send_irfs_to_workspace` have been introduced to explicitly request these outputs and to mimic the old behavior. (!2229)
- :warning: The syntax `resid(1)` is no longer supported.
- :warning: The `dynare_sensitivity` command has been renamed `sensitivity`. The old name is still accepted but triggers a warning. (66bc9fd9c2707c787efae797e1976b7052159dc4)
- :warning: The `mode_compute=6` option to the `estimation` command now recursively updates the covariance matrix across the `NumberOfMh` Metropolis-Hastings runs, starting with the `InitialCovarianceMatrix` in the first run, instead of computing it from scratch in every Metropolis-Hastings run. (e5102eee)
- :warning: The syntax `resid(1)` is no longer supported.
- :warning: The `periods` command has been removed. (1b47c8a5e551be046fba8b592d29f38e17099bfe)
- :warning: The `mode_compute=6` option to the `estimation` command now recursively updates the covariance matrix across the `NumberOfMh` Metropolis-Hastings runs, starting with the `InitialCovarianceMatrix` in the first run, instead of computing it from scratch in every Metropolis-Hastings run. (e5102eee)
- :warning: The `Sigma_e` command has been removed. (e30314e75d0d4fa2e587079bdbeeb2e2e4af3383)
- :warning: The `periods` command has been removed. (1b47c8a5e551be046fba8b592d29f38e17099bfe)
- :warning: The `block` option of the `model` block no longer has an effect when used in conjunction with `stoch_simul` or `estimation` commands. (8f1a4cb3637fe4936ade877c88e6a120af2b5f24)
- :warning: The `Sigma_e` command has been removed. (e30314e75d0d4fa2e587079bdbeeb2e2e4af3383)
- :warning: The Dynare++ executable is no longer distributed since almost all of its functionalities have been integrated inside Dynare for MATLAB/Octave. (c1922c3ad0a920d48fd32ec7026bfd5ebd55a824)
- :warning: The `block` option of the `model` block no longer has an effect when used in conjunction with `stoch_simul` or `estimation` commands. (8f1a4cb3637fe4936ade877c88e6a120af2b5f24)
- :warning: A macro-processor variable defined without a value (such as `@#define var` in the `.mod` file or alternatively `-Dvar` on the `dynare` command line) is now assigned the `true` logical value (it was previously assigned `1`). (preprocessor#43)
- :warning: The Dynare++ executable is no longer distributed since almost all of its functionalities have been integrated inside Dynare for MATLAB/Octave. (c1922c3ad0a920d48fd32ec7026bfd5ebd55a824)
- :warning: The `parallel_slave_open_mode` option of the `dynare` command has been renamed `parallel_follower_open_mode`. (preprocessor#86, !1976)
- :warning: A macro-processor variable defined without a value (such as `@#define var` in the `.mod` file or alternatively `-Dvar` on the `dynare` command line) is now assigned the `true` logical value (it was previously assigned `1`). (preprocessor#43)
- :warning: The `static` option of the `model_info` command is now deprecated and is replaced by the `block_static` option. (45450651 and preprocessor@2fd06811)
- :warning: The `parallel_slave_open_mode` option of the `dynare` command has been renamed `parallel_follower_open_mode`. (preprocessor#86, !1976)
- References:
- :warning: The `static` option of the `model_info` command is now deprecated and is replaced by the `block_static` option. (45450651 and preprocessor@2fd06811)
- Andreasen, Martin M., Jesús Fernández-Villaverde, and Juan Rubio-Ramírez (2018): “The Pruned State-Space System for Non-Linear DSGE Models: Theory and Empirical Applications,” *Review of Economic Studies*, 85(1), 1-49.
- References:
- Brooks, Stephen P., and Andrew Gelman (1998): “General methods for monitoring convergence of iterative simulations,” *Journal of Computational and Graphical Statistics*, 7, pp. 434–455.
- Christiano, Eichenbaum and Charles L. Evans (2005): “Nominal Rigidities and the Dynamic Effects of a Shock to Monetary Policy,” *Journal of Political Economy*, 113(1), 1–45.
- Andreasen, Martin M., Jesús Fernández-Villaverde, and Juan Rubio-Ramírez (2018): “The Pruned State-Space System for Non-Linear DSGE Models: Theory and Empirical Applications,” *Review of Economic Studies*, 85(1), 1-49.
- Christiano, Lawrence J., Mathias Trabandt, and Karl Walentin (2010): “DSGE Models for Monetary Policy Analysis,” In: *Handbook of Monetary Economics 3*, 285–367.
- Brooks, Stephen P., and Andrew Gelman (1998): “General methods for monitoring convergence of iterative simulations,” *Journal of Computational and Graphical Statistics*, 7, pp. 434–455.
- Herbst, Edward and Schorfheide, Frank (2014): "Sequential Monte Carlo Sampling for DSGE Models," *Journal of Applied Econometrics*, 29, 1073-1098.
- Christiano, Eichenbaum and Charles L. Evans (2005): “Nominal Rigidities and the Dynamic Effects of a Shock to Monetary Policy,” *Journal of Political Economy*, 113(1), 1–45.
- Christiano, Lawrence J., Mathias Trabandt, and Karl Walentin (2010): “DSGE Models for Monetary Policy Analysis,” In: *Handbook of Monetary Economics 3*, 285–367.
- Herbst, Edward and Schorfheide, Frank (2014): "Sequential Monte Carlo Sampling for DSGE Models," *Journal of Applied Econometrics*, 29, 1073-1098.
Dynare 5
--------
Dynare 5
- 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
- New routines for simulating semi-structural (backward) models where
`var_expectation_model` commands, and the `var_expectation` operator.
some equations incorporate expectations based on future values of a VAR or
trend component model. See the `var_model`, `trend_component_model` and
- New routines for simulating semi-structural models where some equations are
`var_expectation_model` commands, and the `var_expectation` operator.
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
- New routines for simulating semi-structural models where some equations are
Angelini et al., 2019). The forward-looking terms of the PAC equations can
specified using the polynomial adjustment costs (PAC) approach, as in
be computed either using a satellite VAR model, or using full
the FRB/US model (see Brayton et al., 2014 and Brayton et al., 2000) and the ECB-BASE model (see
model-consistent expectations. See the `pac_model` command and the
Angelini et al., 2019). The forward-looking terms of the PAC equations can
`pac_expectation` operator.
be computed either using a satellite VAR model, or using full
model-consistent expectations. See the `pac_model` command and the
- New Method of Moments toolbox that provides functionality to estimate
`pac_expectation` operator.
parameters by (i) Generalized Method of Moments (GMM) up to 3rd-order pruned
perturbation approximation or (ii) Simulated Method of Moments (SMM) up to
- New Method of Moments toolbox that provides functionality to estimate
any perturbation approximation order. The toolbox is inspired by
parameters by (i) Generalized Method of Moments (GMM) up to 3rd-order pruned
replication codes accompanied to Andreasen et al. (2018), Born and Pfeifer
perturbation approximation or (ii) Simulated Method of Moments (SMM) up to
(2014), and Mutschler (2018). It is accessible via the new
any perturbation approximation order. The toolbox is inspired by
`method_of_moments` command (!1750) and the new `matched_moments` block
replication codes accompanied to Andreasen et al. (2018), Born and Pfeifer
(preprocessor!23). Moreover, by default, a new non-linear least squares optimizer
(2014), and Mutschler (2018). It is accessible via the new
based on `lsqnonlin` is used for minimizing the method of moments objective function (available under `mode_compute=13`) (3615962a6107e211861d7461e2310ba2d1366369, b4f293bdf29f766dfb3314b48d2407716a7d7025). 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 (a697002a4ee54b28551f3583757b7e0395121db6).
`method_of_moments` command (!1750) and the new `matched_moments` block
(preprocessor!23). Moreover, by default, a new non-linear least squares optimizer
- Implementation of the Occbin algorithm by Guerrieri and Iacoviello (2015) (#569,
based on `lsqnonlin` is used for minimizing the method of moments objective function (available under `mode_compute=13`) (3615962a6107e211861d7461e2310ba2d1366369, b4f293bdf29f766dfb3314b48d2407716a7d7025). 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 (a697002a4ee54b28551f3583757b7e0395121db6).
preprocessor#68), together with the inversion filter of Cuba-Borda,
Guerrieri, Iacoviello, and Zhong (2019) and the piecewise Kalman filter of Giovannini,
- Implementation of the Occbin algorithm by Guerrieri and Iacoviello (2015) (#569,
Pfeiffer, and Ratto (2021) (!1876). It is available via the new block
preprocessor#68), together with the inversion filter of Cuba-Borda,
`occbin_constraints` and the new commands `occbin_setup`, `occbin_solver`,
Guerrieri, Iacoviello, and Zhong (2019) and the piecewise Kalman filter of Giovannini,
`occbin_graph` and `occbin_write_regimes`.
Pfeiffer, and Ratto (2021) (!1876). It is available via the new block
`occbin_constraints` and the new commands `occbin_setup`, `occbin_solver`,
- Stochastic simulations
`occbin_graph` and `occbin_write_regimes`.
- `stoch_simul` now supports theoretical moments at `order=3` with
- Stochastic simulations
`pruning`. (dfc73576)
-`stoch_simul` now supports theoretical moments at `order=3` with
- `stoch_simul` now reports second moments based on the pruned state space
`pruning`. (dfc73576)
if the `pruning` option is set (in previous Dynare releases it would
report a second-order accurate result based on the linear solution).
-`stoch_simul` now reports second moments based on the pruned state space
(4cf9f7d1a7fa5dac8f91ff3344a6114c7f15959c)
if the `pruning` option is set (in previous Dynare releases it would
report a second-order accurate result based on the linear solution).
- Estimation
(4cf9f7d1a7fa5dac8f91ff3344a6114c7f15959c)
- Performance optimization to pruned state space system and Lyapunov
- Estimation
solvers. (!1749, !1745, #1737)
- Performance optimization to pruned state space system and Lyapunov
- New option `mh_posterior_mode_estimation` to `estimation` to perform
parallel local clusters: when `true` (the default), use `psexec` to spawn
processes; when `false`, use `start`. (!1843)
- New `parallel_use_psexec` command-line Windows-specific option for
parallel local clusters: when `true` (the default), use `psexec` to spawn
- when compiling from source, it is no longer necessary to pass the
processes; when `false`, use `start`. (!1843)
`MATLAB_VERSION` version to the configure script; the version is now
automatically detected.
- when compiling from source, it is no longer necessary to pass the
`MATLAB_VERSION` version to the configure script; the version is now
- Different versions of Dynare are now available as [Docker Containers](https://hub.docker.com/r/dynare/dynare).
automatically detected.
- Incompatible changes
- Different versions of Dynare are now available as [Docker Containers](https://hub.docker.com/r/dynare/dynare).
- :warning: Dynare will now generally save its output in the
- Incompatible changes
`MODFILENAME/Output` folder (or the `DIRNAME/Output` folder if the
`dirname` option was specified) instead of the main directory. Most
- :warning: Dynare will now generally save its output in the
importantly, this concerns the `_results.mat` and the `_mode.mat` files.
`MODFILENAME/Output` folder (or the `DIRNAME/Output` folder if the
`dirname` option was specified) instead of the main directory. Most
- :warning: The structure of the `oo_.planner_objective` field has been
importantly, this concerns the `_results.mat` and the `_mode.mat` files.
changed, in relation to the improvements to `evaluate_planner_objective`.
- :warning: The structure of the `oo_.planner_objective` field has been
- :warning: The preprocessor binary has been renamed to
changed, in relation to the improvements to `evaluate_planner_objective`.
`dynare-preprocessor`, and is now located in a dedicated `preprocessor`
subdirectory.
- :warning: The preprocessor binary has been renamed to
`dynare-preprocessor`, and is now located in a dedicated `preprocessor`
- :warning: The `dynare` command no longer accepts `output=dynamic` and
subdirectory.
`output=first` (those options actually had no effect).
- :warning: The `dynare` command no longer accepts `output=dynamic` and
- Platform requirements
`output=first` (those options actually had no effect).
- :warning: The minimal required MATLAB version is now R2014a (8.3). (#1713)
- Platform requirements
- :warning: The 32-bit support has been dropped for Windows. (#1713)
- :warning: The minimal required MATLAB version is now R2014a (8.3). (#1713)
- References
- :warning: The 32-bit support has been dropped for Windows. (#1713)
- Andreasen et al. (2018): “The Pruned State-Space System for Non-Linear DSGE Models: Theory and Empirical Applications,” Review of Economic Studies, 85(1), pp. 1-49.
- References
- Angelini, Bokan, Christoffel, Ciccarelli and Zimic (2019): “Introducing ECB-BASE: The blueprint
of the new ECB semi-structural model for the euro area”, ECB Working Paper no. 2315
- Andreasen et al. (2018): “The Pruned State-Space System for Non-Linear DSGE Models: Theory and Empirical Applications,” Review of Economic Studies, 85(1), pp. 1-49.
- Born and Pfeifer (2014): “Policy risk and the business cycle”, Journal of Monetary Economics, 68, 68-85.
- Angelini, Bokan, Christoffel, Ciccarelli and Zimic (2019): “Introducing ECB-BASE: The blueprint
- Brayton, Davis and Tulip (2000): “Polynomial Adjustment Costs in FRB/US”, Unpublished manuscript.
of the new ECB semi-structural model for the euro area”, ECB Working Paper no. 2315
- 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
- Born and Pfeifer (2014): “Policy risk and the business cycle”, Journal of Monetary Economics, 68, 68-85.
- Cuba-Borda, Guerrieri, Iacoviello, and Zhong (2019): “Likelihood evaluation of models with occasionally binding constraints”, Journal of Applied Econometrics, 34(7), 1073-1085
- Brayton, Davis and Tulip (2000): “Polynomial Adjustment Costs in FRB/US”, Unpublished manuscript.
- Giovannini, Pfeiffer and Ratto (2021): “Efficient and robust inference of models with occasionally binding constraints,” Working Papers 2021-03, Joint Research Centre, European Commission
- 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
- Guerrieri and Iacoviello (2015): “OccBin: A toolkit for solving dynamic models with occasionally binding constraints easily,” Journal of Monetary Economics, 70, 22–38.
- Cuba-Borda, Guerrieri, Iacoviello, and Zhong (2019): “Likelihood evaluation of models with occasionally binding constraints”, Journal of Applied Econometrics, 34(7), 1073-1085
- Mutschler (2018): “Higher-order statistics for DSGE models”, Econometrics and Statistics, 6(C), 44-56.
- Giovannini, Pfeiffer and Ratto (2021): “Efficient and robust inference of models with occasionally binding constraints,” Working Papers 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.
Dynare 4.6
----------
Dynare 4.6
- Stochastic simulations
----------
- The perturbation method is now available at an arbitrary approximation
- Stochastic simulations
order. In other words, the `order` option of `stoch_simul` accepts an
arbitrary positive integer (of course, up to some model-specific
- The perturbation method is now available at an arbitrary approximation
computational limit). (#217)
order. In other words, the `order` option of `stoch_simul` accepts an
arbitrary positive integer (of course, up to some model-specific
- New option `filtered_theoretical_moments_grid` of `stoch_simul`, that
computational limit). (#217)
supersedes `hp_ngrid`.
- New option `filtered_theoretical_moments_grid` of `stoch_simul`, that
- Estimation
supersedes `hp_ngrid`.
- Nonlinear estimation is now also available at an arbitrary approximation
- Estimation
order. In other words, the `order` option of `estimation` accepts an
arbitrary positive integer (of course, up to some model-specific
- Nonlinear estimation is now also available at an arbitrary approximation
computational limit). (#1673)
order. In other words, the `order` option of `estimation` accepts an
arbitrary positive integer (of course, up to some model-specific
- Various improvements to particle filters.
computational limit). (#1673)
- It is now possible to estimate models under optimal policy (see below).
- Various improvements to particle filters.
- Variance decomposition of observables now accounts for measurement error.
- It is now possible to estimate models under optimal policy (see below).
(#1486)
- Variance decomposition of observables now accounts for measurement error.
- New option `mh_tune_jscale` of `estimation` command for tuning the scale
(#1486)
parameter of the proposal distribution of the Random Walk Metropolis
Hastings.
- New option `mh_tune_jscale` of `estimation` command for tuning the scale
parameter of the proposal distribution of the Random Walk Metropolis
- Added debugging info when parameters take a `NaN` or `Inf` value. (!1538)
Hastings.
- Option `mode_compute=1` is now available under Octave.
- Added debugging info when parameters take a `NaN` or `Inf` value. (!1538)
- Perfect foresight and extended path
- Option `mode_compute=1` is now available under Octave.
- A significant speed improvement should be noted on large models (when
- Perfect foresight and extended path
neither `bytecode` nor `block` option is used). The stacked problem is
now constructed using a dedicated machine-compiled library that greatly
- A significant speed improvement should be noted on large models (when
speeds up the process (in particular, the time spent in that step can
neither `bytecode` nor `block` option is used). The stacked problem is
become negligible when the `use_dll` option is used).
now constructed using a dedicated machine-compiled library that greatly
speeds up the process (in particular, the time spent in that step can
- New options `print` and `noprint` of `perfect_foresight_solver` command.
become negligible when the `use_dll` option is used).
(#1647)
- New options `print` and `noprint` of `perfect_foresight_solver` command.
- Option `stack_solve_algo=2` is now available under Octave.
(#1647)
- Steady state
- Option `stack_solve_algo=2` is now available under Octave.
- Option `solve_algo=7` is now available under Octave.
- Steady state
- Optimal policy
- Option `solve_algo=7` is now available under Octave.
- The `ramsey_policy` command is now deprecated. It is superseded by
- Optimal policy
successive calls to `ramsey_model`, `stoch_simul`, and
`evaluate_planner_objective` (in this order). (#1678)
- The `ramsey_policy` command is now deprecated. It is superseded by
successive calls to `ramsey_model`, `stoch_simul`, and
- It is now possible to estimate a model under optimal policy (either
`evaluate_planner_objective` (in this order). (#1678)
Ramsey or discretionary) by running the `estimation` command after either
`ramsey_model` or `discretionary_policy`. It is however not yet possible
- It is now possible to estimate a model under optimal policy (either
to estimate parameters that appear in the discount factor of the social
Ramsey or discretionary) by running the `estimation` command after either
planner. (#1173)
`ramsey_model` or `discretionary_policy`. It is however not yet possible
to estimate parameters that appear in the discount factor of the social
- Discretionary policy returns a more informative error message when the
planner. (#1173)
objective has nonzero derivatives with respect to some variables. (!1468)
- Discretionary policy returns a more informative error message when the
- Identification (!1648, !1689, !1683, !1711)
objective has nonzero derivatives with respect to some variables. (!1468)
- Added minimal system identification check of *Komunjer and Ng (2011)*.
- Identification (!1648, !1689, !1683, !1711)
- Added spectrum identification check of *Qu and Tkachenko (2012)*.
- Added minimal system identification check of *Komunjer and Ng (2011)*.
- Identification is now also available for approximation orders 2 and 3
- Added spectrum identification check of *Qu and Tkachenko (2012)*.
with either analytical or numerical parameter derivatives. The relevant
moments and spectrum are computed from the pruned state space system
- Identification is now also available for approximation orders 2 and 3
as in *Mutschler (2015)*.
with either analytical or numerical parameter derivatives. The relevant
moments and spectrum are computed from the pruned state space system
- All tests (moments, spectrum, minimal system, strength) can be turned
as in *Mutschler (2015)*.
off.
- All tests (moments, spectrum, minimal system, strength) can be turned
- More numerical options can be changed by the user.
off.
- Improved printing and storage (same folder) of results.
- More numerical options can be changed by the user.
- Sensitivity analysis
- Improved printing and storage (same folder) of results.
- New `diffuse_filter` option to the `dynare_sensitivity` command. (!1562)
- Sensitivity analysis
- Arbitrary expressions can now be passed for the interval boundaries in
- New `diffuse_filter` option to the `dynare_sensitivity` command. (!1562)
`irf_calibration` and `moment_calibration`. :warning: This breaks the
previous syntax, requiring that the lower/upper bounds be separated by
- Arbitrary expressions can now be passed for the interval boundaries in
commas. (preprocessor#12)
`irf_calibration` and `moment_calibration`. :warning: This breaks the
previous syntax, requiring that the lower/upper bounds be separated by
- Forecasting and smoothing
commas. (preprocessor#12)
- In `conditional_forecast_paths`, it is no longer required that all
- Forecasting and smoothing
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
- In `conditional_forecast_paths`, it is no longer required that all
declaration of endogenous controlled variables and of `controlled_varexo`
constrained paths be of the same length. There may now be a different
matters: if the second endogenous variable is controlled for less periods
number of controlled variables at each period. In that case, the order of
than the first one, the second `controlled_varexo` isn't set for the last
declaration of endogenous controlled variables and of `controlled_varexo`
periods. (#699)
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
- New option `parameter_set` to the `calib_smoother` command (#1477)
periods. (#699)
- :warning: The results of `conditional_forecast` command is now saved in
- New option `parameter_set` to the `calib_smoother` command (#1477)
`oo_` (used to be in a file; see #1672)
- :warning: The results of `conditional_forecast` command is now saved in
- Shock decomposition
`oo_` (used to be in a file; see #1672)
- Added `fast_realtime` option to real time shock decomposition (deactivated
- Shock decomposition
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 `fast_realtime` option to real time shock decomposition (deactivated
by default, runs the smoother only twice: once for the last in-sample and
- New `diff`, `flip`, `max_nrows`, `plot_init_date` and `plot_end_date`
once for the last out-of-sample data point) (!1563) and (!1552)
options to `plot_shock_decomposition` (#1649, !1655,
74e7c12d9d4f802cb687f6f1f122330fa5c4a2f4)
- New `diff`, `flip`, `max_nrows`, `plot_init_date` and `plot_end_date`
options to `plot_shock_decomposition` (#1649, !1655,
- New `initial_decomposition_decomposition` command, for computing and
74e7c12d9d4f802cb687f6f1f122330fa5c4a2f4)
plotting the decomposition of the effect of smoothed initial conditions of
state variables (#1586)
- New `initial_decomposition_decomposition` command, for computing and
plotting the decomposition of the effect of smoothed initial conditions of
- New `squeeze_shock_decomposition` command, for removing decompositions of
state variables (#1586)
variables that are not of interest (!1655)
- New `squeeze_shock_decomposition` command, for removing decompositions of
- New `with_epilogue` option (common to `shock_decomposition`,
variables that are not of interest (!1655)
`realtime_shock_decomposition` and `initial_condition_decomposition`)
(!1688)
- New `with_epilogue` option (common to `shock_decomposition`,
`realtime_shock_decomposition` and `initial_condition_decomposition`)
- New `init2shocks` block to attribute initial conditions to shocks (#1650)
(!1688)
- Macro processor
- New `init2shocks` block to attribute initial conditions to shocks (#1650)
- New object types: real (supersedes integers), boolean (distinct from
- Macro processor
integers), tuple, user-defined function.
- New object types: real (supersedes integers), boolean (distinct from
- New operators: various mathematical functions, set operations on arrays
integers), tuple, user-defined function.
(union, intersection, difference, cartesian power and product), type
checking and conversion.
- New operators: various mathematical functions, set operations on arrays
(union, intersection, difference, cartesian power and product), type
- Added support for comprehensions (*e.g.* the set containing the squares of
checking and conversion.
all even numbers between 1 and 5 can be constructed with `[ i^2 for i in
1:5 when mod(i,2) == 0]`).
- 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
- User-defined functions can be declared using the `@#define` operator (*e.g.*
1:5 when mod(i,2) == 0]`).
`@#define f(x) = 2*x^2+3*x+5`).
- User-defined functions can be declared using the `@#define` operator (*e.g.*
-`@#elseif`-clauses are now supported in conditional statements.
`@#define f(x) = 2*x^2+3*x+5`).
-`@#for` loops can iterate over several variables at the same time (*e.g.*
-`@#elseif`-clauses are now supported in conditional statements.
`@#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.*
- Added the possibility to exclude some elements when iterating over `@#for`
`@#for (i,j) in X`, where `X` is an array containing tuples of size 2).
loops (*e.g.*`@#for i in 1:5 when mod(i,2) == 0` iterates over all even
numbers between 1 and 5).
- Added the possibility to exclude some elements when iterating over `@#for`
loops (*e.g.*`@#for i in 1:5 when mod(i,2) == 0` iterates over all even
- A `defined()` function allows testing whether macro variables have been
numbers between 1 and 5).
defined.
- A `defined()` function allows testing whether macro variables have been
- Empty arrays (with the `[]` syntax) are now possible (#707).
defined.
- Arrays of arrays are now supported.
- Empty arrays (with the `[]` syntax) are now possible (#707).
- New macro directives `@#echomacrovars` and `@#echomacrovars(save)` for
- Arrays of arrays are now supported.
displaying or saving the values of all macro-variables. (#1564)
- New macro directives `@#echomacrovars` and `@#echomacrovars(save)` for
- Inline comments are now supported.
displaying or saving the values of all macro-variables. (#1564)
- :warning: All division operations are now done with doubles (as opposed to
- Inline comments are now supported.
integers). To achieve the old functionality, use the new `floor` operator.
- :warning: All division operations are now done with doubles (as opposed to
- :warning: Colon syntax used to require braces around it to create an array
integers). To achieve the old functionality, use the new `floor` operator.
(*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: 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`
- :warning: Previously, printing a boolean would print `1` or `0`. Now, it
creates `[1,2,3]` while `[1:3]` would create `[[1,2,3]]`).
prints `true` or `false`. To achieve the old functionality, you must cast
it to a real, *e.g.*`@{(real)(1!=0)}`.
- :warning: Previously, printing a boolean would print `1` or `0`. Now, it
prints `true` or `false`. To achieve the old functionality, you must cast
- LaTeX output
it to a real, *e.g.*`@{(real)(1!=0)}`.
- New command `write_latex_steady_state_model`. (#1496)
- LaTeX output
- New option `planner_discount_latex_name` of `ramsey_model` and
- New command `write_latex_steady_state_model`. (#1496)
`discretionary_policy`. (#1686)
- New option `planner_discount_latex_name` of `ramsey_model` and
- New command `model_local_variable` command for assigning a LaTeX name to
`discretionary_policy`. (#1686)
model-local variables. (#563)
- New command `model_local_variable` command for assigning a LaTeX name to
- The `write_latex_static_model` and `write_latex_original_model` commands
model-local variables. (#563)
now support the `write_equation_tags` option. (#1431)
- The `write_latex_static_model` and `write_latex_original_model` commands
- Compilation of the model (`use_dll` option) made easier and faster
now support the `write_equation_tags` option. (#1431)
- Under Windows, it is no longer necessary to manually install the
- Compilation of the model (`use_dll` option) made easier and faster
compiler, since the latter is now shipped by the Dynare installer.
- Under Windows, it is no longer necessary to manually install the
- Under macOS, the Dynare installer now automatically downloads and
compiler, since the latter is now shipped by the Dynare installer.
installs the compiler.
- Under macOS, the Dynare installer now automatically downloads and
- It is no longer necessary to configure MATLAB to let it know where the
installs the compiler.
compiler is, since the compilation is now done by the preprocessor.
- It is no longer necessary to configure MATLAB to let it know where the
- The compilation phase is now faster on large models (this has been
compiler is, since the compilation is now done by the preprocessor.
achieved by disabling a few time-consuming and not-so-useful optimization
passes otherwise done by the compiler).
- The compilation phase is now faster on large models (this has been
achieved by disabling a few time-consuming and not-so-useful optimization
- New `compilation_setup` block for specifying a custom compiler or custom
passes otherwise done by the compiler).
compilation flags.
- New `compilation_setup` block for specifying a custom compiler or custom
- Model, variables and parameters declaration
compilation flags.
- New syntax to declare model variables and parameters on-the-fly in the
- Model, variables and parameters declaration
`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
- New syntax to declare model variables and parameters on-the-fly in the
example, to declare a parameter named `alpha` in the model block, you
`model` block. To do this, simply follow the symbol name with a vertical
could write `alpha|p` directly in an equation where it appears.
line (`|`, pipe character) and either an `e`, an `x`, or a `p`. For
Similarly, to declare an endogenous variable `c` in the model block you
example, to declare a parameter named `alpha` in the model block, you
could write `c|e`. (#1386)
could write `alpha|p` directly in an equation where it appears.
Similarly, to declare an endogenous variable `c` in the model block you
- New syntax to declare model variable and parameters on-the-fly in
could write `c|e`. (#1386)
equation tags. In the tag, simply state the type of variable to be
declared (`endogenous`, `exogenous`, or `parameter` followed by an equal
- New syntax to declare model variable and parameters on-the-fly in
sign and the variable name in single quotes. Hence, to declare a variable
equation tags. In the tag, simply state the type of variable to be
`c` as endogenous in an equation tag, you can type `[endogenous='c']`.
declared (`endogenous`, `exogenous`, or `parameter` followed by an equal
(see 01d5a1308244ffb5a85e7f8f1d6a9e104b458715)
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
(see 01d5a1308244ffb5a85e7f8f1d6a9e104b458715)
not be necessarily defined in the model (*e.g.* various kinds of
real/nominal shares or relative prices, or annualized variables out of a
- New `epilogue` block for computing output variables of interest that may
quarterly model).
not be necessarily defined in the model (*e.g.* various kinds of
real/nominal shares or relative prices, or annualized variables out of a
- Command-line options
quarterly model).
- Added the possibility to declare Dynare command-line options in the `.mod`
- Command-line options
file.
- Added the possibility to declare Dynare command-line options in the `.mod`
- New option `nopreprocessoroutput` to disable printing of messages from
file.
the preprocessor. (#1390)
- New option `nopreprocessoroutput` to disable printing of messages from
- It is now possible to assign an arbitrary macro-expression to a
the preprocessor. (#1390)
macro-variable defined on the command-line, using the `-D` syntax.
(#1696)
- 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
(#1696)
macro-processed file (see below).
- New option `linemacro` to revert to the old format of the
- Preprocessor outputs and inputs
macro-processed file (see below).
- Added JSON output to the preprocessor. A representation of the model file
- Preprocessor outputs and inputs
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,
- Added JSON output to the preprocessor. A representation of the model file
Python, Julia, MATLAB, Octave…). This new feature opens the possibility to
and the whole content of the `.mod` file is saved in `.json` files.
develop alternative back-ends for the Dynare language.
These JSON files can be easily parsed from any language (C++, Fortran,
Python, Julia, MATLAB, Octave…). This new feature opens the possibility to
- :warning: Most files generated by the preprocessor are now grouped under
develop alternative back-ends for the Dynare language.
two subdirectories. Assuming your file is `FILENAME.mod`, then M-files
and MEX-files will be under `+FILENAME/`, while other output (JSON,
- :warning: Most files generated by the preprocessor are now grouped under
LaTeX, source code for the MEX files) will be under `FILENAME/`.
two subdirectories. Assuming your file is `FILENAME.mod`, then M-files
and MEX-files will be under `+FILENAME/`, while other output (JSON,
- The macro-generated output is now more readable (no more line numbers and
LaTeX, source code for the MEX files) will be under `FILENAME/`.
empty lines). The old behaviour can be restored using the `linemacro`
option (see above).
- The macro-generated output is now more readable (no more line numbers and
empty lines). The old behaviour can be restored using the `linemacro`
- Ability to call the preprocessor by passing the `.mod` file as a string
option (see above).
argument from the macOS or GNU/Linux command line. (#1509)
- Ability to call the preprocessor by passing the `.mod` file as a string
- dseries classes
argument from the macOS or GNU/Linux command line. (#1509)
- New functionalities and efficiency improvements.
- dseries classes
- Complete rewrite using the new `classdef` syntax and exploiting in place
- New functionalities and efficiency improvements.
modifications when possible.
- Complete rewrite using the new `classdef` syntax and exploiting in place
- Integration of the `dates` classes within `dseries`.
modifications when possible.
- Reporting classes
- Integration of the `dates` classes within `dseries`.
- Automatically create titlepage with page numbers/page titles.
- Reporting classes
- Allow for the removal of headers and footers from a given page.
- Automatically create titlepage with page numbers/page titles.
- Allow user to set page number.
- Allow for the removal of headers and footers from a given page.
- Split up report output. Create new files for the preamble, the body of
- Allow user to set page number.
the report, and each individual page of the report.
- Split up report output. Create new files for the preamble, the body of
- The classes have been converted to the new `classdef` syntax.
the report, and each individual page of the report.
- Misc
- The classes have been converted to the new `classdef` syntax.
- External functions can be located in MATLAB/Octave namespaces. (#1639)
- Misc
- Improvements to the balanced growth path test that is performed after
- External functions can be located in MATLAB/Octave namespaces. (#1639)
Dynare has detrended the model (given the trends on variables declared by
the user): the default tolerance has been raised, and a different value
- Improvements to the balanced growth path test that is performed after
can be set with new option `balanced_growth_test_tol` to the `model`
Dynare has detrended the model (given the trends on variables declared by
block; as a consequence, failing the test is now an error again. (#1389)
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`
- New collection of MATLAB/Octave utilities to retrieve and alter objects:
block; as a consequence, failing the test is now an error again. (#1389)