208 lines
9.5 KiB
Matlab
208 lines
9.5 KiB
Matlab
function options_occbin_ = set_default_options(options_occbin_,M_,flag)
|
|
% function options_occbin_ = set_default_options(options_occbin_,M_,flag)
|
|
% Sets default options for Occbin
|
|
%
|
|
% INPUTS
|
|
% - options_occbin_ [structure] Matlab's structure describing the current options
|
|
% - M_ [structure] Matlab's structure describing the model
|
|
% - flag [cell] govern what/how much to initialize
|
|
%
|
|
% OUTPUTS
|
|
% - options_occbin_ [structure] Matlab's structure describing the current options
|
|
|
|
% Copyright (C) 2021 Dynare Team
|
|
%
|
|
% 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 <https://www.gnu.org/licenses/>.
|
|
|
|
if nargin<3
|
|
flag='all';
|
|
end
|
|
|
|
if ismember(flag,{'all'})
|
|
options_occbin_.solver.solve_algo=3; %solver for match_function: csolve
|
|
options_occbin_.solver.solve_tolx=1e-10;
|
|
options_occbin_.solver.solve_tolf=1e-5;
|
|
options_occbin_.solver.maxit=10;
|
|
options_occbin_.write_regimes.periods=[];
|
|
options_occbin_.write_regimes.filename=[M_.fname '_occbin_regimes'];
|
|
end
|
|
|
|
if ismember(flag,{'filter','all'})
|
|
options_occbin_.filter.use_relaxation = false;
|
|
end
|
|
|
|
if ismember(flag,{'forecast','all'})
|
|
options_occbin_.forecast.debug_flag=false;
|
|
options_occbin_.forecast.frcst_regimes=[];
|
|
options_occbin_.forecast.maxit=30;
|
|
options_occbin_.forecast.periods=30;
|
|
options_occbin_.forecast.qmc=0;
|
|
options_occbin_.forecast.replic=0;
|
|
options_occbin_.forecast.SHOCKS0=[];
|
|
options_occbin_.forecast.treepath=1; % number of branches
|
|
end
|
|
|
|
if ismember(flag,{'irf','all'})
|
|
options_occbin_.irf.init_regime=[];
|
|
options_occbin_.irf.maxit=30;
|
|
options_occbin_.irf.threshold = 10^-6;
|
|
% options_occbin_.irf.periods=options_.irf;
|
|
options_occbin_.irf.shocksize=[];
|
|
options_occbin_.irf.shocksigns = {'1','_1'};
|
|
end
|
|
|
|
if ismember(flag,{'likelihood','all'})
|
|
options_occbin_.likelihood.curb_retrench = false;
|
|
options_occbin_.likelihood.first_period_occbin_update = true;
|
|
options_occbin_.likelihood.full_output = false;
|
|
options_occbin_.likelihood.IF_likelihood = false;
|
|
options_occbin_.likelihood.init_regime_history = [];
|
|
options_occbin_.likelihood.init_binding_indicator = false(0);
|
|
options_occbin_.likelihood.inversion_filter = false;
|
|
options_occbin_.likelihood.IVF_shock_observable_mapping = [];
|
|
options_occbin_.likelihood.maxit = 50; % this is for occbin solver algo
|
|
options_occbin_.likelihood.max_number_of_iterations = 10; % this is for occbin_kalman_update loop
|
|
options_occbin_.likelihood.periods = 100;
|
|
options_occbin_.likelihood.check_ahead_periods=200;
|
|
options_occbin_.likelihood.periodic_solution=true;
|
|
options_occbin_.likelihood.piecewise_only = true;
|
|
options_occbin_.likelihood.restrict_state_space = true;
|
|
options_occbin_.likelihood.status=true;
|
|
options_occbin_.likelihood.use_updated_regime = true;
|
|
options_occbin_.likelihood.waitbar=false;
|
|
end
|
|
|
|
if ismember(flag,{'plot_shock_decomp','all'})
|
|
options_occbin_.plot_shock_decomp.add_steadystate = false;
|
|
options_occbin_.plot_shock_decomp.add_zero_line = false;
|
|
options_occbin_.plot_shock_decomp.decomp_type='qoq';
|
|
options_occbin_.plot_shock_decomp.figure_size = [200 100 650 850];
|
|
options_occbin_.plot_shock_decomp.grid = false;
|
|
options_occbin_.plot_shock_decomp.graph_line=false;
|
|
options_occbin_.plot_shock_decomp.graph_regime=false;
|
|
options_occbin_.plot_shock_decomp.graph_simul=char('total','linear');
|
|
options_occbin_.plot_shock_decomp.graph_simul_zoom=char('total','piecewise','linear');
|
|
options_occbin_.plot_shock_decomp.graph_zoom=false;
|
|
options_occbin_.plot_shock_decomp.init_names_=[];
|
|
options_occbin_.plot_shock_decomp.lw=2;
|
|
options_occbin_.plot_shock_decomp.mystyles = {':','--',':','-.'};
|
|
options_occbin_.plot_shock_decomp.ncol = 3;
|
|
options_occbin_.plot_shock_decomp.no_legend = false;
|
|
options_occbin_.plot_shock_decomp.no_others = false;
|
|
options_occbin_.plot_shock_decomp.T0 = []; % initial date in plot (must be >= TINIT)
|
|
options_occbin_.plot_shock_decomp.TINIT = dates(); % date of initialized states for shock decomp
|
|
% options_occbin_.plot_shock_decomp.use_shock_groups=options_.plot_shock_decomp.use_shock_groups;
|
|
end
|
|
|
|
if ismember(flag,{'plot_simul','all'})
|
|
options_occbin_.plot_simul.add_steadystate = false;
|
|
options_occbin_.plot_simul.add_vertical_line = false;
|
|
options_occbin_.plot_simul.cutoff = false;
|
|
options_occbin_.plot_simul.figure_size = [50 50 850 850];
|
|
options_occbin_.plot_simul.labels = {'Linear','Piecewise','Simulation 3','Simulation 4'};
|
|
options_occbin_.plot_simul.legend = true;
|
|
options_occbin_.plot_simul.length_simul = [];
|
|
options_occbin_.plot_simul.linewidth = 2;
|
|
options_occbin_.plot_simul.log_normalize_graph = false;
|
|
options_occbin_.plot_simul.marg_h(1) = 0.08;
|
|
options_occbin_.plot_simul.marg_h(2) = 0.055;
|
|
options_occbin_.plot_simul.mycolors = get(groot,'DefaultAxesColorOrder');
|
|
options_occbin_.plot_simul.my_dir = 'OccBinSimul';
|
|
options_occbin_.plot_simul.mystyles = {'-','--',':','-.'};
|
|
options_occbin_.plot_simul.mystst_simul_pos = false;
|
|
options_occbin_.plot_simul.ncols = 3;
|
|
options_occbin_.plot_simul.normalization_point = 1;
|
|
options_occbin_.plot_simul.nrows = 3;
|
|
options_occbin_.plot_simul.print_emf = false;
|
|
options_occbin_.plot_simul.scale_y = false;
|
|
options_occbin_.plot_simul.scale_y1 = true;
|
|
options_occbin_.plot_simul.scale_y2 = true;
|
|
options_occbin_.plot_simul.simulname = 'occbin_simul';
|
|
options_occbin_.plot_simul.subplot_gap = 0.07;
|
|
options_occbin_.plot_simul.threshold = 10^-6;
|
|
options_occbin_.plot_simul.timeaxis = [];
|
|
options_occbin_.plot_simul.use_grid = true;
|
|
|
|
end
|
|
|
|
if ismember(flag,{'shock_decomp','all'})
|
|
options_occbin_.shock_decomp.additive=false;
|
|
options_occbin_.shock_decomp.curb_retrench=false;
|
|
options_occbin_.shock_decomp.debug=false;
|
|
options_occbin_.shock_decomp.init_in_others=false;
|
|
options_occbin_.shock_decomp.init_names_=[];
|
|
options_occbin_.shock_decomp.init_total=false;
|
|
options_occbin_.shock_decomp.init2shocks= false;
|
|
options_occbin_.shock_decomp.main_effect=false;
|
|
options_occbin_.shock_decomp.main_effect_init=false;
|
|
options_occbin_.shock_decomp.maxit = 100;
|
|
options_occbin_.shock_decomp.nfrcst=0;
|
|
options_occbin_.shock_decomp.periods = 60;
|
|
options_occbin_.shock_decomp.check_ahead_periods=200;
|
|
options_occbin_.shock_decomp.shocks_only=false;
|
|
options_occbin_.shock_decomp.total_effect=false;
|
|
options_occbin_.shock_decomp.conditional_only=true;
|
|
options_occbin_.shock_decomp.TINIT = dates(); % date to initialize states for shock decomp
|
|
% options_occbin_.shock_decomp.use_shock_groups=options_.plot_shock_decomp.use_shock_groups;
|
|
end
|
|
|
|
if ismember(flag,{'simul','all'})
|
|
options_occbin_.simul.algo_truncation = 1;
|
|
options_occbin_.simul.debug = false;
|
|
options_occbin_.simul.curb_retrench=false;
|
|
options_occbin_.simul.endo_init=zeros(M_.endo_nbr,1);
|
|
options_occbin_.simul.full_output=true;
|
|
options_occbin_.simul.init_regime=[];
|
|
options_occbin_.simul.init_binding_indicator=false(0);
|
|
options_occbin_.simul.exo_pos=1:M_.exo_nbr;
|
|
options_occbin_.simul.local=true;
|
|
options_occbin_.simul.maxit=10;
|
|
options_occbin_.simul.max_periods=inf;
|
|
options_occbin_.simul.periods=30;
|
|
options_occbin_.simul.check_ahead_periods=200;
|
|
options_occbin_.simul.periodic_solution=true;
|
|
options_occbin_.simul.piecewise_only = false;
|
|
options_occbin_.simul.reset_regime_in_new_period = false;
|
|
options_occbin_.simul.restrict_state_space=false;
|
|
options_occbin_.simul.SHOCKS=zeros(1,M_.exo_nbr);
|
|
options_occbin_.simul.waitbar=true;
|
|
end
|
|
|
|
if ismember(flag,{'smoother','all'})
|
|
options_occbin_.smoother.curb_retrench = false;
|
|
options_occbin_.smoother.debug = false;
|
|
options_occbin_.smoother.fast = false;
|
|
options_occbin_.smoother.first_period_occbin_update = true;
|
|
options_occbin_.smoother.full_output = false;
|
|
% options.occbin.smoother.init_mode = 1; % 0 = standard; 1 = unconditional frcsts zero shocks+smoothed states in each period
|
|
options_occbin_.smoother.init_regime_history = [];
|
|
options_occbin_.smoother.init_binding_indicator = false(0);
|
|
options_occbin_.smoother.inversion_filter = false;
|
|
options_occbin_.smoother.linear_smoother = true;
|
|
options_occbin_.smoother.maxit = 30; % this is for occbin solver algo
|
|
options_occbin_.smoother.max_number_of_iterations = 10; % this is for smoother loop
|
|
options_occbin_.smoother.periods = 100;
|
|
options_occbin_.smoother.check_ahead_periods=200;
|
|
options_occbin_.smoother.piecewise_only = true;
|
|
options_occbin_.smoother.plot = true;
|
|
options_occbin_.smoother.status=true;
|
|
options_occbin_.smoother.waitbar=true;
|
|
% options.occbin.smoother.restrict_state_space = 1;
|
|
end
|
|
|
|
if ismember(flag,{'graph','all'})
|
|
options_occbin_.graph.steady_state=true;
|
|
end |