Dear Dynare friends,We are pleased to announce the release of Dynare
4.6.0.
This major release adds new features and fixes various bugs.
The Windows, macOS and source packages are already available for
download at the Dynare website.
All users are strongly encouraged to upgrade.
This release is compatible with MATLAB versions ranging from 7.9
(R2009b) to 9.7 (R2019b), and with GNU Octave versions 5.2.0 (under
Windows) and 4.4.1 (under macOS).
Major user-visible changes
Stochastic simulations
The perturbation method is now available at an arbitrary approximation
order. In other words, the order option of stoch_simul accepts an
arbitrary positive integer (of course, up to some model-specific
computational limit).
New option filtered_theoretical_moments_grid of stoch_simul, that
supersedes hp_ngrid.
Estimation
Nonlinear estimation is now also available at an arbitrary
approximation order. In other words, the order option of estimation
accepts an arbitrary positive integer (of course, up to some model-
specific computational limit).
Various improvements to particle filters.
It is now possible to estimate models under optimal policy (see below).
Variance decomposition of observables now accounts for measurement
error.
New option mh_tune_jscale of estimation command for tuning the scale
parameter of the proposal distribution of the Random Walk Metropolis
Hastings.
Added debugging info when parameters take a NaN or Inf value.
Option mode_compute=1 is now available under Octave.
Perfect foresight and extended path
A significant speed improvement should be noted on large models (when
neither bytecode nor block
option is used). The stacked problem is now constructed using a
dedicated machine-compiled library that greatly speeds up the process
(in particular, the time spent in that step can become negligible when
the use_dll option is used).
New options print and noprint of perfect_foresight_solver command.
Option stack_solve_algo=2 is now available under Octave.
Steady state
Option solve_algo=7 is now available under Octave.
Optimal policy
The ramsey_policy command is now deprecated. It is superseded by
successive calls to ramsey_model, stoch_simul, and
evaluate_planner_objective (in this order).
It is now possible to estimate a model under optimal policy (either
Ramsey or discretionary) by running the estimation command after either
ramsey_model or discretionary_policy. It is however not yet possible to
estimate parameters that appear in the discount factor of the social
planner.
Discretionary policy returns a more informative error message
when the objective has nonzero derivatives with respect to some
variables.
Identification
Added minimal system identification check of Komunjer and Ng (2011).
Added spectrum identification check of Qu and Tkachenko (2012).
Identification is now also available for approximation orders 2
and 3 with either analytical or numerical parameter derivatives. The
relevant moments and spectrum are computed from the pruned state space
system as in Mutschler (2015).
All tests (moments, spectrum, minimal system, strength) can be turned
off.
More numerical options can be changed by the user.
Improved printing and storage (same folder) of results.
Sensitivity analysis
New diffuse_filter option to the dynare_sensitivity command.
Arbitrary expressions can now be passed for the interval boundaries in
irf_calibration and moment_calibration. ⚠ This breaks the previous
syntax, requiring that the lower/upper bounds be separated by commas.
Forecasting and smoothing
In conditional_forecast_paths, it is no longer
required that all constrained paths be of the same length. There may
now
be a different number of controlled variables at each period. In that
case, the order of declaration of endogenous controlled variables and
of
controlled_varexo matters: if the second endogenous variable is
controlled for less periods than the first one, the second
controlled_varexo isn't set for the last periods.
New option parameter_set to the calib_smoother command.
⚠ The results of conditional_forecast command is now saved in oo_ (used
to be in a file)
Shock decomposition
Added fast_realtime option to real time shock
decomposition (deactivated by default, runs the smoother only twice:
once for the last in-sample and once for the last out-of-sample data
point).
New diff, flip, max_nrows, plot_init_date and plot_end_date options to
plot_shock_decomposition.
New initial_decomposition_decomposition command, for computing and
plotting the decomposition of the effect of smoothed initial conditions
of state variables.
New squeeze_shock_decomposition command, for removing decompositions of
variables that are not of interest.
New with_epilogue option (common to shock_decomposition,
realtime_shock_decomposition and initial_condition_decomposition).
New init2shocks block to attribute initial conditions to shocks.
Macro processor
New object types: real (supersedes integers), boolean (distinct from
integers), tuple, user-defined function.
New operators: various mathematical functions, set operations on
arrays (union, intersection, difference, cartesian power and product),
type checking and conversion.
Added support for comprehensions (e.g. the set containing the squares
of all even numbers between 1 and 5 can be constructed with [ i^2 for i
in 1:5 when mod(i,2) == 0]).
User-defined functions can be declared using the @#define operator
(e.g. @#define f(x) = 2*x^2+3*x+5).
@#elseif-clauses are now supported in conditional statements.
@#for loops can iterate over several variables at the same time (e.g.
@#for (i,j) in X, where X is an array containing tuples of size 2).
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 numbers between 1 and 5).
A defined() function allows testing whether macro variables have been
defined.
Empty arrays (with the [] syntax) are now possible.
Arrays of arrays are now supported.
New macro directives @#echomacrovars and @#echomacrovars(save) for
displaying or saving the values of all macro-variables.
Inline comments are now supported.
⚠ All division operations are now done with doubles (as opposed to
integers). To achieve the old functionality, use the new floor
operator.
⚠ Colon syntax used to require braces around it to create an array
(e.g. [1:3] would create [1,2,3]). Now this is not necessary (1:3
creates [1,2,3] while [1:3] would create [[1,2,3]]).
⚠ Previously, printing a boolean would print 1 or 0. Now, it prints
true or false. To achieve the old functionality, you must cast it to a
real, e.g. @{(real)(1!=0)}.
LaTeX output
New command write_latex_steady_state_model.
New option planner_discount_latex_name of ramsey_model and
discretionary_policy.
New command model_local_variable command for assigning a LaTeX name to
model-local variables.
The write_latex_static_model and write_latex_original_model commands
now support the write_equation_tags option.
Compilation of the model (use_dll option) made easier and faster
Under Windows, it is no longer necessary to manually install the
compiler, since the latter is now shipped by the Dynare installer.
Under macOS, the Dynare installer now automatically downloads and
installs the compiler.
It is no longer necessary to configure MATLAB to let it know
where the compiler is, since the compilation is now done by the
preprocessor.
The compilation phase is now faster on large models (this has
been achieved by disabling a few time-consuming and not-so-useful
optimization passes otherwise done by the compiler).
New compilation_setup block for specifying a custom compiler or custom
compilation flags.
Model, variables and parameters declaration
New syntax to declare model variables and parameters on-the-fly in the
model block. To do this, simply follow the symbol name with a vertical
line (|, pipe character) and either an e, an x, or a p. For example, to
declare a parameter named alpha in the model block, you could write
alpha|p directly in an equation where it appears. Similarly, to declare
an endogenous variable c in the model block you could write c|e.
New syntax to declare model variable and parameters on-the-fly in
equation tags. In the tag, simply state the type of variable to be
declared (endogenous, exogenous, or parameter followed by an equal sign
and the variable name in single quotes. Hence, to declare a variable c
as endogenous in an equation tag, you can type [endogenous='c'].
New epilogue block for computing output variables of interest that may
not be necessarily defined in the model (e.g. various kinds of
real/nominal shares or relative prices, or annualized variables out of
a quarterly model).
Command-line options
Added the possibility to declare Dynare command-line options in the
.mod file.
New option nopreprocessoroutput to disable printing of messages from
the preprocessor.
It is now possible to assign an arbitrary macro-expression to a macro-
variable defined on the command-line, using the -D syntax.
New option linemacro to revert to the old format of the macro-processed
file (see below).
Preprocessor outputs and inputs
Added JSON output to the preprocessor. A representation of the model
file and the whole content of the .mod file is saved in .json
files. These JSON files can be easily parsed from any language (C++,
Fortran, Python, Julia, MATLAB, Octave…). This new feature opens the
possibility to develop alternative back-ends for the Dynare language.
⚠ Most files generated by the preprocessor are now grouped under two
subdirectories. Assuming your file is FILENAME.mod, then M-files and
MEX-files will be under +FILENAME/, while other output (JSON, LaTeX,
source code for the MEX files) will be under FILENAME/.
The macro-generated output is now more readable (no more line
numbers and empty lines). The old behaviour can be restored using the
linemacro option (see above).
Ability to call the preprocessor by passing the .mod file as a string
argument from the macOS or GNU/Linux command line.
dseries classes
New functionalities and efficiency improvements.
Complete rewrite using the new classdef syntax and exploiting in place
modifications when possible.
Integration of the dates classes within dseries.
Reporting classes
Automatically create titlepage with page numbers/page titles.
Allow for the removal of headers and footers from a given page.
Allow user to set page number.
Split up report output. Create new files for the preamble, the body of
the report, and each individual page of the report.
The classes have been converted to the new classdef syntax.
Misc
External functions can be located in MATLAB/Octave namespaces.
Improvements to the balanced growth path test that is performed
after Dynare has detrended the model (given the trends on variables
declared by the user): the default tolerance has been raised, and a
different value can be set with new option balanced_growth_test_tol to
the model block; as a consequence, failing the test is now an error
again.
New collection of MATLAB/Octave utilities to retrieve and alter
objects: get_irf, get_mean, get_shock_stderr_by_name, get_smooth,
get_update, set_shock_stderr_value.
⚠ Previously, when some MEX files were missing, Dynare would
automatically fall back to slower M-file functional alternative; this
is
no longer the case. It is however still possible to manually add
these
alternatives in the MATLAB/Octave path (they are located under
matlab/missing/mex; this only applies to the mjdgges, gensylv,
A_times_B_kronecker_C, sparse_hessian_times_B_kronecker_C and
local_state_space_iteration_2 DLLs).
Since there are a few backward-incompatible changes in this release,
users may want to have a look at the upgrade guide to adapt their
existing codes.
Bugs that were present in 4.5.7 and that are fixed in 4.6.0
Estimation: the check for stochastic singularity erroneously would only
take estimated measurement error into account.
Estimation: if the Hessian at the mode was not positive definite,
the Laplace approximation returned a complex number, but only
displayed
the real-valued part.
Conditional Forecasting: using one period only would result in a crash.
First-order approximation was not working with purely forward-looking
models.
The preprocessor would not allow for inline comments including macro
statements.
Using the STEADY_STATE() operator on exogenous variables would lead to
crashes in stochastic simulations.
moment_calibration: for autocorrelation functions, the x-axis labeling
had the wrong order.
plot_identification: placement of white dots indicating infinite values
was incorrect
Automatic detrending would sometime refuse to detrend model despite the
user having given correct trends.
Using use_dll + fast options would not always recompile the model when
the equations were changed.
Under certain circumstances, the combination of bytecode and
stack_solve_algo=1 options could lead to crashes or wrong results.
References
Komunjer, I. and S. Ng (2011), “Dynamic Identification of Dynamic
Stochastic General Equilibrium Models,” Econometrica, 79(6), 1995–2032
Qu, Z. and D. Tkachenko (2012), “Identification
and frequency domain quasi‐maximum likelihood estimation of
linearized
dynamic stochastic general equilibrium models,” Quantitative Economics,
3(1), 95–132
Mutschler, W. (2015), “Identification of DSGE models—The effect of
higher-order approximation and pruning,” Journal of Economic Dynamics
and Control, 56, 34–54
For the Dynare Team,
--
Sébastien Villemot
Economist at CEPREMAP
Dynare developer
https://sebastien.villemot.name
Dear Friends,
This year the Dynare Summer School will take place from July 6-10,
2020.
It will be hosted by the Banque de France in Paris, France. The courses
will focus on the simulation and estimation of DSGE models with Dynare.
The invited speaker will be Edward Herbst of the Federal Reserve Board
of Governors.
More information is available on our website:
https://www.dynare.org/events/dynare-summer-school-2020-applications-open
If interested, you can apply by sending a CV and a recent research
paper (PDFs only) to school(a)dynare.org no later than April 15, 2020.
Best,
--
Sébastien Villemot
Economist at CEPREMAP
Dynare developer
https://sebastien.villemot.name
The Dynare project at CEPREMAP is hiring a research software engineer.
Dynare is a leading economic modeling software that can handle a wide
class of economic models, in particular dynamic stochastic general
equilibrium (DSGE) models. Dynare is widely used in the academic world
for research and teaching purposes, and in various public and private
bodies for performing policy analysis exercises and as a support tool
for forecasting exercises.
The offered job consists in:
designing algorithms, or adapting existing ones, for solving a wide
array of problems that arise when solving or estimating economic
modelswriting the software implementation of these algorithmsfixing
software bugsinteracting with users on the various user support
channelsgiving training sessions at the annual Dynare Summer School
(and possibly during other events)
The ideal candidate would have skills in the following fields:
macroeconomic modeling (in particular DSGE models)econometrics (in
particular time series and Bayesian techniques)applied mathematics
(especially numerical linear algebra)computer science (basic
algorithmics)computer programming
Experience in all these fields is not a strict requirement, but the
candidate is expected to display strong abilities to learn autonomously
in the areas where he/she lacks knowledge.
Since Dynare is written in MATLAB, Octave, C++ and Julia, some
experience with at least one of these programming languages (or with
another scientific programming language, such as Fortran, Python or R)
is a requirement. A familiarity with Git (the distributed version-
control system) is an asset, since that technology is used for managing
the source code of Dynare.
Holding a PhD in economics, computer science or applied mathematics is
an asset but is not required.
Depending on the candidate’s profile, a given percentage of the work
time could be dedicated to the pursuit of his/her personal research
projects.
The job is based in Paris, France. The CEPREMAP premises are on the
same campus as École Normale Supérieure (campus Jourdan) and Paris
School of Economics, which provide a stimulating intellectual
environment, with many world-class researchers in economics on-site and
the possibility of attending several research seminars in economics.
Knowledge of French is not a requirement.
The position is a fixed-term one year contract, starting in fall 2019.
It may be renewed or converted into a permanent position, depending on
the direction taken by the project.
Salary depends on qualification and experience.
Applications, with a resume, an example computer program and possibly a
research paper, should be sent to: recruitment(a)dynare.org
--
Sébastien Villemot
Economist at CEPREMAP
Dynare developer
http://sebastien.villemot.name
The 15th annual DYNARE Conference (http://www.dynare.org) will be held
at the Univeristy of Lausanne, Switzerland, on September 9-10, 2019. The conference
is organized by HEC Lausanne, together
with Banque de France, DSGE-net and the Dynare project at CEPREMAP.
The DYNARE conference will feature the work of leading scholars in
dynamic macroeconomic modeling and provide an excellent opportunity to
present your own research results.
Morten Ravn (University College London) and Gianluca Violante (Princeton University) will be plenary speakers.
This year’s conference focuses on “heterogeneity” of e.g. households,
firms, information, expectations, banks and financial intermediaries, etc.
Submissions of papers dealing with different aspects of DSGE modeling
and computational methods are welcome. Papers using other software
tools than DYNARE or theoretical contributions are also encouraged.
Paper submission procedure: please submit a complete manuscript or a
detailed abstract in PDF format at http://dynare.mjui.fr
You need first to create an account on that server if you don't have
one from last year.
Deadline for submissions is May 15, 2019. Authors of accepted papers
will be informed by June 15, 2019.
Accepted papers will be automatically considered for publication in
the Dynare Working Papers series (http://www.dynare.org/wp)
conditional on the agreement of the submitter. Note that publication
in the Dynare WP does not prohibit submission to another working paper
series.
Contact: conference(a)dynare.org<mailto:conference@dynare.org>
Conference organizers: Stéphane Adjemian (U. du Mans), Philippe Bacchetta (U. Lausanne), Kenza Benhima
(U. Lausanne), Florin Bilbiie (U. Lausanne), Michel Juillard (Banque
de France), Simon Scheidegger (U. Lausanne).
--
Michel Juillard
Dear Dynare users and friends,
We are pleased to announce the release of Dynare 4.5.7.
This is a bugfix release.
The Windows and MacOS packages are already available for download at:
https://www.dynare.org/download/
The GNU/Linux packages (for Debian and Ubuntu LTS) should follow soon.
This release is compatible with MATLAB versions 7.5 (R2007b) to 9.4 (R2018b)
and with GNU Octave version 4.4.1
Here is a list of the problems identified in version 4.5.6 and that have been
fixed in version 4.5.7:
- The mex-file conducting the QZ decomposition erroneously applied
the `qz_criterium` to the square absolute value of eigenvalues
instead of the absolute value itself (as done in mjdgges.m and the
AIM solver).
- In pathological cases, `mode_compute=5` (`newrat`) might enter an
infinite loop.
- `discretionary_policy` might erroneously state that the derivatives
of the objective function are non-zero if there are NaN present.
- Dynare++, when conducting the QZ decomposition, erroneously applied
the `qz_criterium` to the square absolute value of eigenvalues
instead of the absolute value itself.
- Dynare++: IRFs were incorrectly computed.
- `dynare_sensitivity` did not display the figures of
`irf_calibration`, it only stored them on the disk.
- Scatter plots generated by `dynare_sensitivity` did not correctly
display LaTeX names.
- Parameter updating via steady state files did not correctly work in
case of using [static]/[dynamic] equation tags.
- Memory leaks in `k_order_pert` (used by higher order stochastic
simulations) could lead to crashes.
- Predetermined variables were not properly set when used in model
local variables.
- Posterior moment computation did not correctly update the
covariance matrix of exogenous shocks during posterior sampling.
- Dynare was crashing with a cryptic message if a non estimated
parameter was initialized in the `estimated_params_init` block.
- The `forecast` command crashed if the model was declared as linear
and contained deterministic exogenous variables.
- Block decomposition is broken when used in conjunction with
`varexo_det`.
- The model was not correctly specified when `identification` was run
without another stochastic command in the `.mod` file
(e.g. `estimation`, `stoch_simul`, etc.).
- Realtime annualized shock decompositions added the wrong steady state
value.
- `mh_recover` option crashed when using slice sampler.
- x-axis values in plots of moment restrictions were wrong for
autocovariances.
On behalf of the Dynare Team,
Stéphane.
Dear Friends,
This year the Dynare Summer School will be hosted, from June 3 to June
7, 2019, by École Normale Supérieur (Campus Jourdan). The courses will
focus on simulation and estimation of DSGE models with Dynare. The
invited speaker will be Thomas Winberry from the University of Chicago
Booth School of Business.
More informations is available on our website:
https://www.dynare.org/events/dynare-summer-school-2019-applications-open
Applications should be sent to school(a)dynare.org (with a CV and a recent
research paper attached as PDFs) no later than April 7th, 2019.
Best,
Stéphane.
Dear Dynare users and friends,
We are pleased to announce the release of Dynare 4.5.6.
This is a bugfix release.
The Windows packages are already available for download at:
http://www.dynare.org/download/dynare-stable
The Mac and GNU/Linux packages (for Debian and Ubuntu LTS) should follow soon.
This release is compatible with MATLAB versions 7.5 (R2007b) to 9.3 (R2018a)
and with GNU Octave versions 4.4.
Here is a list of the problems identified in version 4.5.5 and that have been
fixed in version 4.5.6:
- TaRB sampler: incorrect last posterior was returned if the last draw was
rejected.
- Fixed online particle filter by drawing initial conditions in the prior
distribution.
- Fixed evaluation of the likelihood in non linear / particle filters.
- Added missing documented `montecarlo` option in Gaussian Filter and
Nonlinear Kalman Filter.
- Added back a flag to deal with errors on Cholesky decomposition in the
Conditional Particle Filter.
- Macroprocessor `length()` operator was returning 1 when applied to a
string. Macroprocessor now raises an error when `length()` operator is
called on an integer and return the number of characters when applied to a
string.
- `mode_compute=8`: the error code during mode-finding was not correctly
handled, resulting in crashes.
- Identification was not correctly displaying a message for collinear parameters
if there was no unidentified parameter present.
On behalf of the Dynare Team,
Stéphane.
Dear Dynare users and friends,
We are pleased to announce the release of Dynare 4.5.5.
This is a bugfix release.
The Windows packages are already available for download at:
http://www.dynare.org/download/dynare-stable
The Mac package will follow soon.
This release is compatible with MATLAB versions 7.5 (R2007b) to 9.3 (R2018a)
and with GNU Octave versions 4.2.
Here is a list of the problems identified in version 4.5.4 and that have been
fixed in version 4.5.5:
- Identification was crashing during prior sampling if `ar` was initially too
low.
- The `align` method on `dseries` did not return a functional second `dseries`
output.
- Predetermined variables were not properly set when used in model local
variables.
- `perfect_foresight_solver` with option `stack_solve_algo=7` was not working
correctly when an exogenous variable has a lag greater than 1.
- `identification` with `prior_mc` option would crash if the number of moments
with non-zero derivative is smaller than the number of parameters.
- Calling several times `normcdf` or `normpdf` with the same arguments in a
model with block decomposition (but not bytecode) was leading to incorrect
results.
On behalf of the Dynare Team,
Stéphane.
Dear Friends,
This year the Dynare Summer School will be hosted, from June 11 to June
15 2018, by Banque de France. The courses will focus on simulation and
estimation of DSGE models with Dynare. The school will also be the
occasion to introduce the next official major release of Dynare (4.6).
More informations are (will be) available on our website:
http://www.dynare.org/events/dynare-summer-school-2018
Applications should be sent to school at dynare.org (with a CV and a
recent research paper attached as PDFs) no later than April 29th, 2018.
Best regards,
Stéphane.
--
Stéphane Adjemian
Dynare Team
Dear Friends,
The 14th Dynare Conference (http://www.dynare.org) will be held in
Frankfurt, Germany, at the European Central Bank, on July 5-6, 2018. The
conference is organized by the European Central Bank together with
Banque de France, the Dynare Project at CEPREMAP and DSGE-net.
The DYNARE conference will feature the work of leading scholars in
dynamic macroeconomic modeling and provide an excellent opportunity to
present your own research results.
Stephanie Schmitt-Grohé (Columbia University) and Peter Karadi (ECB) will be plenary speakers.
Submissions of papers dealing with different aspects of DSGE modeling
and computational methods are all welcome. Papers using other software
tools than DYNARE or theoretical contributions are also encouraged.
Paper submission procedure: please submit a complete manuscript or a
detailed abstract in PDF format at http://dynare.mjui.fr. If you don't
have already an account on the server, you will need to create one.
Deadline for submission is March 30, 2018. Authors of accepted papers
will be informed by April 20, 2018.
Accepted papers will be considered for publication in the Dynare Working
Papers series (http://www.dynare.org/wp) conditional on the agreement of
the submitter. Note that publication in the Dynare WP doesn't prohibit
submission to another working paper series.
Contact: conference(a)dynare.org<mailto:conference@dynare.org>
Conference Organizers: Ivan Jaccard (ECB), Anton Nakov (ECB), Sebastien
Schmidt (ECB), Michel Juillard (Banque de France).
--
Michel Juillard