% VERSION 2.0, MARCH 1997, COPYRIGHT H. UHLIG. % OPTIONS.M sets the options to be used in all the subroutines. % It is called by DO_IT.M. If you use any of the routines % "by hand", i.e. without calling them via DO_IT.M, you also % have to execute OPTIONS.M first. % If you want to change some options, change them here. % % Some options can also set directly inside the programs: they are then not overwritten % here. They are only set here to their default values, if they have not been set previously. % Of course, if you didn't set them inside the program, but they have been set by % a previous program, which you have executed before, then the values set by this % previous program will not be overwritten either and thus used. I.e. IT IS GENERALLY A % GOOD IDEA TO TYPE CLEAR BEFORE RUNNING YOUR PROGRAM SO THAT THE OPTIONS WILL ALWAYS BE % SET THE WAY YOU WANT THEM TO. Alternatively, if you have run your program once, % just change some options, and rerun the calculations by typing do_it % % The options, which can be set within a program or by hand, are, % together with their default values: % % IT IS BAD STYLE NOT TO SET THESE OPTIONS WITHIN YOUR PROGRAM: % PERIOD = 4; % number of periods per year, i.e. 12 for monthly, 4 for quarterly % GNP_INDEX = 2; % Index of output among the variables selected for HP filter % % IT IS OK TO TRUST THE DEFAULT SETTINGS FOR THE FOLLOWING OPTIONS: % DISPLAY_IMMEDIATELY = 0; % = 1: displays warning messages immediately. % % DO THIS, IF YOUR CALCULATIONS MYSTERIOUSLY CRASH! % DISPLAY_LATER = 0; % = 1: displays warning messages after SOLVE.M % % DO THIS, IF YOUR CALCULATIONS MYSTERIOUSLY CRASH! % DISPLAY_AT_THE_END = 1; % = 1: displays warning messages at the end of all computations. % MANUAL_ROOTS = 0; % = 1, if you want to choose your own % % roots, otherwise set = 0. % % See SOLVE.M for instructions. % IGNORE_VV_SING = 1;% =1: Ignores, if VV is singular. % % Sometimes useful for sunspots. Cross your fingers... % DO_MOMENTS = 0; % Turn on, if you want to do % % fourier-transforms-based calculations of moments % DO_SIMUL = 0; % Turn on, if you want to do simulations or % % simulation-based calculations of moments % % Only relevant, if DO_MOMENTS = 1 or DO_SIMUL = 1: % DO_HP_FILTER= 1; % Set to = 1, if you want moments and simulations with HP-filter. % % set to = 0, if you want moments and simulations without HP-filter. % HP_LAMBDA = 1600*(PERIOD/4)^4; % The lambda parameter for the HP-Filter % HP_SELECT = 1:(m_states+n_endog+k_exog); % Selecting the variables for the HP Filter calculations. % N_LEADS_LAGS = 6; % calculate autocorr. table up to N_LEADS_LAGS-1 leads and lags. % SIM_MODE = 1; % Set to = 1, if you just want one simulated time series. % % Set to = 2, if you want to do simulation-based calculation % % of moments. % SIM_LENGTH = 100; % Length of time series to be simulated. % SIM_RANDOM_START = 1; % % = 1, if you want a random start, = 0, if you want predetermined start % SIM_X_START = zeros(m_states,1); % % if predetermined start, SIM_X_START should be a vector of length % % m, setting the initial values for the endogenous state variables x. % SIM_Z_START = zeros(k_exog,1); % % if predetermined start, SIM_X_START should be a vector of length % % k, setting the initial values for the exogenous state variables z. % SIM_GIVEN_EPS = 0; % set = 1, if you want to choose the shocks epsilon yourself. % % In that case, declare them beforehand as % % given_eps % % which needs to be a matrix of size k_exog x SIM_LENGTH % SIM_N_SERIES = 50; % number of simulated series for the calculations of moments. % % This should be set to a value of at least 4 to get % % small sample standard errors for the computed moments. % % The moments computed from the data should then lie within a % % chosen confidence interval to be calculated from the moments % % and their small-sample standard errors from the simulations. % % ONLY RELEVANT FOR SIM_MODE = 2. % SIM_TRACK_N = 1; % Prints a little message at the start of each simulation. % % ONLY RELEVANT FOR SIM_MODE = 2. % SIM_TRACK_LENGTH = 1; % Prints a little message every SIM_TRACK_FAC date of % % a simulation. SIM_TRACK_FAC = 1000 is set in OPTIONS.M. % % It also prints a message when applying the HP-Filter. % % The following are options for modifying graphs: % HORIZON = 32; % how far out should the impulse responses be calculated % DO_PLOTS = 1; % if impulse response plots should be made, = 0, if not. % IMP_SELECT = 1:(m_states+n_endog+k_exog); % % a vector containing the indices of the variables to be plotted % DO_ENLARGE = 0; % =1, if you need large letter sizes for overheads, say. % % If set to 1, letter size will be manipulated by ENLARGE.M % PRINT_FIG = 0; % Set = 1, if you want to sent figures directly to printer % SAVE_FIG = 0; % Set = 1, if you want to save figures as encapsulated postscript files. % % The graphic names are automatically chosen. E.g. for impulse responses, % % the file names are imprespN.eps, where N = 1,2,... . Maximum is N = 9! % % Note: you need to set PRINT_FIG = 0 to be able to use SAVE_FIG. % Only relevant if DO_SIMUL = 1: % SIM_GRAPH = 1; % Set to = 1 to see plots of the simulated series. % SIM_MAX = 200; % Maximal number of dates to be used for the plots. % SIM_SELECT = 1:(m_states+n_endog+k_exog); % % Selecting the variables for the graphics of simulations. % SIM_JOINT = 1; % Set to 0, if you want each simulated series on a separate graph. % % Set to 1, if you want them all on the same graph. % SIM_DATE0 = 0; % Set to the initial date of the simulated series. % % CHANGING ANY OPTION OTHER THAN THE ONES LISTED ABOVE REQUIRES CHANGING THE FILE OPTIONS.M % Copyright: H. Uhlig. Feel free to copy, modify and use at your own risk. % However, you are not allowed to sell this software or otherwise impinge % on its free distribution. [l_equ,m_states] = size(AA); [l_equ,n_endog ] = size(CC); [l_equ,k_exog ] = size(DD); %============> GENERAL OPTIONS: if exist('PERIOD')~=1, PERIOD = 4; % number of periods per year, i.e. 12 for monthly, 4 for quarterly end; if exist('GNP_INDEX')~=1, GNP_INDEX = 2; % Index of output among the variables selected for HP filter end; if exist('DISPLAY_IMMEDIATELY')~=1, DISPLAY_IMMEDIATELY = 0; % = 1: displays warning messages immediately. end; if DISPLAY_IMMEDIATELY, message = ['OPTIONS.M: You will receive warning messages always immediately. ' ' You can turn that off with DISPLAY_IMMEDIATELY = 0 ']; disp(message); warnings = [warnings;message]; end; message = ['OPTIONS.M: There are lots of options to choose from. Type help options' ' to get more information about them! ']; if DISPLAY_IMMEDIATELY, disp(message); end; warnings = [warnings;message]; if exist('DISPLAY_LATER')~=1, DISPLAY_LATER = 0; % = 1: displays warning messages after SOLVE.M end; if exist('DISPLAY_AT_THE_END')~=1, DISPLAY_AT_THE_END = 1; % = 1: displays warning messages at the end of all computations. end; if exist('DO_HP_FILTER')~=1, DO_HP_FILTER= 1; % Set to = 1, if you want moments and simulations with HP-filter. % set to = 0, if you want moments and simulations without HP-filter. end; if exist('HP_LAMBDA')~=1, % The lambda parameter for the HP-Filter: HP_LAMBDA = 1600*(PERIOD/4)^4; % This is not the literature standard, % but I believe it is correct. % HP_LAMBDA = 1600*(PERIOD/4)^2; % This is the literature standard end; if exist('HP_SELECT')~=1, HP_SELECT = 1:(m_states+n_endog+k_exog); % Selecting the variables for the HP Filter calcs. end; if exist('N_LEADS_LAGS')~=1, N_LEADS_LAGS = 6; % calculate autocorr. table up to N_LEADS_LAGS-1 leads and lags. end; if exist('DO_ENLARGE')~=1, DO_ENLARGE = 0; % =1, if you need large letter sizes for overheads, say. % If set to 1, letter size will be manipulated by % the program ENLARGE.M end; if exist('PRINT_FIG')~=1, PRINT_FIG = 0; % Set = 1, if you want to sent figures directly to printer end; if exist('SAVE_FIG')~=1, SAVE_FIG = 0; % Set = 1, if you want to save figures as encapsulated postscript files. % The graphic names are automatically chosen. E.g. for impulse responses, % the file names are imprespN.eps, where N = 1,2,... . Maximum is N = 9! % Note: you need to set PRINT_FIG = 0 to be able to use SAVE_FIG. end; %============> options for DO_IT.M if exist('DO_MOMENTS')~=1, DO_MOMENTS = 0; % Turn on, if you want to do % fourier-transforms-based calculations of moments end; if DO_MOMENTS, message = ['OPTIONS.M: Note, that I calculate moments, which takes time. If you ' ' do not want to have them calculated, set DO_MOMENTS = 0 ']; if DISPLAY_IMMEDIATELY, disp(message); end; warnings = [warnings;message]; else message = ['OPTIONS.M: Note, that I will not calculate moments. ' ' If you want to have them calculated, set DO_MOMENTS = 1 ']; if DISPLAY_IMMEDIATELY, disp(message); end; warnings = [warnings;message]; end; if exist('DO_SIMUL')~=1, DO_SIMUL = 0; % Turn on, if you want to do simulations or % simulation-based calculations of moments end; if DO_SIMUL, message = ['OPTIONS.M: Note, that I calculate simulations, which takes time. ' ' If you do not want to have them calculated, set DO_SIMUL = 0']; if DISPLAY_IMMEDIATELY, disp(message); end; warnings = [warnings;message]; else message = ['OPTIONS.M: Note, that I will not calculate simulations. ' ' If you want to have them calculated, set DO_SIMUL = 1 ']; if DISPLAY_IMMEDIATELY, disp(message); end; warnings = [warnings;message]; end; if DO_SIMUL | DO_MOMENTS, if DO_HP_FILTER, if HP_LAMBDA >= 1e+11 line1 = sprintf('OPTIONS.M: I will use the HP-Filter with lambda=%12.4e. ',HP_LAMBDA); elseif HP_LAMBDA >= 1000, line1 = sprintf('OPTIONS.M: I will use the HP-Filter with lambda=%12.0f. ',HP_LAMBDA); elseif HP_LAMBDA >= 1, line1 = sprintf('OPTIONS.M: I will use the HP-Filter with lambda=%12.4f. ',HP_LAMBDA); elseif HP_LAMBDA >= .0001, line1 = sprintf('OPTIONS.M: I will use the HP-Filter with lambda=%12.8f. ',HP_LAMBDA); else line1 = sprintf('OPTIONS.M: I will use the HP-Filter with lambda=%12.4e. ',HP_LAMBDA); end; message = [line1 ' If you want to change that, modify DO_HP_FILTER and ' ' HP_LAMBDA in OPTIONS.M or in your program or by changing e.g.' ' HP_LAMBDA now and restarting the calculations with do_it ']; if DISPLAY_IMMEDIATELY, disp(message); end; warnings = [warnings;message]; else message = ['OPTIONS.M: I will NOT use the HP-Filter. ' ' If you want to change that, modify DO_HP_FILTER and ' ' HP_LAMBDA in OPTIONS.M or in your program or by modifying ' ' them now and restarting your calculations by typing do_it ']; if DISPLAY_IMMEDIATELY, disp(message); end; warnings = [warnings;message]; end; end; %============> options for SOLVE.M TOL = .000001; % Roots smaller than TOL are regarded as zero. % Complex numbers with distance less than TOL are regarded as equal. if exist('MANUAL_ROOTS')~=1, MANUAL_ROOTS = 0; % = 1, if you want to choose your own % roots, otherwise set = 0. % See SOLVE.M for instructions. end; if exist('IGNORE_VV_SING')~=1, IGNORE_VV_SING = 1; % =1: Ignores, if VV is singular. % Sometimes useful for sunspots. Cross your fingers... end; %============> options for SOL_OUT.M DISPLAY_ROOTS = 1; % Set = 1, if you want to see the roots. %============> options for IMPRESP.M if exist('DO_PLOTS')~=1, DO_PLOTS = 0; % if impulse response plots should be made, = 0, if not. end; if DO_PLOTS, message = ['OPTIONS.M: Note, that I plot impulse responses, which you may dislike. ' ' If you do not want to have them plotted, set DO_PLOTS = 0 ']; if DISPLAY_IMMEDIATELY, disp(message); end; warnings = [warnings;message]; else message = ['OPTIONS.M: Note, that I will not plot impulse responses. ' ' If you want to have them plotted, set DO_PLOTS = 1 ']; if DISPLAY_IMMEDIATELY, disp(message); end; warnings = [warnings;message]; end; if exist('HORIZON')~=1, HORIZON = 32;% how far out should the impulse responses be calculated\ end; if exist('IMP_SELECT')~=1, IMP_SELECT = 1:(m_states+n_endog+k_exog); % a vector containing the indices of the variables to be plotted end; TXT_MARKER = 3; % Where to put the labels on the graph, a number between 1 and HORIZON/2. %============> options for ENLARGE.M LET_SIZE = 18; % Size of letters in text on axes and title. LAB_SIZE = 24; % Size of letters in labels OLD_LET_SIZE = 12; % Default letter size of MATLAB. OLD_LAB_SIZE = 12; % Default letter size of MATLAB %============> options for MOMENTS.M DO_CALC_XX = 1; % Set to 0, if XX is given N_GRIDPOINTS = 64; % gridpoints for inverse Fourier transform. Needs to be a power of 2. MOM_TOL = 0.0001; % If PP has roots below TOL in absolute value, % then PP may be singular, and a safer but slower route to calculate % everything is taken. if exist('HP_SELECT')~=1, HP_SELECT = 1:(m_states+n_endog+k_exog); % Selecting the variables for the HP Filter calculations. else if DO_MOMENTS, message = ['OPTIONS.M: I will proceed with your chosen HP_SELECT. If that leads to' ' a crash in moments.m or mom_out.m or to not a complete ' ' output there, then either set HP_SELECT to something ' ' sensible or type clear before running your program. ']; if DISPLAY_IMMEDIATELY, disp(message); end; warnings = [warnings;message]; end; end; %============> options for MOM_OUT.M DO_HP_GRAPH = 0; % Set to = 1 to see plots of the spectral densities. DO_DISP1 = 1; % Set to = 1 to see printout of the autocorrelation matrix. DO_DISP2 = 0; % Set to = 1 to see printout of the variance-covariance matrix. DO_DISP3 = 1; % Set to = 1 to see printout of the vector of variances. % For the graphics output in MOM_OUT.M: MOM_TXT_MARKER = N_GRIDPOINTS/24; % Where to put the labels on the graph, % a number between 1 and N_GRIDPOINTS/2. %============> options for SIMUL.M if exist('SIM_MODE')~=1, SIM_MODE = 1; % Set to = 1, if you just want one simulated time series. % Set to = 2, if you want to do simulation-based calculation % of moments. end; if exist('SIM_LENGTH')~=1, SIM_LENGTH = 100; % Length of time series to be simulated. end; if exist('SIM_RANDOM_START')~=1, SIM_RANDOM_START = 1; % = 1, if you want a random start, = 0, if you want predetermined start end; if exist('SIM_X_START')~=1, SIM_X_START = zeros(m_states,1); % if predetermined start, SIM_X_START should be a vector of length % m, setting the initial values for the endogenous state variables x. end; if exist('SIM_Z_START')~=1, SIM_Z_START = zeros(k_exog,1); % if predetermined start, SIM_X_START should be a vector of length % k, setting the initial values for the exogenous state variables z. end; SIM_DISCARD = 100; % Length of initial discarded observations, if random start. if exist('SIM_GIVEN_EPS')~=1, SIM_GIVEN_EPS = 0; % set = 1, if you want to choose the shocks epsilon yourself. % In that case, declare them beforehand as % given_eps % which needs to be a matrix of size k_exog x SIM_LENGTH end; SIM_GIVEN_DISCARD = 0;% set = 1, if you want to choose the shocks epsilon % for the initially discarded observations (SIM_RANDOM_START = 1) % yourself. % In that case, declare them beforehand as % discard_eps % which needs to be a matrix of size k_exog x SIM_DISCARD if exist('SIM_N_SERIES')~=1, SIM_N_SERIES = 50; % number of simulated series for the calculations of moments. % This should be set to a value of at least 4 to get % small sample standard errors for the computed moments. % The moments computed from the data should then lie within a % chosen confidence interval to be calculated from the moments % and their small-sample standard errors from the simulations. % ONLY RELEVANT FOR SIM_MODE = 2. end; if exist('SIM_TRACK_N')~=1, SIM_TRACK_N = 1; % Prints a little message at the start of each simulation. % ONLY RELEVANT FOR SIM_MODE = 2. end; if exist('SIM_TRACK_LENGTH')~=1, SIM_TRACK_LENGTH = 1; % Prints a little message every SIM_TRACK_FAC date of % a simulation. end; SIM_TRACK_FAC = 1000; %============> options for SIM_OUT.M if exist('SIM_GRAPH')~=1, SIM_GRAPH = 1; % Set to = 1 to see plots of the simulated series. end; if exist('SIM_SELECT')~=1, SIM_SELECT = 1:(m_states+n_endog+k_exog); % Selecting the variables for the graphics of simulations. end; if exist('SIM_JOINT')~=1, SIM_JOINT = 1; % Set to 0, if you want each simulated series on a separate graph. % Set to 1, if you want them all on the same graph. end; if exist('SIM_DATE0')~=1, SIM_DATE0 = 0; % Set to the initial date of the simulated series. end; if exist('SIM_MAX')~=1, SIM_MAX = 200; % Maximal amount of dates to be plotted of a simulation. end; SIM_DO_DISP1 = 1;% Set to = 1 to see printout of the autocorrelation matrix. SIM_DO_DISP2 = 0;% Set to = 1 to see printout of the variance-covariance matrix. SIM_DO_DISP3 = 1;% Set to = 1 to see printout of the vector of variances. % For the graphics output in SIM_OUT.M: % SIM_TXT_MARKER = min(SIM_LENGTH,SIM_MAX)/10; % Where to put the labels on the graph, % a number between 1 and SIM_LENGTH. % This is currently deactivated. Instead, label % positions are chosen "intelligently". SIM_CUT = 0.6; % This controls where the labels go on the simulation graphs. % It should be a number between 0 and 1. The labels are % "allowed" to "start" anywhere between 0 and SIM_CUT, if % we think of the length of the entire time domain of the % simulation to be normalized by unity. E.g., for SIM_CUT = 0, % the labels will always be at the left-most end, which is % thus probably not a good choice. SIM_PLOT_RAW = 0; % set = 1, if you want a plot of the raw, unfiltered series, % even though you have chosen to HP-filter, DO_HP_FILTER = 1. % Note, that if you have chosen to save figures, then % previously saved figures will be overwritten.