dynare issueshttps://git.dynare.org/Dynare/dynare/-/issues2019-06-19T15:38:08Zhttps://git.dynare.org/Dynare/dynare/-/issues/662Update and fix gsa/set_shocks_param.m2019-06-19T15:38:08ZJohannes PfeiferUpdate and fix gsa/set_shocks_param.mApart from an obvious typo (`Sigma_e_` instead `Sigma_e`) it seems as if that file is still missing the update to reflect calibrated covariances (#511).
Apart from an obvious typo (`Sigma_e_` instead `Sigma_e`) it seems as if that file is still missing the update to reflect calibrated covariances (#511).
4.5Marco RattoMarco Rattohttps://git.dynare.org/Dynare/dynare/-/issues/657produce & print original model (without auxiliary variable substitutions)2019-06-19T15:38:08ZHoutan Bastaniproduce & print original model (without auxiliary variable substitutions)For inclusion in reports (or just general interest), produce the original model and be able to print it in latex.
Add option to include calibrated values in parentheses next to variables in the report.
For inclusion in reports (or just general interest), produce the original model and be able to print it in latex.
Add option to include calibrated values in parentheses next to variables in the report.
4.5Houtan BastaniHoutan Bastanihttps://git.dynare.org/Dynare/dynare/-/issues/656reporting example in manual2019-06-19T15:38:08ZMichelJuillardreporting example in manualThe example under reporting in the manual is not current. Option 'color' is now graphLineColor and the color code must be spelled out
The example under reporting in the manual is not current. Option 'color' is now graphLineColor and the color code must be spelled out
4.5Houtan BastaniHoutan Bastanihttps://git.dynare.org/Dynare/dynare/-/issues/655Fix unconditional_forecast values derived from conditional_forecast command2019-06-19T15:38:08ZJohannes PfeiferFix unconditional_forecast values derived from conditional_forecast commandThe `unconditional_forecast`-command seems to produce incorrect forecasts when used together with `initval`. This can be seen in the following mod-file where it yields different results than the `forecast`-command (which appear sensible)...The `unconditional_forecast`-command seems to produce incorrect forecasts when used together with `initval`. This can be seen in the following mod-file where it yields different results than the `forecast`-command (which appear sensible).
```
// See fs2000.mod in the examples/ directory for details on the model
var m P c e W R k d n l gy_obs gp_obs y dA;
varexo e_a e_m;
parameters alp bet gam mst rho psi del;
alp = 0.33;
bet = 0.99;
gam = 0.003;
mst = 1.011;
rho = 0.7;
psi = 0.787;
del = 0.02;
model;
dA = exp(gam+e_a);
log(m) = (1-rho)*log(mst) + rho*log(m(-1))+e_m;
-P/(c(+1)*P(+1)*m)+bet*P(+1)*(alp*exp(-alp*(gam+log(e(+1))))*k^(alp-1)*n(+1)^(1-alp)+(1-del)*exp(-(gam+log(e(+1)))))/(c(+2)*P(+2)*m(+1))=0;
W = l/n;
-(psi/(1-psi))*(c*P/(1-n))+l/n = 0;
R = P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(-alp)/W;
1/(c*P)-bet*P*(1-alp)*exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)/(m*l*c(+1)*P(+1)) = 0;
c+k = exp(-alp*(gam+e_a))*k(-1)^alp*n^(1-alp)+(1-del)*exp(-(gam+e_a))*k(-1);
P*c = m;
m-1+d = l;
e = exp(e_a);
y = k(-1)^alp*n^(1-alp)*exp(-alp*(gam+e_a));
gy_obs = dA*y/y(-1);
gp_obs = (P/P(-1))*m(-1)/dA;
end;
initval;
k = 6;
m = mst;
P = 2.25;
c = 0.45;
e = 1;
W = 4;
R = 1.02;
d = 0.85;
n = 0.19;
l = 0.86;
y = 0.6;
gy_obs = exp(gam);
gp_obs = exp(-gam);
dA = exp(gam);
end;
shocks;
var e_a; stderr 0.014;
var e_m; stderr 0.005;
end;
steady;
check;
stoch_simul(irf=0);
conditional_forecast_paths;
var gy_obs;
periods 1 2 3:5;
values 0.01 -0.02 0;
var gp_obs;
periods 1:5;
values 0.05;
end;
initval;
k = 6;
m = mst;
P = 2.25;
c = 0.45;
e = 1;
W = 4;
R = 1.02;
d = 0.85;
n = 0.19;
l = 0.86;
y = 0.6;
gy_obs = exp(gam);
gp_obs = exp(-gam);
dA = exp(gam);
end;
conditional_forecast(parameter_set=calibration, controlled_varexo=(e_a,e_m));
plot_conditional_forecast(periods=10) gy_obs gp_obs;
forecast(periods=40);
```
The problem seems to come from lines 139-143 of `imcforecast` where the initial values are supposed to be translated into deviations from steady state:
```
else
InitState(:,1) = zeros(M_.endo_nbr,1);
trend = repmat(oo_.steady_state(oo_.dr.order_var),1,options_cond_fcst.periods+1);
graph_title='Calibration';
end
```
However, the initial state is always 0, regardless of the initial values given in initval. Rather the initial values appear in `trend` and are later added to the forecasts. As a result, if started outside of steady state, there is no tendency of forecasts to return to steady state. This is exactly what can be seen in the flat forecasts in `forecasts.uncond.Mean` in the above mod-file. In contrast, the `forecast`-command yields the correct return to steady state.
My reading is that the problem also affects the conditional forecasts.
See also http://www.dynare.org/phpBB3/viewtopic.php?f=1&t=5617
4.5https://git.dynare.org/Dynare/dynare/-/issues/654Fix generation of dates when only one data series is used2019-06-19T15:38:08ZJohannes PfeiferFix generation of dates when only one data series is usedIn that case, load_xls_file_data crashes because the variable name is taken as the first date. See http://www.dynare.org/phpBB3/viewtopic.php?f=2&t=5650
In that case, load_xls_file_data crashes because the variable name is taken as the first date. See http://www.dynare.org/phpBB3/viewtopic.php?f=2&t=5650
4.5https://git.dynare.org/Dynare/dynare/-/issues/652Support passing a vector to the power operator on a dseries2019-06-19T15:38:08ZHoutan BastaniSupport passing a vector to the power operator on a dseriesUnlike the other arithmetic operations, power does not allow element-wise operations when passed a matrix. I.e.
```
ts1=dseries([1;2;3], '1999y', {'MyVar1'}, {'MyVar\_1'});
ts1/[1:3]’
ts1-[1:3]’
ts1*[1:3]’
ts1+[1:3]’
```
are all ok. Bu...Unlike the other arithmetic operations, power does not allow element-wise operations when passed a matrix. I.e.
```
ts1=dseries([1;2;3], '1999y', {'MyVar1'}, {'MyVar\_1'});
ts1/[1:3]’
ts1-[1:3]’
ts1*[1:3]’
ts1+[1:3]’
```
are all ok. But,
```
ts1^[1:3]’
```
causes an error
4.5Stéphane Adjemianstepan@adjemian.euStéphane Adjemianstepan@adjemian.euhttps://git.dynare.org/Dynare/dynare/-/issues/651block the use of estimated_params_init and estimated_param_bounds when no est...2019-06-19T15:38:10ZJohannes Pfeiferblock the use of estimated_params_init and estimated_param_bounds when no estimated_params-block is presentOtherwise, a crash results. See http://www.dynare.org/phpBB3/viewtopic.php?f=1&t=5638
Otherwise, a crash results. See http://www.dynare.org/phpBB3/viewtopic.php?f=1&t=5638
4.5MichelJuillardMichelJuillardhttps://git.dynare.org/Dynare/dynare/-/issues/640Provide support for Cygwin 64-bit2019-06-19T15:38:10ZSébastien VillemotProvide support for Cygwin 64-bitRecent versions of Cygwin include a 64-bit version, installed under `c:\cygwin64` by default.
We should support this configuration, at least in two places:
- when compiling MEX files with `use_dll`; see http://www.dynare.org/DynareWiki/...Recent versions of Cygwin include a 64-bit version, installed under `c:\cygwin64` by default.
We should support this configuration, at least in two places:
- when compiling MEX files with `use_dll`; see http://www.dynare.org/DynareWiki/ConfigureMatlabWindowsForMexCompilation
- in `README.md`, for people compiling from source
4.5https://git.dynare.org/Dynare/dynare/-/issues/635Add preprocessor option like onlyclearglobals2019-06-19T15:38:10ZJohannes PfeiferAdd preprocessor option like onlyclearglobalsCurrently, each run of Dynare either clears the whole workspace of nothing at all. This is problematic for running Dynare in a loop from a wrapping script. A regular call will delete all variables of the wrapping script, while using `noc...Currently, each run of Dynare either clears the whole workspace of nothing at all. This is problematic for running Dynare in a loop from a wrapping script. A regular call will delete all variables of the wrapping script, while using `noclearall` leads to previous global variables interfering with subsequent runs (e.g. via the `set_default_option`-command)
I would suggest a preprocessor option `onlyclearglobals` that uses
`clear M_ options_ oo_ estim_params_ bayestopt_ dataset_`
instead of `clear all` to delete the global variables of Dynare that interfere with repeated calls.
4.5Houtan BastaniHoutan Bastanihttps://git.dynare.org/Dynare/dynare/-/issues/633Steady state of a Ramsey model is wrong in some cases2023-03-28T13:03:14ZMichelJuillardSteady state of a Ramsey model is wrong in some casesIf a Lagrange multiplier appears in the Ramsey model with a lead or a lag of more than one period, the steady state may be wrong.
If a Lagrange multiplier appears in the Ramsey model with a lead or a lag of more than one period, the steady state may be wrong.
4.5MichelJuillardMichelJuillardhttps://git.dynare.org/Dynare/dynare/-/issues/626There is a maximum length for Matlab function names ?2019-02-08T08:30:47ZMichelJuillardThere is a maximum length for Matlab function names ?This function name triggers a warning in R2012b for str2func():
Baseline_gzspread_12614_zlb_hist_nosteady_set_auxiliary_variables
isvarname() doesn't recognize it as a valid name.
That one is OK:
Baseline_gzspread_12614_zlb_hist_nostead...This function name triggers a warning in R2012b for str2func():
Baseline_gzspread_12614_zlb_hist_nosteady_set_auxiliary_variables
isvarname() doesn't recognize it as a valid name.
That one is OK:
Baseline_gzspread_12614_zlb_hist_nosteady_set_auxiliary_variabl
If it has really to do with name length, we need to check for the length of the *.mod file and refuse the ones that are too long.
4.5MichelJuillardMichelJuillardhttps://git.dynare.org/Dynare/dynare/-/issues/624Fix preprocessor bug when model-local variable is specified as an estimated p...2019-06-19T15:38:10ZJohannes PfeiferFix preprocessor bug when model-local variable is specified as an estimated parameterIn the following mod-file `djen` is a model-local variables, but specified in the `estimated_params`-block. The preprocessor then falsely sets
`estim_params_.param_vals = [estim_params_.param_vals; 0, NaN, (-Inf), Inf, 2, 2, 1, NaN, NaN,...In the following mod-file `djen` is a model-local variables, but specified in the `estimated_params`-block. The preprocessor then falsely sets
`estim_params_.param_vals = [estim_params_.param_vals; 0, NaN, (-Inf), Inf, 2, 2, 1, NaN, NaN, NaN ];`
but the first entry is the position in `M_.params` and can never be 0. We should disallow using model-local variables in the parameter blocks.
```
%Model BSB;
var x i dp y n mc mrs c a g dw;
varexo epsilon_a epsilon_g epsilon_ms epsilon_mu;
parameters sigma thetap thetaw beta phi alpha gammay gammapi rhoi rhoa rhog delta mub gam sigmaa sigmams sigmag sigmamu epsilonstar;
model;
#ms=epsilon_ms;
#mu=epsilon_mu;
0 = -sigma * i + sigma * dp(+1) - sigma * g(+1) + sigma * g - c + c(+1);
0 = -y + a + (1-delta) * n;
0 = y - n + mc - x;
0 = -mrs + c / sigma + gam * n - g;
0 = -i + rhoi * i(-1) + gammapi * (1-rhoi) * dp + gammay * (1-rhoi) * y + ms;
0 = -x + x(-1) + dw - dp;
0 = -y + c;
a(+1) = rhoa * a + epsilon_a(+1);
g(+1) = rhog * g + epsilon_g(+1);
%kappap = (1- delta)*(1-thetap*beta)*(1-thetap) / (thetap*(1+delta*(epsib-1)));
%0 = kappap * mc + kappap * mu - dp + beta * dp(+1);
0 = (1- delta)*(1-thetap*beta)*(1-thetap) / (thetap*(1+delta*(epsilonstar-1))) * mc + (1- delta)*(1-thetap*beta)*(1-thetap) / (thetap*(1+delta*(epsilonstar-1))) * mu - dp + beta * dp(+1);
mrs=x;
#djen=(1/(1-thetap))-1;
%epsib = mub / (mub-1);
end;
varobs i dp dw y;
estimated_params;
stderr epsilon_a, normal_pdf,,, 0, sigmaa;
stderr epsilon_g, normal_pdf,,, 0, sigmag;
stderr epsilon_ms, normal_pdf,,, 0, sigmams;
stderr epsilon_mu, normal_pdf,,, 0, sigmamu;
sigmag, uniform_pdf,,, 0, 1;
sigmamu, uniform_pdf,,, 0, 1;
sigmams, uniform_pdf,,, 0, 1;
sigmaa, uniform_pdf,,, 0, 1;
rhoa, uniform_pdf, 0, 1;
rhog, uniform_pdf, 0, 1;
rhoi, uniform_pdf, 0, 1;
gam, normal_pdf, 1, 0.5;
gammay, normal_pdf, 0.125, 0.125;
gammapi, normal_pdf, 1.5, 0.25;
sigma, inv_gamma_pdf, 2, 1.25;
djen, gamma_pdf, 2, 1;
end;
%steady;
%check;
%epsilon = epsib;
%mu = mub;
%end;
steady_state_model;
epsilonstar = mub/ (mub-1);
end;
%steady;
%check;
estimation(datafile=usdata, mh_jscale=0.5);
```
4.5Sébastien VillemotSébastien Villemothttps://git.dynare.org/Dynare/dynare/-/issues/619Treat exceptions in check2019-06-19T15:38:10ZJohannes PfeiferTreat exceptions in checkCalling `check` together with `noprint` overrides throwing out exceptions in `printinfo`. This can lead to subsequent crashes due to calls like
```
eigenvalues_ = dr.eigval;
```
that try to access fields that are not set in this case....Calling `check` together with `noprint` overrides throwing out exceptions in `printinfo`. This can lead to subsequent crashes due to calls like
```
eigenvalues_ = dr.eigval;
```
that try to access fields that are not set in this case.
My preference would be to locally override the `noprint` option in `check` by replacing
```
if info(1) ~= 0 && info(1) ~= 3 && info(1) ~= 4
print_info(info, options.noprint, options);
end
```
with
```
if info(1) ~= 0 && info(1) ~= 3 && info(1) ~= 4
print_info(info,1, options);
end
```
The typical reaon for using `check` is to only continue if the check is passed. Overriding this by the `noprint`-options seems unintentional and leads to subsequent trouble, see http://www.dynare.org/phpBB3/viewtopic.php?f=1&t=4891&p=14256#p14256
4.5https://git.dynare.org/Dynare/dynare/-/issues/617Fix translation of histval to one-lag problem2021-09-22T07:54:31ZJohannes PfeiferFix translation of histval to one-lag problemFor deterministic simulations with more than one lag, the translation to a problem with one lag for use in `sim1` does not work.
The mod-file
```
var c k z_forward z_backward;
varexo x z_shock;
parameters alph gam delt bet aa;
alph=0...For deterministic simulations with more than one lag, the translation to a problem with one lag for use in `sim1` does not work.
The mod-file
```
var c k z_forward z_backward;
varexo x z_shock;
parameters alph gam delt bet aa;
alph=0.5;
gam=0.5;
delt=0.02;
bet=0.05;
aa=0.5;
model;
c + k - aa*x*k(-1)^alph - (1-delt)*k(-1); // Resource constraint
c^(-gam) - (1+bet)^(-1)*(aa*alph*x(+1)*k^(alph-1) + 1 - delt)*c(+1)^(-gam); // Euler equation
z_backward=0.1*1+0.3*z_backward(-1)+0.3*z_backward(-2)+0.3*z_backward(-3)+(x(-4)-1);
z_forward=0.1*1+0.45*z_forward(+1)+0.45*z_forward(+2)+(x(+4)-1);
end;
initval;
c = 1.2;
k = 12;
x = 1;
end;
histval;
x(-1)=1.30;
x(-2)=1.30;
end;
shocks;
var x;
periods 2;
values 0.9;
end;
simul(periods=200,maxit=100);
```
shows that the problem comes from `M_.endo_histval`, which is set to
```
M_.endo_histval = zeros(M_.endo_nbr,M_.maximum_lag);
oo_.exo_simul( M_.maximum_lag + -2, 1 ) = 1.30;
oo_.exo_simul( M_.maximum_lag + -1, 1 ) = 1.30;
```
and thus has more than one initial period.
4.5https://git.dynare.org/Dynare/dynare/-/issues/611Add conditional check for steady state in unit root models2019-06-19T15:38:10ZJohannes PfeiferAdd conditional check for steady state in unit root modelsAs detailed in #573, for unit root models `options.steadystate.nocheck=1` is set, which implies that there is no check for correctness of the steady state as there are theoretically infinitely many. However, conditional on the trending (...As detailed in #573, for unit root models `options.steadystate.nocheck=1` is set, which implies that there is no check for correctness of the steady state as there are theoretically infinitely many. However, conditional on the trending (exogenous) variable, the steady state should be unique. We should thus test whether this conditional steady state is correct as suggested by @stepan-a instead of allowing to use arbitrary wrong values as supposed steady states.
4.5https://git.dynare.org/Dynare/dynare/-/issues/610osr entry in manual2019-06-19T15:38:10ZMichelJuillardosr entry in manualNeed to underlines that osr works only at first order
Need to underlines that osr works only at first order
4.5MichelJuillardMichelJuillardhttps://git.dynare.org/Dynare/dynare/-/issues/598Fix specification of confidence level in estimation2019-06-19T15:38:10ZJohannes PfeiferFix specification of confidence level in estimationThe token for specifying the confidence level in `estimation` is `conf_sig`. But the codes actually use `mh_conf_sig`. This needs to be changed in both the manual and the preprocessor.
The token for specifying the confidence level in `estimation` is `conf_sig`. But the codes actually use `mh_conf_sig`. This needs to be changed in both the manual and the preprocessor.
4.5https://git.dynare.org/Dynare/dynare/-/issues/599Fix preprocessor bug2019-02-08T08:31:35ZJohannes PfeiferFix preprocessor bugThe mod-file at http://www.dynare.org/phpBB3/viewtopic.php?f=1&t=5310 crashes with:
```
Program: C:\Users\Pfeifer\Dropbox\Dynare Source\GitHub\dynare\matlab\dynare_m.exe
File: ExprNode.cc, Line 491
Expression: type != eExternalFunction...The mod-file at http://www.dynare.org/phpBB3/viewtopic.php?f=1&t=5310 crashes with:
```
Program: C:\Users\Pfeifer\Dropbox\Dynare Source\GitHub\dynare\matlab\dynare_m.exe
File: ExprNode.cc, Line 491
Expression: type != eExternalFunction && (lag == 0 || (type != eModelLocalVariable && type != eModFileLocalVariable))
```
The reason seems to be the call to an external function in initval:
```
F=fun_ss(par);
```
Something seems to prevent Dynare from recognizing that F is not known. The minimum working example is the following stripped-down mod-file:
```
var r;
parameters delta;
delta=par(1);
initval;
F=fun_ss(par);
r=F(1);
end;
```
4.5Sébastien VillemotSébastien Villemothttps://git.dynare.org/Dynare/dynare/-/issues/591dseries sub-sample selection with vector of observation indices.2019-06-19T15:38:12ZStéphane Adjemianstepan@adjemian.eudseries sub-sample selection with vector of observation indices.If `ds = dseries(transpose(1:5))` then `ds(2:3)` wrongly returns a matlab's structure:
``` matlab
ans =
data: [2x1 double]
nobs: 2
vobs: 1
freq: 1
dates: [2 dates]
init: [1 dates]
name: {'Variable_1'}...If `ds = dseries(transpose(1:5))` then `ds(2:3)` wrongly returns a matlab's structure:
``` matlab
ans =
data: [2x1 double]
nobs: 2
vobs: 1
freq: 1
dates: [2 dates]
init: [1 dates]
name: {'Variable_1'}
tex: {'Variable\_1'}
```
while it should be a `dseries` object.
4.5Stéphane Adjemianstepan@adjemian.euStéphane Adjemianstepan@adjemian.euhttps://git.dynare.org/Dynare/dynare/-/issues/590dseries sub-samples beyond boudary2019-06-19T15:38:12ZMichelJuillarddseries sub-samples beyond boudaryCurrently, one obtains:
``` matlab
>> x=dseries((1:4)');
>> x(dates('2Y'):dates('5Y'))
ans is a dseries object:
| Variable_1
2Y | 2
3Y | 3
4Y | 4
```
Either it should return NaN for 5Y (my preference) or it sho...Currently, one obtains:
``` matlab
>> x=dseries((1:4)');
>> x(dates('2Y'):dates('5Y'))
ans is a dseries object:
| Variable_1
2Y | 2
3Y | 3
4Y | 4
```
Either it should return NaN for 5Y (my preference) or it should return an error. It is not a good idea to return an object that doesn't correspond to the user request.
4.5Stéphane Adjemianstepan@adjemian.euStéphane Adjemianstepan@adjemian.eu