global_initialization.m 18.7 KB
Newer Older
1
function global_initialization()
2
%function global_initialization()
assia's avatar
assia committed
3
4
5
6
7
8
9
10
11
12
% initializes global variables and options for DYNARE
%
% INPUTS
%    none
%
% OUTPUTS
%    none
%
% SPECIAL REQUIREMENTS
%    none
13

14
% Copyright (C) 2003-2013 Dynare Team
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare.  If not, see <http://www.gnu.org/licenses/>.

31
global oo_ M_ options_ estim_params_ bayestopt_ estimation_info ex0_ ys0_  ex_det0_
32
33

estim_params_ = [];
MichelJuillard's avatar
MichelJuillard committed
34
bayestopt_ = [];
35
options_.datafile = '';
36
options_.verbosity = 1;
37
38
39
options_.terminal_condition = 0;
options_.rplottype = 0;
options_.smpl = 0;
40
options_.dynatol.f = 1e-5;
41
options_.dynatol.x = 1e-5;
42
43
44
options_.maxit_ = 10;
options_.slowc = 1;
options_.timing = 0;
45
46
47
options_.gstep = ones(2,1);
options_.gstep(1) = 1e-2;
options_.gstep(2) = 1.0;
48
49
50
options_.scalv = 1;
options_.debug = 0;
options_.initval_file = 0;
51
options_.Schur_vec_tol = 1e-11; % used to find nonstationary variables in Schur decomposition of the
52
                                % transition matrix
53
options_.qz_criterium = [];
54
options_.qz_zero_threshold = 1e-6;
55
56
57
58
options_.lyapunov_complex_threshold = 1e-15;
options_.solve_tolf = eps^(1/3);
options_.solve_tolx = eps^(2/3);
options_.solve_maxit = 500;
59

60
61
options_.mode_check_neighbourhood_size = .5;
options_.mode_check_symmetric_plots = 1;
62
options_.mode_check_node_number = 1000;
63

64
% Default number of threads for parallelized mex files.
65
66
options_.threads.kronecker.A_times_B_kronecker_C = 1;
options_.threads.kronecker.sparse_hessian_times_B_kronecker_C = 1;
67
options_.threads.local_state_space_iteration_2 = 1;
68

69
70
71
% steady state
options_.jacobian_flag = 1;

72
% steady state file
73
74
75
if exist([M_.fname '_steadystate2.m'],'file')
    options_.steadystate_flag = 2;
elseif exist([M_.fname '_steadystate.m'],'file')
76
    options_.steadystate_flag = 1;
77
else
78
    options_.steadystate_flag = 0;
79
80
end
options_.steadystate_partial = [];
81
options_.steadystate.nocheck = 0;
82

83
84
% subset of the estimated deep parameters
options_.ParamSubSet = 'None';
85

86
% bvar-dsge
87
M_.bvar = [];
88
89
options_.dsge_var = 0;
options_.dsge_varlag = 4;
90

91
92
93
94
95
96
97
98
99
100
% BVAR a la Sims
options_.bvar_replic = 2000;
options_.bvar_prior_tau = 3;
options_.bvar_prior_decay = 0.5;
options_.bvar_prior_lambda = 5;
options_.bvar_prior_mu = 2;
options_.bvar_prior_omega = 1;
options_.bvar_prior_flat = 0;
options_.bvar_prior_train = 0;

101
% Optimization algorithm [6] gmhmaxlik
102
103
104
105
106
gmhmaxlik.iterations = 3;
gmhmaxlik.number = 20000;
gmhmaxlik.nclimb = 200000;
gmhmaxlik.nscale = 200000;
options_.gmhmaxlik = gmhmaxlik;
107

108
109
110
111
112
% Graphics
options_.graphics.nrows = 3;
options_.graphics.ncols = 3;
options_.graphics.line_types = {'b-'};
options_.graphics.line_width = 1;
113
options_.graph_format = 'eps';
114
options_.nodisplay = 0;
115
116
117
options_.nograph = 0;
options_.XTick = [];
options_.XTickLabel = [];
118
119
120
121
122
123
124
125
126
127
128
129
130
131
options_.console_mode = 0;
if exist('OCTAVE_VERSION')
    if sum(get(0,'screensize'))==4
        options_.console_mode = 1;
        options_.nodisplay = 1;
    end
else
    if isunix && (~usejava('jvm') || ...
            ((matlab_ver_less_than('7.5') && sum(get(0,'ScreenSize'))==4) || ...
            (~matlab_ver_less_than('7.5') && ~feature('ShowFigureWindows'))))
        options_.console_mode = 1;
        options_.nodisplay = 1;
    end
end
132

133
134
135
136
137
138
139
140
141
142
% IRFs & other stoch_simul output
options_.irf = 40;
options_.relative_irf = 0;
options_.ar = 5;
options_.hp_filter = 0;
options_.hp_ngrid = 512;
options_.nomoments = 0;
options_.nocorr = 0;
options_.periods = 0;
options_.noprint = 0;
143
144
145
146
options_.SpectralDensity.trigger = 0;
options_.SpectralDensity.plot  = 1; 
options_.SpectralDensity.cutoff  = 150; 
options_.SpectralDensity.sdl = 0.01; 
147

148
149
% Extended path options
%
150
151
152
153
% Set debug flag
ep.debug = 0;
% Set memory flag
ep.memory = 0;
154
% Set verbose mode
155
ep.verbosity = 0;
156
% Set bytecode flag
157
ep.use_bytecode = 0;
158
% Initialization of the perfect foresight equilibrium paths
159
% * init=0, previous solution is used.
160
161
% * init=1, a path generated with the first order reduced form is used.
% * init=2, mix of cases 0 and 1.
162
ep.init = 0;
163
% Maximum number of iterations for the deterministic solver.
164
ep.maxit = 500;
165
% Number of periods for the perfect foresight model.
166
ep.periods = 200;
167
% Default step for increasing the number of periods if needed
168
ep.step = 50;
169
% Set check_stability flag
170
ep.check_stability = 0;
171
% Define last periods used to test if the solution is stable with respect to an increase in the number of periods.
172
ep.lp = 5;
173
% Define first periods used to test if the solution is stable with respect to an increase in the number of periods.
174
ep.fp = 2;
175
% Define the distribution for the structural innovations.
176
ep.innovation_distribution = 'gaussian';
177
% Set flag for the seed
178
ep.set_dynare_seed_to_default = 1;
179
% Set algorithm for the perfect foresight solver
180
ep.stack_solve_algo = 4;
181
% Stochastic extended path related options.
182
ep.stochastic.method = '';
183
ep.stochastic.algo = 0;
184
ep.stochastic.quadrature.ortpol = 'hermite';
185
ep.stochastic.order = 0;
186
187
188
189
ep.stochastic.quadrature.nodes = 5;
ep.stochastic.quadrature.pruned.status = 0;
ep.stochastic.quadrature.pruned.relative = 1e-5;
ep.stochastic.quadrature.pruned.level = 1e-5;
190
ep.stochastic.hybrid_order = 0;
191
192
193
% Copy ep structure in options_ global structure
options_.ep = ep;

194

195
196
197
198
199
200
201
% Simulations of backward looking models options
%
bnlms.set_dynare_seed_to_default = 1;
bnlms.innovation_distribution = 'gaussian';
options_.bnlms = bnlms;


202
203
% Particle filter
%
204
% Default is that we do not use the non linear kalman filter
205
206
207
particle.status = 0;
% How do we initialize the states?
particle.initialization = 1;
208
particle.initial_state_prior_std = .1;
209
210
% Set the default order of approximation of the model (perturbation).
particle.perturbation = 2;
211
% Set the default number of particles.
212
particle.number_of_particles = 500;
213
% Set the default approximation order (Smolyak)
214
particle.smolyak_accuracy = 3;
215
% By default we don't use pruning
216
particle.pruning = 0;
217
% Set default algorithm
218
particle.algorithm = 'sequential_importance_particle_filter';
219
220
221
% Set the Gaussian approximation method for Importance sampling
particle.IS_approximation_method = 'unscented';
% Set the Gaussian approximation method for particles distributions
222
particle.approximation_method = 'unscented';
223
% Set unscented parameters alpha, beta and kappa for gaussian approximation
224
particle.unscented.alpha = .01;
225
particle.unscented.beta = 2;
226
particle.unscented.kappa = 0;
227
% Configuration of resampling in case of particles
Stéphane Adjemian's avatar
Stéphane Adjemian committed
228
particle.resampling.status = 'systematic'; % 'none', 'generic', 'smoothed'
229
particle.resampling.neff_threshold = .5;
230
% Choice of the resampling method
231
232
particle.resampling.method1 = 'traditional' ;
particle.resampling.method2 = 'kitagawa';
Stéphane Adjemian's avatar
Stéphane Adjemian committed
233
% Number of partitions for the smoothed resampling method
234
particle.resampling.number_of_partitions = 200;
235
% Configuration of the mixture filters
236
%particle.mixture_method = 'particles' ;
237
% Size of the different mixtures
238
239
240
particle.mixture_state_variables = 5 ;
particle.mixture_structural_shocks = 1 ;
particle.mixture_measurement_shocks = 1 ;
241
242
243
% Online approach 
particle.liu_west_delta = 0.99 ;
particle.liu_west_chol_sigma_bar = .01 ;
244
245
% Copy ep structure in options_ global structure
options_.particle = particle;
246

247
248
% TeX output
options_.TeX = 0;
249

250
% Exel
251
options_.xls_sheet = 1; % Octave does not support the empty string, rather use first sheet
252
options_.xls_range = '';
253

254
255
% Prior draws
options_.forecast = 0;
256

257
258
% Model
options_.linear = 0;
259

260
261
262
263
% Deterministic simulation
options_.stack_solve_algo = 0;
options_.markowitz = 0.5;
options_.minimal_solving_periods = 1;
264

265
266
% Solution
options_.order = 2;
267
options_.pruning = 0;
268
269
270
options_.solve_algo = 2;
options_.linear = 0;
options_.replic = 50;
271
options_.simul_replic = 1;
272
options_.drop = 100;
273
274
275
% if mjdgges.dll (or .mexw32 or ....) doesn't exist, matlab/qz is added to the path.
% There exists now qz/mjdgges.m that contains the calls to the old Sims code
% Hence, if mjdgges.m is visible exist(...)==2,
276
% this means that the DLL isn't avaiable and use_qzdiv is set to 1
277
if exist('mjdgges','file')==2
278
279
280
281
282
283
284
    options_.use_qzdiv = 1;
else
    options_.use_qzdiv = 0;
end
options_.aim_solver = 0; % i.e. by default do not use G.Anderson's AIM solver, use mjdgges instead
options_.k_order_solver=0; % by default do not use k_order_perturbation but mjdgges
options_.partial_information = 0;
285
options_.ACES_solver = 0;
286
options_.conditional_variance_decomposition = [];
287

288
289
290
% Ramsey policy
options_.ramsey_policy = 0;
options_.timeless = 0;
291

292
% estimation
293
estimation_info.empty_prior = struct(...
294
295
296
    'domain', [], 'interval', [], 'mean', [], ...
    'median', [], 'mode', [], 'shape', [], ...
    'shift', [], 'stdev', [], 'truncate', [], 'variance', []);
297
estimation_info.empty_options = struct(...
298
299
    'bounds',[], 'init', [], 'jscale', []);
estimation_info.subsamples.range = struct('date1', [], 'date2', []);
300
301
302
303
estimation_info.parameter.prior = estimation_info.empty_prior;
estimation_info.parameter.subsample_prior = estimation_info.empty_prior;
estimation_info.parameter.options = estimation_info.empty_options;
estimation_info.parameter.subsample_options = estimation_info.empty_options;
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
estimation_info.structural_innovation.prior = estimation_info.empty_prior;
estimation_info.structural_innovation.subsample_prior = estimation_info.empty_prior;
estimation_info.structural_innovation.options = estimation_info.empty_options;
estimation_info.structural_innovation.subsample_options = estimation_info.empty_options;
estimation_info.structural_innovation_corr.prior = estimation_info.empty_prior;
estimation_info.structural_innovation_corr.subsample_prior = estimation_info.empty_prior;
estimation_info.structural_innovation_corr.options = estimation_info.empty_options;
estimation_info.structural_innovation_corr.subsample_options = estimation_info.empty_options;
estimation_info.measurement_error.prior = estimation_info.empty_prior;
estimation_info.measurement_error.subsample_prior = estimation_info.empty_prior;
estimation_info.measurement_error.options = estimation_info.empty_options;
estimation_info.measurement_error.subsample_options = estimation_info.empty_options;
estimation_info.measurement_error_corr.prior = estimation_info.empty_prior;
estimation_info.measurement_error_corr.subsample_prior = estimation_info.empty_prior;
estimation_info.measurement_error_corr.options = estimation_info.empty_options;
estimation_info.measurement_error_corr.subsample_options = estimation_info.empty_options;
320
321
estimation_info.subsamples_index = {};
estimation_info.subsamples.range_index = {};
322
estimation_info.parameter_prior_index = {};
323
estimation_info.parameter_options_index = {};
324
estimation_info.parameter.range_index = {};
325
326
327
estimation_info.measurement_error_prior_index = {};
estimation_info.measurement_error_options_index = {};
estimation_info.measurement_error.range_index = {};
328
estimation_info.structural_innovation_prior_index = {};
329
330
estimation_info.structural_innovation_options_index = {};
estimation_info.structural_innovation.range_index = {};
331
estimation_info.measurement_error_corr_prior_index = {};
332
333
estimation_info.measurement_error_corr_options_index = {};
estimation_info.measurement_error_corr.range_index = {};
334
estimation_info.structural_innovation_corr_prior_index = {};
335
336
estimation_info.structural_innovation_corr_options_index = {};
estimation_info.structural_innovation_corr.range_index = {};
337
options_.initial_period = dynDate(1);
338
339
340
341
342
options_.dataset.firstobs = options_.initial_period;
options_.dataset.lastobs = NaN;
options_.dataset.nobs = NaN;
options_.dataset.xls_sheet = NaN;
options_.dataset.xls_range = NaN;
343
344
345
346
options_.Harvey_scale_factor = 10;
options_.MaxNumberOfBytes = 1e6;
options_.MaximumNumberOfMegaBytes = 111;
options_.PosteriorSampleSize = 1000;
347
options_.analytic_derivation = 0;
348
options_.analytic_derivation_mode = 0;
349
350
351
352
353
354
355
options_.bayesian_irf = 0;
options_.bayesian_th_moments = 0;
options_.diffuse_filter = 0;
options_.filter_step_ahead = [];
options_.filtered_vars = 0;
options_.first_obs = 1;
options_.kalman_algo = 0;
356
options_.fast_kalman = 0;
357
options_.kalman_tol = 1e-10;
358
options_.use_univariate_filters_if_singularity_is_detected = 1;
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
options_.riccati_tol = 1e-6;
options_.lik_algo = 1;
options_.lik_init = 1;
options_.load_mh_file = 0;
options_.logdata = 0;
options_.loglinear = 0;
options_.mh_conf_sig = 0.90;
options_.prior_interval = 0.90;
options_.mh_drop = 0.5;
options_.mh_jscale = 0.2;
options_.mh_init_scale = 2*options_.mh_jscale;
options_.mh_mode = 1;
options_.mh_nblck = 2;
options_.mh_recover = 0;
options_.mh_replic = 20000;
374
options_.recursive_estimation_restart = 0;
375
376
377
378
379
380
381
382
options_.mode_check = 0;
options_.mode_check_nolik = 0;
options_.mode_compute = 4;
options_.mode_file = '';
options_.moments_varendo = 0;
options_.nk = 1;
options_.noconstant = 0;
options_.nodiagnostic = 0;
383
options_.mh_posterior_mode_estimation = 0;
384
385
386
387
388
options_.prefilter = 0;
options_.presample = 0;
options_.prior_trunc = 1e-10;
options_.smoother = 0;
options_.student_degrees_of_freedom = 3;
389
options_.sub_draws = [];
390
391
options_.use_mh_covariance_matrix = 0;
options_.gradient_method = 2;
392
options_.gradient_epsilon = 1e-6;
393
394
395
396
397
398
399
400
options_.posterior_sampling_method = 'random_walk_metropolis_hastings';
options_.proposal_distribution = 'rand_multivariate_normal';
options_.student_degrees_of_freedom = 3;
options_.trace_plot_ma = 200;
options_.mh_autocorrelation_function_size = 30;
options_.plot_priors = 1;
options_.cova_compute = 1;
options_.parallel = 0;
401
options_.parallel_info.isHybridMatlabOctave = false;
Marco Ratto's avatar
Marco Ratto committed
402
options_.parallel_info.leaveSlaveOpen = 0;
Marco Ratto's avatar
Marco Ratto committed
403
options_.parallel_info.RemoteTmpFolder = '';
404
405
406
407
408
409
410
411
options_.number_of_grid_points_for_kde = 2^9;
quarter = 1;
years = [1 2 3 4 5 10 20 30 40 50];
options_.conditional_variance_decomposition_dates = zeros(1,length(years));
for i=1:length(years)
    options_.conditional_variance_decomposition_dates(i) = ...
        (years(i)-1)*4+quarter;
end
412
413
options_.filter_covariance = 0;
options_.filter_decomposition = 0;
414
options_.selected_variables_only = 0;
415
options_.initialize_estimated_parameters_with_the_prior_mode = 0;
416
options_.estimation_dll = 0;
417
418
419
420
% Misc
options_.conf_sig = 0.6;
oo_.exo_simul = [];
oo_.endo_simul = [];
421
422
423
ys0_ = [];
ex0_ = [];
ex_det0_ = [];
424
425
426
427
oo_.dr = [];
oo_.exo_steady_state = [];
oo_.exo_det_steady_state = [];
oo_.exo_det_simul = [];
michel's avatar
michel committed
428

429
M_.params = [];
430
M_.endo_histval = [];
431
M_.Correlation_matrix = [];
432
M_.Correlation_matrix_ME = [];
433

434
435
436
% homotopy
options_.homotopy_mode = 0;
options_.homotopy_steps = 1;
437
options_.homotopy_force_continue = 0;
438

439
% Simplex optimization routine (variation on Nelder Mead algorithm).
440
441
options_.simplex = [];

442
443
444
445
446
447
448
449
450
451
% CMAES optimization routine.
cmaes.SaveVariables='off';
cmaes.DispFinal='on';
cmaes.WarnOnEqualFunctionValues='no';
cmaes.DispModulo='10';
cmaes.LogModulo='0';
cmaes.LogTime='0';
options_.cmaes = cmaes;


452
453
454
455
456
457
458
459
460
461
462
463
464
% prior analysis
options_.prior_mc = 20000;
options_.prior_analysis_endo_var_list = [];

% did model undergo block decomposition + minimum feedback set computation ?
options_.block = 0;

% model evaluated using a compiled MEX
options_.use_dll = 0;

% model evaluated using bytecode.dll
options_.bytecode = 0;

465
% if equal to 1 use a fixed point method to solve Sylvester equation (for large scale models)
466
467
options_.sylvester_fp = 0;

468
469
470
471
% convergence criteria to solve iteratively a sylvester equations
options_.sylvester_fixed_point_tol = 1e-12;

% if 1 use a fixed point method to solve Lyapunov equation (for large scale models)
472
options_.lyapunov_fp = 0;
473
474
% if 1 use a doubling algorithm to solve Lyapunov equation (for large scale models)
options_.lyapunov_db = 0;
475
% if 1 use a square root solver to solve Lyapunov equation (for large scale models)
476
477
478
479
480
options_.lyapunov_srs = 0;

% convergence criterion for iteratives methods to solve lyapunov equations
options_.lyapunov_fixed_point_tol = 1e-10;
options_.lyapunov_doubling_tol = 1e-16;
481

482
483
484
485
486
487
% if equal to 1 use a cycle reduction method to compute the decision rule (for large scale models)
options_.dr_cycle_reduction = 0;

% convergence criterion for iteratives methods to solve the decision rule
options_.dr_cycle_reduction_tol = 1e-7;

488
489
490
491
492
493
494
495
% if equal to 1 use a logarithmic reduction method to compute the decision rule (for large scale models)
options_.dr_logarithmic_reduction = 0;

% convergence criterion for iteratives methods to solve the decision rule
options_.dr_logarithmic_reduction_tol = 1e-12;

% convergence criterion for iteratives methods to solve the decision rule
options_.dr_logarithmic_reduction_maxiter = 100;
496

497
498
499
500
501
% dates for historical time series
options_.initial_date.freq = 1;
options_.initial_date.period = 1;
options_.initial_date.subperiod = 0;

502
503
% discretionary policy
options_.discretionary_policy = 0;
504
options_.discretionary_tol = 1e-7;
505

506
507
508
% Shock decomposition
options_.parameter_set = [];

509
510
511
% Nonlinearfilters
options_.nonlinear_filter = [];

Houtan Bastani's avatar
Houtan Bastani committed
512
% SBVAR & MS SBVAR initializations:
513
514
515
% SBVAR
options_.ms.vlistlog = [];
options_.ms.restriction_fname = 0;
516
517
518
519
520
521
522
523
524
525
526
527
528
options_.ms.cross_restrictions = 0;
options_.ms.contemp_reduced_form = 0;
options_.ms.real_pseudo_forecast = 0;
options_.ms.dummy_obs = 0;
options_.ms.ncsk = 0;
options_.ms.indxgforhat = 1;
options_.ms.indxgimfhat = 1;
options_.ms.indxestima = 1;
options_.ms.indxgdls = 1;
options_.ms.cms =0;
options_.ms.ncms = 0;
options_.ms.eq_cms = 1;
options_.ms.banact = 1;
529
options_.ms.log_var = [];
530
531
options_.ms.Qi = [];
options_.ms.Ri = [];
532
533
534
options_.ms.lower_cholesky = 0;
options_.ms.upper_cholesky = 0;
options_.ms.constants_exclusion = 0;
Houtan Bastani's avatar
Houtan Bastani committed
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
%options_.ms.nstates = 2;
%options_.ms.indxscalesstates = 0;
%options_.ms.q_diag = 0.85;
%options_.ms.flat_prior = 0;
%options_.ms.nstd = 6;
%options_.ms.ninv = 1000;
%options_.ms.indxparr = 1;
%options_.ms.indxovr = 0;
%options_.ms.aband = 1;
%options_.ms.indxap = 1;
%options_.ms.apband = 1;
%options_.ms.indximf = 1;
%options_.ms.imfband = 1;
%options_.ms.indxfore = 0;
%options_.ms.foreband = 0;
%options_.ms.cnum = 0;

% MS SBVAR (and some SBVAR)
553
554
options_ = initialize_ms_sbvar_options(M_, options_);

555
556
557
558
559
% saved graph formats
options_.graph_save_formats.eps = 1;
options_.graph_save_formats.pdf = 0;
options_.graph_save_formats.fig = 0;

560
% risky steady state
561
562
options_.risky_steadystate = 0;

Johannes Pfeifer's avatar
Johannes Pfeifer committed
563
564
% endogenous prior
options_.endogenous_prior = 0;
565
options_.endogenous_prior_restrictions.irf={};
Johannes Pfeifer's avatar
Johannes Pfeifer committed
566

567
568
569
% use GPU
options_.gpu = 0;

570
571
% initialize persistent variables in priordens()
priordens([],[],[],[],[],[],1);
572
573
% initialize persistent variables in dyn_first_order_solver()
dyn_first_order_solver();
574
575

% Set dynare random generator and seed.
576
577
set_dynare_seed('default');

578
579
580
% Create directories
[junk,junk]=mkdir(M_.fname);
[junk,junk]=mkdir([M_.fname '/Output']);
581
582

% Load user configuration file.
583
584
585
586
if isfield(options_, 'global_init_file')
    run(options_.global_init_file);
end