Dynare issueshttps://git.dynare.org/groups/Dynare/-/issues2023-11-22T00:19:09Zhttps://git.dynare.org/Dynare/preprocessor/-/issues/123Factorize dynamic_params_derivs.m file2023-11-22T00:19:09ZJohannes PfeiferFactorize dynamic_params_derivs.m fileI central bank model with about 500 equations resulted in a `dynamic_params_derivs` with about 200MB size. Starting in Matlab 2019b, program files larger than approximately 128 MB do not run anymore (https://de.mathworks.com/matlabcentra...I central bank model with about 500 equations resulted in a `dynamic_params_derivs` with about 200MB size. Starting in Matlab 2019b, program files larger than approximately 128 MB do not run anymore (https://de.mathworks.com/matlabcentral/answers/497231-error-file-is-too-large-for-matlab-to-run). We should follow the logic of the other `_dynamic` files and split temporary terms, `rp, gp, rpp, gpp, hp, g3p` in different functions computing them.https://git.dynare.org/Dynare/preprocessor/-/issues/122Only create one auxiliary variable for leads/lags of exogenous2023-11-17T13:46:05ZJohannes PfeiferOnly create one auxiliary variable for leads/lags of exogenousCurrently, when an exogenous appears with both leads and lags, two auxiliaries are created with lag and lead 0, which are actually identical. That leads to one more endogenous equation than is necessary. We should have something like `AU...Currently, when an exogenous appears with both leads and lags, two auxiliaries are created with lag and lead 0, which are actually identical. That leads to one more endogenous equation than is necessary. We should have something like `AUX_EXO_CONTEMPORANEOUS`.
[ramst.mod](/uploads/0b1823475e7137a08610a1008241febe/ramst.mod)https://git.dynare.org/Dynare/dynare/-/issues/1911Investigate premature xtol termination in trust_solve.m2024-02-01T20:47:43ZJohannes PfeiferInvestigate premature xtol termination in trust_solve.mCommit https://git.dynare.org/Dynare/dynare/-/commit/aa8439d4ccbfcf3761c7e168a8423adc8cfce204 introduced the additional termination criterion
```
% Tests for termination and stringent tolerances.
if max(.1*delta, pnorm)<=10*eps(xn...Commit https://git.dynare.org/Dynare/dynare/-/commit/aa8439d4ccbfcf3761c7e168a8423adc8cfce204 introduced the additional termination criterion
```
% Tests for termination and stringent tolerances.
if max(.1*delta, pnorm)<=10*eps(xnorm)*xnorm
% xtol is too small. no further improvement in
% the approximate solution x is possible.
info = 5;
x(:) = inf;
errorflag = true;
continue
end
```
This causes steady-state finding to fail in master where it worked in `5.x`. An example is the attache file.
[Bench.zip](/uploads/47415753cad27448ffdd1ed71d64ea76/Bench.zip)7.xStéphane Adjemianstepan@adjemian.euStéphane Adjemianstepan@adjemian.euhttps://git.dynare.org/Dynare/preprocessor/-/issues/121Allow requesting derivatives of dynamic model at command line2023-12-06T08:50:04ZJohannes PfeiferAllow requesting derivatives of dynamic model at command lineThe manual states:
```
output=second|third
Instructs the preprocessor to output derivatives of the dynamic model at least up to the given
order
```
However, the attached mod-file does not run despite containing
```
//--+ options: output=...The manual states:
```
output=second|third
Instructs the preprocessor to output derivatives of the dynamic model at least up to the given
order
```
However, the attached mod-file does not run despite containing
```
//--+ options: output=third, stochastic +--.
```
due to
```
The derivatives were not computed for the required order. Make sure that you used the right order option inside the `stoch_simul' command
Error using print_info
k_order_pert was unable to compute the solution
```
[example3.mod](/uploads/6ea1fa9de7e53b41d8803975ca98a4e1/example3.mod)https://git.dynare.org/Dynare/dynare/-/issues/1910Investigate MATLAB new desktop2023-10-26T20:53:27ZWilli Mutschlerwilli@mutschler.euInvestigate MATLAB new desktopSo far MATLAB's new desktop starts to be on par except for the performance. MATHWORKS will switch to it as the default in the near future, so we should investigate which issues occur.
#### Printing speed
For us the printing speed is pro...So far MATLAB's new desktop starts to be on par except for the performance. MATHWORKS will switch to it as the default in the near future, so we should investigate which issues occur.
#### Printing speed
For us the printing speed is problematic, because there is an event coalescing problem where text is sent to often. Workaround after discussing this with Eduard from MATHWORKS: vectorize “fprintf” calls to get back the old speed (maybe with a tiny delay due to the actual technology difference).7.xWilli Mutschlerwilli@mutschler.euWilli Mutschlerwilli@mutschler.euhttps://git.dynare.org/Dynare/dynare/-/issues/1909macOS distribution: pkg installer vs homebrew2023-10-02T11:57:33ZWilli Mutschlerwilli@mutschler.eumacOS distribution: pkg installer vs homebrew1) Dynare for Octave is distributed already via Homebrew in this [dynare.rb](https://github.com/Homebrew/homebrew-core/blob/d01b7db772f9fa2df063db360ca3dd884f0a1047/Formula/d/dynare.rb). We should probably also try to get Dynare with MAT...1) Dynare for Octave is distributed already via Homebrew in this [dynare.rb](https://github.com/Homebrew/homebrew-core/blob/d01b7db772f9fa2df063db360ca3dd884f0a1047/Formula/d/dynare.rb). We should probably also try to get Dynare with MATLAB available with brew as well, similar to how we package on Debian.
2) Additionally, or alternatively, we should also add the Octave files in the pkg installer that we distribute.
3) Lastly, we should decide whether we keep the pkg installer, go solely the homebrew way, or do both.Willi Mutschlerwilli@mutschler.euWilli Mutschlerwilli@mutschler.euhttps://git.dynare.org/Dynare/dynare/-/issues/1908Port pruning to local_state_space iteration routines used for nonlinear estim...2023-10-02T15:41:09ZJohannes PfeiferPort pruning to local_state_space iteration routines used for nonlinear estimationhttps://git.dynare.org/Dynare/dynare/-/issues/1907Decide the minimal required versions of MATLAB and Octave for Dynare 62023-12-04T08:51:40ZSébastien VillemotDecide the minimal required versions of MATLAB and Octave for Dynare 6We need to decide the minimal required versions of MATLAB and Octave for Dynare 6.
Dynare 5 requires at least MATLAB R2014a and Octave 5 (at the source code level for the latter).
Since Dynare 5 was released in January 2022, it means t...We need to decide the minimal required versions of MATLAB and Octave for Dynare 6.
Dynare 5 requires at least MATLAB R2014a and Octave 5 (at the source code level for the latter).
Since Dynare 5 was released in January 2022, it means that upon release we were supporting 8 years of MATLAB (R2014a to R2021b); and we are currently supporting 10 years of MATLAB.
If we were to apply the same policy for Dynare 6, that would mean requiring R2016a. But we could also be more aggressive, which would bring some benefits (see the [MATLAB versions](https://git.dynare.org/Dynare/dynare/-/wikis/MATLAB-Versions) page):
- R2016b would allow us to remove all calls to `bsxfun`, and also to drop the JSONlab toolbox under `contrib/` (provided that we also require Octave 7)
- R2018a would allow us to ship only one flavour of the MEX files (since that version introduced an ABI break)
- R2018b would allow us to use double quoted strings (and thus stop worrying about using single quotes everywhere)
And requiring R2019a would mean moving to 5-years window of MATLAB releases supported, which is already quite a lot.
I think we should go for at least R2016b, and maybe even R2018b.
For Octave, we already require Octave 6 in unstable. I would be inclined to require Octave 7, because that would allow us to drop JSONlab (if we also require MATLAB R2016b). My only concern is that Ubuntu 22.04 LTS ships with Octave 6 (so that may affect you @wmutschl); however note that Ubuntu 24.04 LTS will be released shortly after Dynare 6, and it will include Octave 8.
Waiting for your thoughts on this. We should also ask our institutional users about their constraints.6.xSébastien VillemotSébastien Villemothttps://git.dynare.org/Dynare/dynare/-/issues/1906Potentially support parfor loops for parallelization2023-09-22T21:50:00ZJohannes PfeiferPotentially support parfor loops for parallelizationRecent Matlab versions will simply resort to a `for`-loop if the parallel-computing toolbox is not available. So we may give this as an option.Recent Matlab versions will simply resort to a `for`-loop if the parallel-computing toolbox is not available. So we may give this as an option.https://git.dynare.org/Dynare/dynare/-/issues/1905Rework fs2000.mod example file to use actual data2023-12-14T13:06:29ZJohannes PfeiferRework fs2000.mod example file to use actual dataSee https://git.dynare.org/Dynare/dynare/-/merge_requests/2160#note_19189See https://git.dynare.org/Dynare/dynare/-/merge_requests/2160#note_19189https://git.dynare.org/Dynare/preprocessor/-/issues/120Initialize not computed derivative matrices with NaN instead of zero2023-09-11T09:10:59ZJohannes PfeiferInitialize not computed derivative matrices with NaN instead of zeroWe have for example
```
if (mod_file_struct.identification_present
|| mod_file_struct.estimation_analytic_derivation
|| (mod_file_struct.GMM_present && (mod_file_struct.analytic_standard_errors_pres...We have for example
```
if (mod_file_struct.identification_present
|| mod_file_struct.estimation_analytic_derivation
|| (mod_file_struct.GMM_present && (mod_file_struct.analytic_standard_errors_present || mod_file_struct.analytic_jacobian_present)))
paramsDerivsOrder = params_derivs_order;
```
Hence, `dynamic_params_derivs.m` returns zero matrices if no command like `identification` is present. It is dangerous to return a wrong result with conformable dimensions because users can call the correct functions to get the parameter derivatives, but the results will not make sense because everything was zero. We should initialize with NaN. The same may be present with derivatives with respect to endogenous variables.https://git.dynare.org/Dynare/dynare/-/issues/1904Allow vector input for chain in generate_trace_plots2023-09-11T14:47:44ZJohannes PfeiferAllow vector input for chain in generate_trace_plotshttps://git.dynare.org/Dynare/preprocessor/-/issues/119Create interface for specifying filtering transformation of data2023-09-08T10:08:36ZJohannes PfeiferCreate interface for specifying filtering transformation of dataDecision at Advanced User Meeting 2023:
```
varobs(hp_filter=1600) y;
varobs(one_sided_hp_filter=1600) c;
varobs(bandpass_filter=[2 16]) R;
```
where the three options are the filters currently allowed for `stoch_simul`. Write the result...Decision at Advanced User Meeting 2023:
```
varobs(hp_filter=1600) y;
varobs(one_sided_hp_filter=1600) c;
varobs(bandpass_filter=[2 16]) R;
```
where the three options are the filters currently allowed for `stoch_simul`. Write the result into `3 by 1` cell array `options_.varobs_transformation` where column 1 corresponds to `options_.varobs_id`, column 2 is a string of the filter name, column 3 is the specified parameter value (empty if the default is chosen).https://git.dynare.org/Dynare/preprocessor/-/issues/118Enforce proper block commenting2023-09-07T16:39:17ZJohannes PfeiferEnforce proper block commentingIf possible, check that the each opening `/*` is closed by `*/` and that the first comment is not `*/`.
See https://forum.dynare.org/t/dynare-code-problem/23085If possible, check that the each opening `/*` is closed by `*/` and that the first comment is not `*/`.
See https://forum.dynare.org/t/dynare-code-problem/23085https://git.dynare.org/Dynare/dynare/-/issues/1903Disentangle functions of diffuse_filter2023-09-07T14:56:43ZJohannes PfeiferDisentangle functions of diffuse_filterThe `diffuse_filter`-option serves three purposes:
1. setting `qz_criterium`
2. setting `lik_init`
3. setting `kalman_algo`
This creates unintended consequences.
1. In principle, we don't need `diffuse_filter` if the observables are st...The `diffuse_filter`-option serves three purposes:
1. setting `qz_criterium`
2. setting `lik_init`
3. setting `kalman_algo`
This creates unintended consequences.
1. In principle, we don't need `diffuse_filter` if the observables are stationary (`diffuse_periods=0`). But `diffuse_filter` is still required to change the setting of `qz_criterium` and set `lik_init`. That seems problematic.
2. Specifying `diffuse_filter` is incompatible with `fast_kalman_filter`, but that will not trigger a warning and will work if `diffuse_periods=0`. But it should be slower due to solving the Lyapunov equation differently.https://git.dynare.org/Dynare/dynare/-/issues/1902Allow looping over (random) starting values for estimation2023-09-07T08:46:24ZJohannes PfeiferAllow looping over (random) starting values for estimationRequest at advanced user meeting: draw from prior and start mode-finding.Request at advanced user meeting: draw from prior and start mode-finding.https://git.dynare.org/Dynare/dynare/-/issues/1901Improve convergence diagnostics2023-09-07T08:31:51ZJohannes PfeiferImprove convergence diagnostics1. Multivariate instead of univariate diagnostics https://academic.oup.com/biomet/article-abstract/106/2/321/5426969?redirectedFrom=fulltext and https://doi.org/10.1214/20-STS812
2. Have quantitative instead of eyeballing test for multi...1. Multivariate instead of univariate diagnostics https://academic.oup.com/biomet/article-abstract/106/2/321/5426969?redirectedFrom=fulltext and https://doi.org/10.1214/20-STS812
2. Have quantitative instead of eyeballing test for multiple chains.https://git.dynare.org/Dynare/dynare/-/issues/1900Add Artificial bee colony optimizer2023-09-27T15:07:25ZWilli Mutschlerwilli@mutschler.euAdd Artificial bee colony optimizerArtificial bee colony (ABC) is a stochastic search technique based on swarm intelligence, which mimics the process of honey bee swarms foraging for food.
@jmaih has an implementation in RISE and - even though it is rather slow- it is su...Artificial bee colony (ABC) is a stochastic search technique based on swarm intelligence, which mimics the process of honey bee swarms foraging for food.
@jmaih has an implementation in RISE and - even though it is rather slow- it is supposed to be very powerful.7.xWilli Mutschlerwilli@mutschler.euWilli Mutschlerwilli@mutschler.euhttps://git.dynare.org/Dynare/dynare/-/issues/1899Document of fix behavior of det_cond_forecast2023-08-30T18:18:30ZJohannes PfeiferDocument of fix behavior of det_cond_forecastFrom https://forum.dynare.org/t/error-messages-when-building-the-forecast/22873/4.
I think there is either a bug or the manual is wrong. `det_cond_forecast` seems to always expect three input arguments, i.e. the initial forecast date is...From https://forum.dynare.org/t/error-messages-when-building-the-forecast/22873/4.
I think there is either a bug or the manual is wrong. `det_cond_forecast` seems to always expect three input arguments, i.e. the initial forecast date is mandatory.
[IN_AUX.csv](/uploads/ed7b4b47377fb38a92a99c7b0c571549/IN_AUX.csv)
[UForecast.mod](/uploads/e9d55faa83615f4f0040c5bbb45e2d41/UForecast.mod)
Moreover, the second argument is supposed to indicate the past values of the endogenous variables. But using [UForecast_3_arguments.mod](/uploads/bf27cd7ac32670a1a9b5a09b9184e493/UForecast_3_arguments.mod) I get the error message
> the dseries smoothed finish at time 2023Q2 before the last period of forecast 2024Q3
which does not make sense if only past values are needed.https://git.dynare.org/Dynare/dynare/-/issues/1898Fix testsuite: "sed: couldn't write 56 items to stdout: Broken pipe"2023-09-27T14:59:31ZJohannes PfeiferFix testsuite: "sed: couldn't write 56 items to stdout: Broken pipe"The Matlab testsuite states:
>sed: couldn't write 56 items to stdout: Broken pipeThe Matlab testsuite states:
>sed: couldn't write 56 items to stdout: Broken pipe