ms_forecast.m 3.18 KB
Newer Older
1
2
function [options_, oo_]=ms_forecast(M_, options_, oo_)
%function ms_forecast()
3
% MS-SBVAR Forecast
4
5
%
% INPUTS
Houtan Bastani's avatar
Houtan Bastani committed
6
7
8
%    M_:          (struct)    model structure
%    options_:    (struct)    options
%    oo_:         (struct)    results
9
10
%
% OUTPUTS
Houtan Bastani's avatar
Houtan Bastani committed
11
12
%    options_:    (struct)    options
%    oo_:         (struct)    results
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
%
% SPECIAL REQUIREMENTS
%    none

% Copyright (C) 2011 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 <http://www.gnu.org/licenses/>.

34
35
36
37
38
39
40
disp('MS-SBVAR Forecasts');
options_ = set_file_tags(options_);
[options_, oo_] = set_ms_estimation_file(options_, oo_);
options_ = set_ms_simulation_file(options_);
clean_files_for_second_type_of_mex(M_, options_, 'forecast')
forecastdir = [options_.ms.output_file_tag filesep 'Forecast'];
create_dir(forecastdir);
41

42
opt = { ...
43
    {'file_tag', options_.ms.file_tag}, ...
44
45
46
47
48
49
50
    {'seed', options_.DynareRandomStreams.seed}, ...
    {'horizon', options_.ms.horizon}, ...
    {'number_observations', options_.ms.forecast_data_obs}, ...
    {'error_bands', options_.ms.error_bands}, ...
    {'percentiles', options_.ms.error_band_percentiles}, ...
    {'thin', options_.ms.thinning_factor}
    };
51

52
53
54
55
if options_.ms.median
    opt = [opt(:)' {{'median'}}];
end

56
57
[err, forecast] = mex_ms_forecast([opt(:)', {{'free_parameters',oo_.ms.maxparams}, ...
    {'shocks_per_parameter', options_.ms.shock_draws}}]);
58
mexErrCheck('mex_ms_forecast ergodic ', err);
59
plot_ms_forecast(M_,options_,forecast,'Forecast',options_.graph_save_formats,options_.TeX);
60

61
62
[err, regime_forecast] = mex_ms_forecast([opt(:)', {{'free_parameters',oo_.ms.maxparams}, ...
    {'shocks_per_parameter', options_.ms.shock_draws}, {'regimes'}}]);
63
mexErrCheck('mex_ms_forecast ergodic regimes', err);
64
save([forecastdir filesep 'ergodic_forecast.mat'], 'forecast', 'regime_forecast');
65

66
if exist(options_.ms.mh_file,'file') > 0
67
68
69
    [err, forecast] = mex_ms_forecast([opt(:)', {{'free_parameters',oo_.ms.maxparams}, ...
        {'shocks_per_parameter', options_.ms.shocks_per_parameter}, ...
        {'simulation_file', options_.ms.mh_file}, {'parameter_uncertainty'}}]);
70
    mexErrCheck('mex_ms_forecast bayesian ', err);
71
    plot_ms_forecast(M_,options_,forecast,'Forecast w/ Parameter Uncertainty',options_.graph_save_formats,options_.TeX);
72

73
74
75
    [err, regime_forecast] = mex_ms_forecast([opt(:)', {{'free_parameters',oo_.ms.maxparams}, ...
        {'shocks_per_parameter', options_.ms.shocks_per_parameter}, ...
        {'simulation_file', options_.ms.mh_file}, {'parameter_uncertainty','regimes'}}]);
76
    mexErrCheck('mex_ms_forecast bayesian regimes ', err);
77
    save([forecastdir filesep 'bayesian_forecast.mat'], 'forecast', 'regime_forecast');
78
79
end
end