This page documents the new features in Dynare. For previous versions of Dynare, please read the dedicated frozen page on the DynareWiki.
Dynare 4.6

The perturbation method is now available at an arbitrary approximation order. In other words, the
order
option ofstoch_simul
accepts an arbitrary positive integer (of course, up to some modelspecific computational limit) (see #217 (closed) for details) 
(Nonlinear) estimation is also now available at an arbitrary approximation order (#1673)

Improvements to
identification
command: added minimal system identification check of Komunjer and Ng (2011, Econometrica)
 added spectrum identification check of Qu and Tkachenko (2012, Quantitative Economics)
 all tests (moments, spectrum, minimal system, strength) can be turned off
 more numerical options which can be changed by the user
 improved printing and storage (same folder) of results
 fixed numerical derivatives
 fixed functionality when there is correlation of shocks or one wants to consider corr parameters for both analytical as well as numerical derivatives
 Reference: !1648 (merged)

Optimal policy

⚠ Theramsey_policy
command is now deprecated. It is superseded by calls toramsey_policy
,stoch_simul
, andevaluate_planner_objective
(see https://git.dynare.org/Dynare/dynare/wikis/BreakingFeaturesIn4.6)  New command
evaluate_planner_objective
to compute the value of theplanner_objective
(#1678 (closed))  New option
planner_discount_latex_name
oframsey_policy
(#1686 (closed))


Improvements to option
use_dll
: compilation is now faster on large models (by disabling targeted optimization flags in the compiler)
 it is no longer necessary to configure MATLAB for compiling MEX files, since the compilation is done by the preprocessor; on Windows, a suitable compiler (MinGW) ships with the Dynare installer; on other platforms, GCC must be in the path

Improvements to perfect foresight simulation and extended path: a significant speed improvement should be noted on large models (when neither
bytecode
norblock
option is used). The stacked problem is now constructed using a MEX file that greatly speeds up the process (in particular, the time spent in that step can become negligible when theuse_dll
option is used). 
Various improvements to particle filters (TO BE DETAILED)

Options
solve_algo=7
,stack_solve_algo=2
andmode_compute=1
now work under Octave 
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 ofcontrolled_varexo
matters: if the second endogenous variable is controlled for less periods than the first one, the secondcontrolled_varexo
isn't set for the last periods. (see #699 (closed)) 
Added JSON output to the preprocessor. A representation of the model file and the whole content of the
*.mod
file is saved in*.json
files. These JSON files can be easily parsed from any language (C++, Fortran, Python, Julia, Matlab, ...). This new feature opens the possibility to develop alternative backends for the Dynare language. 
Added the possibility to declare Dynare command options in the mod file.

Discretionary policy returns a more informative error message when the objective has nonzero derivatives with respect to some variables. (!1468 (merged))

write_latex_static_model
andwrite_latex_original_model
now support thewrite_equation_tags
option (#1431 (closed)) 
The
calib_smoother
command now take the optionparameter_set
(#1477 (closed)) 
New command
model_local_variable
that allows defining LaTeXexpressions for modellocal variables (#563 (closed)) 
Always write
M_.state_var
, independently of what commands are issued (#637 (closed)) 
New commandline option
nopreprocessoroutput
(#1390 (closed)) 
New command
write_latex_steady_state_model
(#1496 (closed)) 
Ability to call the preprocessor by passing the
.mod
file as a string argument from the macOS or GNU/Linux command line (#1509 (closed)) 
Variance decomposition of observables now accounts for measurement error (#1486 (closed))

New dynare option
noemptylinemacro
(#1551 (closed)) 
The Macro processor has been rewritten
 New features

elseif
clauses are now supported  a
defined()
function allows testing whether macro variables have been defined  Empty arrays (with the
[]
syntax) are now possible (#707 (closed))  Arrays of arrays are now possible
 New types: Double, Tuple, Function
 New macro directives
@#echomacrovars
and@#echomacrovars(save)
(#1564 (closed))  Inline comments are now supported
 Support for comprehensions


⚠ Breaking changes
⚠ All division operations are now done with doubles (as opposed to integers). To achieve the old functionality, use the newfloor
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 print1
or0
. Now, it printstrue
orfalse
. To achieve the old functionality, you must cast it to a real, e.g.@{(real)(1!=0)}

 New features

Dseries and Reporting have been rewritten using the Matlab/Octave
classdef
syntax 
The
dynare_sensitivity
command now accepts thediffuse_filter
option (!1562 (merged)) 
Added debugging info on NaN and Inf parameters (!1538 (closed))

Shock decomposition:
 Added
fast_realtime
option to real time shock decomposition (deactivated by default, runs the smoother only twice: once for the last insample and once for the last outofsample data point) (!1563 (closed)) and (!1552 (closed))  Added
diff
,flip
andmax_nrows
options toplot_shock_decomposition
(#1649 (closed), !1655 (merged))  Options
plot_init_date
andplot_end_date
ofplot_shock_decomposition
are now documented (see 74e7c12d)  New
initial_decomposition_decomposition
command, for computing and plotting the decomposition of the effect of smoothed initial conditions of state variables (#1586 (closed))  New
squeeze_shock_decomposition
command, for removing decompositions of variables that are not of interest (!1655 (merged))  New
with_epilogue
option (common toshock_decomposition
,realtime_shock_decomposition
andinitial_condition_decomposition
) (!1688 (merged))
 Added

New syntax to declare model variables in the
model
block (#1386 (closed)) 
Added option
mh_tune_jscale
inestimation
for tuning the scale parameter of the proposal distribution of the Random Walk Metropolis Hastings. 
Allow for onthefly variable declaration in equation tags (see 01d5a130)

⚠ Previously, when some MEX files were missing, Dynare would automatically use a slower Mfile functional alternative; this is no longer the case. It is however still possible to manually add these alternatives in the MATLAB path (they are located undermatlab/missing/mex
; this only applies to themjdgges
,gensylv
,A_times_B_kronecker_C
,sparse_hessian_times_B_kronecker_C
andlocal_state_space_iteration_2
DLLs) 
⚠ Most files generated by the preprocessor are now grouped under two subdirectories. Assuming your file isFILENAME.mod
, then Mfiles and MEXfiles will be under+FILENAME/
, while other output (JSON, LaTeX, source for MEX files) will be underFILENAME/

options
print
andnoprint
added toperfect_foresight_solver
(#1647 (closed)) 
External functions can be located in matlab namespaces (#1639 (closed))

Can pass expressions as intervals to
irf_calibration
andmoment_calibration
.
⚠ This breaks the previous syntax, requiring that the lower/upper bound be separated by commas (preprocessor#12 (closed))


Improvements to the balanced growth test path: default tolerance has been raised, a different value can be set with new option
balanced_growth_test_tol
to themodel
block; as a consequence, failing the test is now an error again (#1389 (closed)) 
The undocumented
linear
option ofstoch_simul
has been removed 
⚠ The results ofconditional_forecast
command is now saved inoo_
(used to be in a file; see #1672 (closed)) 
New suite of
get
andset
utilities to retrieve and alter objects (!1686 (merged)).
⚠ Theget_param_by_name
andset_param_value
have been merged into the more general suite ofget
andset
utilities


New option
filtered_theoretical_moments_grid
ofstoch_simul
, that supersedeshp_ngrid
Dynare 4.5

Ramsey policy

Added command
ramsey_model
that builds the expanded model with FOC conditions for the planner's problem but doesn't perform any computation. Useful to compute Ramsey policy in a perfect foresight model and for estimation, 
ramsey_policy
accepts multipliers in its variable list and displays results for them (#1355 (closed)).


Perfect foresight models

New commands
perfect_foresight_setup
(for preparing the simulation) andperfect_foresight_solver
(for computing it). The oldsimul
command still exist and is now an alias forperfect_foresight_setup
+perfect_foresight_solver
. It is no longer possible to manipulate by hand the contents ofoo_.exo_simul
when usingsimul
. People who want to do it must first callperfect_foresight_setup
, then do the manipulations, then callperfect_foresight_solver
, 
By default, the perfect foresight solver will try a homotopy method if it fails to converge at the first try. The old behavior can be restored with the
no_homotopy
option, 
New option
stack_solve_algo=7
that allows specifying asolve_algo
solver for solving the model, 
New option
solve_algo
that allows specifying a solver for solving the model when usingstack_solve_algo=7
, 
New option
lmmcp
that solves the model via a LevenbergMarquardt mixed complementarity problem (LMMCP) solver, 
New option
robust_lin_solve
that triggers the use of a robust linear solver for the defaultsolve_algo=4
, 
New options
tolf
andtolx
to control termination criteria of solvers, 
New option
endogenous_terminal_period
tosimul
, 
Added the possibility to set the initial condition of the (stochastic) extended path simulations with the histval block.


Optimal simple rules

Saves the optimal value of parameters to
oo_.osr.optim_params
, 
New block
osr_params_bounds
allows specifying bounds for the estimated parameters, 
New option
opt_algo
allows selecting different optimizers while the new optionoptim
allows specifying the optimizer options, 
The
osr
command now saves the names, bounds, and indices for the estimated parameters as well as the indices and weights of the variables entering the objective function intoM_.osr
.


Forecasts and Smoothing

The smoother and forecasts take uncertainty about trends and means into account (#679 (closed)),

Forecasts accounting for measurement error are now saved in fields of the form
HPDinf_ME
andHPDsup_ME
(#853 (closed)), 
New fields
oo_.Smoother.Trend
andoo_.Smoother.Constant
that save the trend and constant parts of the smoothed variables, 
new field
oo_.Smoother.TrendCoeffs
that stores the trend coefficients. 
Rolling window forecasts allowed in
estimation
command by passing a vector tofirst_obs
, 
The
calib_smoother
command now accepts theloglinear
,prefilter
,first_obs
andfilter_decomposition
options.


Estimation

New options:
logdata
,consider_all_endogenous
,consider_only_observed
,posterior_max_subsample_draws
(#567 (closed)),mh_conf_sig
(#598 (closed)),diffuse_kalman_tol
(!865 (closed)),dirname
(#910 (closed)),nodecomposition

load_mh_file
andmh_recover
now try to load chain's proposal density (!1230 (merged)), 
New option
load_results_after_load_mh
that allows loading some posterior results from a previous run if no new MCMC draws are added (!1352 (merged)), 
New option
posterior_nograph
that suppresses the generation of graphs associated with Bayesian IRFs, posterior smoothed objects, and posterior forecasts, 
Saves the posterior density at the mode in
oo_.posterior.optimization.log_density
, 
The
filter_covariance
option now also works with posterior sampling like MetropolisHastings, 
New option
no_posterior_kernel_density
to suppress computation of kernel density of posterior objects, 
Recursive estimation and forecasting now provides the individual
oo_
structures for each sample inoo_recursive_
, 
The
trace_plot
command can now plot the posterior density, 
New command
generate_trace_plots
allows generating all trace plots for one chain (!1239 (closed)), 
New commands
prior_function
andposterior_function
that execute a userdefined function on parameter draws from the prior/posterior distribution (!871 (merged)), 
New option
huge_number
for replacement of infinite bounds with large number duringmode_compute
, 
New option
posterior_sampling_method
allows selecting the new posterior sampling options:tailored_random_block_metropolis_hastings
(Tailored randomized block (TaRB) MetropolisHastings),slice
(Slice sampler),independent_metropolis_hastings
(Independent MetropolisHastings), 
New option
posterior_sampler_options
that allow controlling the options of theposterior_sampling_method
; itsscale_file
option pair allows loading the_mh_scale.mat
file storing the tuned scale factor from a previous run ofmode_compute=6
(!1223 (closed)), 
New option
raftery_lewis_diagnostics
that computes Raftery/Lewis (1992) convergence diagnostics, 
New option
fast_kalman_filter
that provides fast Kalman filter using Chandrasekhar recursions as described in Ed Herbst (2015), 
The
dsge_var
option now saves results at the posterior mode intooo_.dsge_var
, 
New option
smoothed_state_uncertainty
to provide the uncertainty estimate for the smoothed state estimate from the Kalman smoother (!1324 (merged)), 
New prior density: generalized Weibull distribution,

Option
mh_recover
now allows continuing a crashed chain at the last save mhfile, 
New option
nonlinear_filter_initialization
for theestimation
command. Controls the initial covariance matrix of the state variables in nonlinear filters. 
The
conditional_variance_decomposition
option now displays output and stores it as a LaTeXtable when theTeX
option is invoked, 
The
use_calibration
toestimated_params_init
now also works with ML, 
Improved initial estimation checks.


Steady state

The default solver for finding the steady state is now a trustregion solver (can be triggered explicitly with option
solve_algo=4
), 
New options
tolf
andtolx
to control termination criteria of solver, 
The debugging mode now provides the termination values in steady state finding.


Stochastic simulations

New options
nodecomposition
, 
New option
bandpass_filter
to compute bandpassfiltered theoretical and simulated moments, 
New option
one_sided_hp_filter
to compute onesided HPfiltered simulated moments, 
stoch_simul
displays a simulated variance decomposition when simulated moments are requested, 
stoch_simul
saves skewness and kurtosis into respective fields ofoo_
when simulated moments have been requested, 
stoch_simul
saves the unconditional variance decomposition inoo_.variance_decomposition
, 
New option
dr_display_tol
that governs omission of small terms in display of decision rules, 
The
stoch_simul
command now prints the displayed tables as LaTeX code when the newTeX
option is enabled, 
The
loglinear
option now works with lagged and leaded exogenous variables like news shocks, 
New option
spectral_density
that allows displaying the spectral density of (filtered) endogenous variables, 
New option
contemporaneous_correlation
that allows saving contemporaneous correlations in addition to the covariances.


Identification

New options
diffuse_filter
andprior_trunc
, 
The
identification
command now supports correlations via simulated moments,


Sensitivity analysis

New blocks
irf_calibration
andmoment_calibration
, 
Outputs LaTeX tables if the new
TeX
option is used, 
New option
relative_irf
toirf_calibration
block.


Conditional forecast
 Command
conditional_forecast
now takes into accounthistval
block if present.
 Command

Shock decomposition

New option
colormap
toshocks_decomposition
for controlling the color map used in the shocks decomposition graphs, 
shocks_decomposition
now accepts thenograph
option, 
New command
realtime_shock_decomposition
that for each periodT= [presample,...,nobs]
allows computing the:
realtime historical shock decomposition
Y(tT)
, i.e. without observing data in[T+1,...,nobs]

forecast shock decomposition
Y(T+kT)

realtime conditional shock decomposition
Y(T+kT+k)Y(T+kT)


New block
shock_groups
that allows grouping shocks for theshock_decomposition
andrealtime_shock_decomposition
commands, 
New command
plot_shock_decomposition
that allows plotting the results fromshock_decomposition
andrealtime_shock_decomposition
for different vintages and shock groupings.


Macroprocessor

Can now pass a macrovariable to the
@#include
macro directive, 
New preprocessor flag
I
, macro directive@#includepath
, and dynare config file block[paths]
to pass a search path to the macroprocessor to be used for file inclusion via@#include
.


Command line

New option
onlyclearglobals
(do not clear JIT compiled functions with recent versions of Matlab), 
New option
minimal_workspace
to use fewer variables in the current workspace, 
New option
params_derivs_order
allows limiting the order of the derivatives with respect to the parameters that are calculated by the preprocessor, 
New command line option
mingw
to support the MinGWw64 C/C++ Compiler from TDMGCC foruse_dll
(#1226 (closed)).


dates/dseries/reporting classes

New methods
abs
,cumprod
andchain
, 
New option
tableRowIndent
toaddTable
, 
Reporting system revamped and made more efficient, dependency on matlab2tikz has been dropped.


Optimization algorithms

mode_compute=2
Uses the simulated annealing as described by Corana et al. (1987), 
mode_compute=101
Uses SOLVEOPT as described by Kuntsevich and Kappel (1997), 
mode_compute=102
Usessimulannealbnd
from Matlab's Global Optimization Toolbox (if available), 
New option
silent_optimizer
to shut off output from mode computing/optimization, 
New options
verbosity
andSaveFiles
to control output and saving of files during mode computing/optimization.


LaTeX output

New command
write_latex_original_model
, 
New option
write_equation_tags
towrite_latex_dynamic_model
that allows printing the specified equation tags to the generate LaTeX code (#477 (closed)), 
New command
write_latex_parameter_table
that writes the names and values of model parameters to a LaTeX table, 
New command
write_latex_prior_table
that writes the descriptive statistics about the prior distribution to a LaTeX table, 
New command
collect_latex_files
that creates one compilable LaTeX file containing all TeXoutput.


Misc.

Provides 64bit preprocessor,

Introduces new path management to avoid conflicts with other toolboxes,

Full compatibility with Matlab 2014b's new graphic interface,

When using
model(linear)
, Dynare automatically checks whether the model is truly linear, 
usedll
: themsvc
option now supportsnormcdf
,acosh
,asinh
, andatanh
(#1259 (closed)), 
New parallel option
NumberOfThreadsPerJob
for Windows nodes that sets the number of threads assigned to each remote MATLAB/Octave run (!1357 (merged)), 
Improved numerical performance of
schur_statespace_transformation
for very large models, 
The
all_values_required
option now also works withhistval
, 
Add missing
horizon
option toms_forecast
, 
BVAR now saves the marginal data density in
oo_.bvar.log_marginal_data_density
and stores prior and posterior information inoo_.bvar.prior
andoo_.bvar.posterior
.
