diff --git a/doc/dynare.texi b/doc/dynare.texi
index b6f649014..5fd0cc9cf 100644
--- a/doc/dynare.texi
+++ b/doc/dynare.texi
@@ -7271,13 +7271,18 @@ decompositions, @i{i.e.} @math{Y(t|T)}, for @math{t=[T@dots{}T+k]}. @xref{vintag
@descriptionhead
-This command plots the historical shock decomposition already computed by command
-@code{shock_decomposition}.
-The @code{variable_names} provided govern for which
-variables the decomposition is plotted.
+This command plots the historical shock decomposition already computed by
+@code{shock_decomposition}. The @code{variable_names} provided govern which
+variables the decomposition is plotted for.
Note that this command must come after @code{shock_decomposition} or @code{realtime_shock_decomposition}.
+Further note that, unlike the majority of dynare commands, the options
+specified below are overwritten with their defaults before every call to
+@code{plot_shock_decomposition}. Hence, if you want to reuse an option in a
+subsequent call to @code{plot_shock_decomposition}, you must pass it to the
+command again.
+
@optionshead
@table @code
@@ -7295,11 +7300,14 @@ Note that this command must come after @code{shock_decomposition} or @code{realt
@itemx graph_format = ( @var{FORMAT}, @var{FORMAT}@dots{} )
@xref{graph_format}.
-@item detail_plot
-@anchor{detail_plot} Plots shock contributions using subplots, one per shock (or group of shocks).
+@item detail_plot = @var{INT_NUMBER}
+Plots shock contributions using subplots, one per shock (or group of
+shocks). Pass @math{1} to turn it on and @math{0} to turn it off. Default:
+@math{0}
-@item interactive
-@anchor{interactive} Under MATLAB, add uimenu's for detailed group plots.
+@item interactive = @var{INT_NUMBER}
+Under MATLAB, add uimenu's for detailed group plots. Pass @math{1} to turn it
+on and @math{0} to turn it off. Default: @math{0}
@item screen_shocks
@anchor{screen_shcoks} For large models (@i{i.e.} for models with more than @math{16}
diff --git a/matlab/WriteShockDecomp2Excel.m b/matlab/WriteShockDecomp2Excel.m
index 538d21aa0..dff5c79bb 100644
--- a/matlab/WriteShockDecomp2Excel.m
+++ b/matlab/WriteShockDecomp2Excel.m
@@ -33,7 +33,7 @@ fig_mode='';
fig_mode1='';
fig_name='';
screen_shocks=0;
-use_shock_groups = DynareOptions.use_shock_groups;
+use_shock_groups = DynareOptions.plot_shock_decomp.use_shock_groups;
if use_shock_groups
shock_groups = DynareModel.shock_groups.(use_shock_groups);
shock_ind = fieldnames(shock_groups);
diff --git a/matlab/annualized_shock_decomposition.m b/matlab/annualized_shock_decomposition.m
index 8552b9d4f..30cd81241 100644
--- a/matlab/annualized_shock_decomposition.m
+++ b/matlab/annualized_shock_decomposition.m
@@ -49,7 +49,7 @@ function [z, endo_names, endo_names_tex, steady_state, i_var, oo_] = annualized_
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see .
-opts = options_.shock_decomp;
+opts = options_.plot_shock_decomp;
nvar = length(i_var);
GYTREND0 = q2a.GYTREND0;
var_type = q2a.type;
@@ -61,8 +61,8 @@ cumfix = q2a.cumfix;
if isstruct(oo_)
% z = oo_.shock_decomposition;
myopts=options_;
- myopts.shock_decomp.type='qoq';
- myopts.shock_decomp.realtime=0;
+ myopts.plot_shock_decomp.type='qoq';
+ myopts.plot_shock_decomp.realtime=0;
[z, junk] = plot_shock_decomposition(M_,oo_,myopts,[]);
else
z = oo_;
@@ -93,8 +93,8 @@ end
if isstruct(aux)
if ischar(aux.y)
myopts=options_;
- myopts.shock_decomp.type='qoq';
- myopts.shock_decomp.realtime=0;
+ myopts.plot_shock_decomp.type='qoq';
+ myopts.plot_shock_decomp.realtime=0;
[y_aux, steady_state_aux] = plot_shock_decomposition(M_,oo_,myopts,aux.y);
aux.y=y_aux;
aux.yss=steady_state_aux;
@@ -183,9 +183,9 @@ for i=t0:4:t1,
za=[];
gza=[];
myopts=options_;
- myopts.shock_decomp.type='qoq';
- myopts.shock_decomp.realtime=1;
- myopts.shock_decomp.vintage=i;
+ myopts.plot_shock_decomp.type='qoq';
+ myopts.plot_shock_decomp.realtime=1;
+ myopts.plot_shock_decomp.vintage=i;
[z, steady_state_aux] = plot_shock_decomposition(M_,oo_,myopts,[]);
z = z(i_var,:,:);
if isstruct(aux)
diff --git a/matlab/global_initialization.m b/matlab/global_initialization.m
index 2f44a0524..1df3ea3a0 100644
--- a/matlab/global_initialization.m
+++ b/matlab/global_initialization.m
@@ -723,23 +723,13 @@ options_.discretionary_tol = 1e-7;
options_.parameter_set = [];
options_.use_shock_groups = '';
options_.colormap = '';
-options_.shock_decomp.detail_plot=0;
-options_.shock_decomp.fig_name='';
options_.shock_decomp.init_state = 0;
-options_.shock_decomp.interactive = 0;
-options_.shock_decomp.plot_end_date=[];
-options_.shock_decomp.plot_init_date=[];
-options_.shock_decomp.screen_shocks=0;
-options_.shock_decomp.steadystate=0;
-options_.shock_decomp.type = '';
-options_.shock_decomp.write_xls=0;
-% Shock decomposition realtime
-options_.shock_decomp.realtime=0; % 0 is standard; 1 is realtime (pool/vintage); 2 is conditional (pool/vintage); 3 is forecast (pool/vintage)
-options_.shock_decomp.vintage=0; % 0 pool realtime/conditional; int: forecast/conditional shock decompositions
-options_.shock_decomp.forecast=0;
-options_.shock_decomp.presample=NaN;
-options_.shock_decomp.save_realtime=0; % saves memory
+% Shock decomposition realtime
+options_.shock_decomp.forecast = 0;
+options_.shock_decomp.presample = NaN;
+options_.shock_decomp.save_realtime = 0; % saves memory
+options_ = set_default_plot_shock_decomposition_options(options_);
% Nonlinearfilters
options_.nonlinear_filter = [];
diff --git a/matlab/graph_decomp.m b/matlab/graph_decomp.m
index 7a3f9e415..b26078dc4 100644
--- a/matlab/graph_decomp.m
+++ b/matlab/graph_decomp.m
@@ -29,7 +29,7 @@ function []=graph_decomp(z,shock_names,endo_names,i_var,initial_date,DynareModel
% along with Dynare. If not, see .
GraphDirectoryName = CheckPath('graphs',DynareModel.dname);
-new_colormap = DynareOptions.colormap;
+new_colormap = DynareOptions.plot_shock_decomp.colormap;
% number of components equals number of shocks + 1 (initial conditions)
comp_nbr = size(z,2)-1;
@@ -39,7 +39,7 @@ fig_mode='';
fig_mode1='';
% fig_name='';
% screen_shocks=0;
-opts_decomp = DynareOptions.shock_decomp;
+opts_decomp = DynareOptions.plot_shock_decomp;
if isfield(opts_decomp,'steady_state')
SteadyState = opts_decomp.steady_state;
end
@@ -50,7 +50,7 @@ if ~isempty(opts_decomp.type)
end
fig_name_long = opts_decomp.fig_name;
-use_shock_groups = DynareOptions.use_shock_groups;
+use_shock_groups = DynareOptions.plot_shock_decomp.use_shock_groups;
screen_shocks = opts_decomp.screen_shocks;
if use_shock_groups | comp_nbr<=18,
screen_shocks=0;
@@ -87,7 +87,7 @@ end
nvar = length(i_var);
%% write LaTeX-Header
-if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.graph_format)))
+if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.plot_shock_decomp.graph_format)))
fidTeX = fopen([GraphDirectoryName, filesep, DynareModel.fname '_shock_decomp' fig_mode1 fig_name '.tex'],'w');
fprintf(fidTeX,'%% TeX eps-loader file generated by Dynare''s graph_decomp.m.\n');
fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
@@ -128,7 +128,7 @@ for j=1:nvar
if ymax-ymin < 1e-6
continue
end
- fhandle = dyn_figure(DynareOptions.nodisplay,'Name',[preamble_txt fig_name_long strrep(fig_mode1, '_', ' ') ': ' deblank(endo_names(i_var(j),:)) '.'], 'PaperPositionMode', 'auto','PaperOrientation','landscape','renderermode','auto');
+ fhandle = dyn_figure(DynareOptions.plot_shock_decomp.nodisplay,'Name',[preamble_txt fig_name_long strrep(fig_mode1, '_', ' ') ': ' deblank(endo_names(i_var(j),:)) '.'], 'PaperPositionMode', 'auto','PaperOrientation','landscape','renderermode','auto');
set(fhandle,'position' ,[50 50 1500 750])
ax=axes('Position',[0.1 0.1 0.6 0.8],'box','on');
% plot(ax,x(2:end),z1(end,:),'k-','LineWidth',2)
@@ -190,10 +190,10 @@ for j=1:nvar
ht = text(0.3,y1+0.3*height,labels(i,:),'Interpreter','none');
hold on
if interactive & (~isoctave & use_shock_groups)
- mydata.fig_name = DynareOptions.shock_decomp.fig_name(2:end);
- mydata.use_shock_groups = DynareOptions.use_shock_groups;
+ mydata.fig_name = DynareOptions.plot_shock_decomp.fig_name(2:end);
+ mydata.use_shock_groups = DynareOptions.plot_shock_decomp.use_shock_groups;
mydata.shock_group = shock_groups.(shock_ind{i});
- mydata.shock_decomp = DynareOptions.shock_decomp;
+ mydata.shock_decomp = DynareOptions.plot_shock_decomp;
if ~isempty(mydata.shock_group.shocks{1})
c = uicontextmenu;
hl.UIContextMenu=c;
@@ -213,8 +213,8 @@ for j=1:nvar
colormap(new_colormap)
end
hold off
- dyn_saveas(fhandle,[GraphDirectoryName, filesep, DynareModel.fname,'_shock_decomposition_',deblank(endo_names(i_var(j),:)),fig_mode1,fig_name],DynareOptions.nodisplay,DynareOptions.graph_format);
- if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.graph_format)))
+ dyn_saveas(fhandle,[GraphDirectoryName, filesep, DynareModel.fname,'_shock_decomposition_',deblank(endo_names(i_var(j),:)),fig_mode1,fig_name],DynareOptions.plot_shock_decomp.nodisplay,DynareOptions.plot_shock_decomp.graph_format);
+ if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.plot_shock_decomp.graph_format)))
fprintf(fidTeX,'\\begin{figure}[H]\n');
fprintf(fidTeX,'\\centering \n');
fprintf(fidTeX,'\\includegraphics[width=0.8\\textwidth]{%s/graphs/%s_shock_decomposition_%s}\n',DynareModel.fname,DynareModel.fname,[deblank(endo_names(i_var(j),:)) fig_mode1 fig_name]);
@@ -226,7 +226,7 @@ for j=1:nvar
end
%% write LaTeX-Footer
-if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.graph_format)))
+if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.plot_shock_decomp.graph_format)))
fprintf(fidTeX,' \n');
fprintf(fidTeX,'%% End of TeX file.\n');
fclose(fidTeX);
diff --git a/matlab/graph_decomp_detail.m b/matlab/graph_decomp_detail.m
index 420889503..c78fe6d40 100644
--- a/matlab/graph_decomp_detail.m
+++ b/matlab/graph_decomp_detail.m
@@ -34,7 +34,7 @@ fig_mode='';
fig_mode1='';
% fig_name='';
% screen_shocks=0;
-use_shock_groups = DynareOptions.use_shock_groups;
+use_shock_groups = DynareOptions.plot_shock_decomp.use_shock_groups;
if use_shock_groups
shock_groups = DynareModel.shock_groups.(use_shock_groups);
shock_ind = fieldnames(shock_groups);
@@ -43,7 +43,7 @@ end
% number of components equals number of shocks + 1 (initial conditions)
comp_nbr = size(z,2)-1;
-opts_decomp = DynareOptions.shock_decomp;
+opts_decomp = DynareOptions.plot_shock_decomp;
interactive = opts_decomp.interactive;
if ~isempty(opts_decomp.type)
@@ -52,7 +52,7 @@ if ~isempty(opts_decomp.type)
fig_mode = [fig_mode '_'];
end
screen_shocks = opts_decomp.screen_shocks;
-if DynareOptions.use_shock_groups | comp_nbr<=18,
+if DynareOptions.plot_shock_decomp.use_shock_groups | comp_nbr<=18,
screen_shocks=0;
end
fig_name_long = opts_decomp.fig_name;
@@ -105,7 +105,7 @@ end
nvar = length(i_var);
%% write LaTeX-Header
-if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.graph_format)))
+if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.plot_shock_decomp.graph_format)))
fidTeX = fopen([GraphDirectoryName, filesep, DynareModel.fname '_shock_decomp' fig_mode1 fig_name '_detail.tex'],'w');
fprintf(fidTeX,'%% TeX eps-loader file generated by Dynare''s graph_decomp_detail.m.\n');
fprintf(fidTeX,['%% ' datestr(now,0) '\n']);
@@ -151,7 +151,7 @@ for j=1:nvar
continue
end
for jf = 1:nfigs
- fhandle = dyn_figure(DynareOptions.nodisplay,'Name',[preamble_txt fig_name_long strrep(fig_mode1, '_', ' ') ': ' deblank(endo_names(i_var(j),:)) ' (detail).'],'position',[200 100 650 850], 'PaperPositionMode', 'auto','PaperOrientation','portrait','renderermode','auto');
+ fhandle = dyn_figure(DynareOptions.plot_shock_decomp.nodisplay,'Name',[preamble_txt fig_name_long strrep(fig_mode1, '_', ' ') ': ' deblank(endo_names(i_var(j),:)) ' (detail).'],'position',[200 100 650 850], 'PaperPositionMode', 'auto','PaperOrientation','portrait','renderermode','auto');
a0=zeros(1,4);
a0(3)=inf;
a0(4)=-inf;
@@ -179,10 +179,10 @@ for j=1:nvar
set(gca,'ylim',a0(3:4))
hold on, h1=plot(x(2:end),z1(end,:),'k-','LineWidth',2);
if interactive & (~isoctave & use_shock_groups)
- mydata.fig_name = DynareOptions.shock_decomp.fig_name(2:end);
- mydata.use_shock_groups = DynareOptions.use_shock_groups;
+ mydata.fig_name = DynareOptions.plot_shock_decomp.fig_name(2:end);
+ mydata.use_shock_groups = DynareOptions.plot_shock_decomp.use_shock_groups;
mydata.shock_group = shock_groups.(shock_ind{ic});
- mydata.shock_decomp = DynareOptions.shock_decomp;
+ mydata.shock_decomp = DynareOptions.plot_shock_decomp;
if ~isempty(mydata.shock_group.shocks{1})
c = uicontextmenu;
hax.UIContextMenu=c;
@@ -224,8 +224,8 @@ for j=1:nvar
else
suffix = ['_detail'];
end
- dyn_saveas(fhandle,[GraphDirectoryName, filesep, DynareModel.fname,'_shock_decomposition_',deblank(endo_names(i_var(j),:)),fig_mode1,fig_name suffix],DynareOptions.nodisplay,DynareOptions.graph_format);
- if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.graph_format)))
+ dyn_saveas(fhandle,[GraphDirectoryName, filesep, DynareModel.fname,'_shock_decomposition_',deblank(endo_names(i_var(j),:)),fig_mode1,fig_name suffix],DynareOptions.plot_shock_decomp.nodisplay,DynareOptions.plot_shock_decomp.graph_format);
+ if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.plot_shock_decomp.graph_format)))
fprintf(fidTeX,'\\begin{figure}[H]\n');
fprintf(fidTeX,'\\centering \n');
fprintf(fidTeX,'\\includegraphics[width=0.8\\textwidth]{%s/graphs/%s_shock_decomposition_%s}\n',DynareModel.fname,DynareModel.fname,[deblank(endo_names(i_var(j),:)) fig_mode1 fig_name suffix]);
@@ -238,7 +238,7 @@ for j=1:nvar
end
%% write LaTeX-Footer
-if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.graph_format)))
+if DynareOptions.TeX && any(strcmp('eps',cellstr(DynareOptions.plot_shock_decomp.graph_format)))
fprintf(fidTeX,' \n');
fprintf(fidTeX,'%% End of TeX file.\n');
fclose(fidTeX);
diff --git a/matlab/plot_shock_decomposition.m b/matlab/plot_shock_decomposition.m
index 9ff2bb676..368e233a7 100644
--- a/matlab/plot_shock_decomposition.m
+++ b/matlab/plot_shock_decomposition.m
@@ -28,6 +28,11 @@ function [z, steady_state] = plot_shock_decomposition(M_,oo_,options_,varlist)
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see .
+options_.nodisplay = options_.plot_shock_decomp.nodisplay;
+options_.graph_format = options_.plot_shock_decomp.graph_format;
+options_.use_shock_groups = options_.plot_shock_decomp.use_shock_groups;
+options_.colormap = options_.plot_shock_decomp.colormap;
+
% indices of endogenous variables
if size(varlist,1) == 0
varlist = M_.endo_names(1:M_.orig_endo_nbr,:);
@@ -49,27 +54,27 @@ fig_name='';
% steadystate=0;
% write_xls=0;
-if isfield(options_.shock_decomp,'expand'), % private trap for uimenu calls
- expand=options_.shock_decomp.expand;
+if isfield(options_.plot_shock_decomp,'expand'), % private trap for uimenu calls
+ expand=options_.plot_shock_decomp.expand;
else
expand=0;
end
-if ~isempty(options_.shock_decomp.fig_name)
- fig_name=[' ' options_.shock_decomp.fig_name];
+if ~isempty(options_.plot_shock_decomp.fig_name)
+ fig_name=[' ' options_.plot_shock_decomp.fig_name];
end
-type=options_.shock_decomp.type;
-detail_plot=options_.shock_decomp.detail_plot;
-realtime_= options_.shock_decomp.realtime;
-vintage_ = options_.shock_decomp.vintage;
+type=options_.plot_shock_decomp.type;
+detail_plot=options_.plot_shock_decomp.detail_plot;
+realtime_= options_.plot_shock_decomp.realtime;
+vintage_ = options_.plot_shock_decomp.vintage;
forecast_ = options_.shock_decomp.forecast;
-steadystate = options_.shock_decomp.steadystate;
-write_xls = options_.shock_decomp.write_xls;
+steadystate = options_.plot_shock_decomp.steadystate;
+write_xls = options_.plot_shock_decomp.write_xls;
initial_date = options_.initial_date;
-if isfield(options_.shock_decomp,'q2a'), % private trap for aoa calls
- q2a=options_.shock_decomp.q2a;
+if isfield(options_.plot_shock_decomp,'q2a'), % private trap for aoa calls
+ q2a=options_.plot_shock_decomp.q2a;
if isstruct(q2a) && isempty(fieldnames(q2a)),
q2a=0;
end
@@ -129,7 +134,7 @@ if isequal(type,'aoa') && isstruct(q2a) && realtime_
initial_date1=initial_date0+1;
end
end
- t0=min(options_.shock_decomp.save_realtime);
+ t0=min(options_.plot_shock_decomp.save_realtime);
ini1 = initial_date+t0-1;
t0=t0+(4-ini1.time(2));
if ~isfield(q2a,'var_type'), % private trap for aoa calls
@@ -153,7 +158,7 @@ if isequal(type,'aoa') && isstruct(q2a) && realtime_
% if isstruct(q2a.aux) && ischar(q2a.aux.y)
% opts=options_;
-% opts.shock_decomp.type='qoq';
+% opts.plot_shock_decomp.type='qoq';
% [y_aux, steady_state_aux] = plot_shock_decomposition(M_,oo_,opts,q2a.aux.y);
% q2a.aux.y=y_aux;
% q2a.aux.yss=steady_state_aux;
@@ -173,11 +178,11 @@ if ~expand
fig_name = fig_name1;
end
gend = size(z,3);
-if options_.use_shock_groups
- shock_groups = M_.shock_groups.(options_.use_shock_groups);
+if options_.plot_shock_decomp.use_shock_groups
+ shock_groups = M_.shock_groups.(options_.plot_shock_decomp.use_shock_groups);
shock_ind = fieldnames(shock_groups);
ngroups = length(shock_ind);
- fig_name=[fig_name ' group ' options_.use_shock_groups];
+ fig_name=[fig_name ' group ' options_.plot_shock_decomp.use_shock_groups];
shock_names = shock_ind;
for i=1:ngroups,
shock_names{i} = (shock_groups.(shock_ind{i}).label);
@@ -195,7 +200,7 @@ if options_.use_shock_groups
zothers = sum(z(:,1:nshocks,:),2);
shock_groups.(['group' int2str(ngroups+1)]).label = 'Others';
shock_groups.(['group' int2str(ngroups+1)]).shocks = cellstr(M_.exo_names(find(~ismember([1:M_.exo_nbr],kcum)),:))';
- M_.shock_groups.(options_.use_shock_groups)=shock_groups;
+ M_.shock_groups.(options_.plot_shock_decomp.use_shock_groups)=shock_groups;
if any(any(zothers)),
shock_names = [shock_names; {'Others + Initial Values'}];
end
@@ -212,8 +217,8 @@ end
MAP(end,:) = [0.7 0.7 0.7];
% MAP = [MAP; [0.7 0.7 0.7]; [0.3 0.3 0.3]];
-if isempty(options_.colormap),
- options_.colormap = MAP;
+if isempty(options_.plot_shock_decomp.colormap),
+ options_.plot_shock_decomp.colormap = MAP;
end
switch type
@@ -269,7 +274,7 @@ switch type
if isstruct(q2a.aux) && ischar(q2a.aux.y)
opts=options_;
- opts.shock_decomp.type='qoq';
+ opts.plot_shock_decomp.type='qoq';
[y_aux, steady_state_aux] = plot_shock_decomposition(M_,oo_,opts,q2a.aux.y);
q2a.aux.y=y_aux;
q2a.aux.yss=steady_state_aux;
@@ -292,11 +297,11 @@ switch type
z=z(:,:,t0:4:end);
end
- if ~isempty(options_.shock_decomp.plot_init_date)
- options_.shock_decomp.plot_init_date = dates([int2str(options_.shock_decomp.plot_init_date.time(1)) 'Y']);
+ if ~isempty(options_.plot_shock_decomp.plot_init_date)
+ options_.plot_shock_decomp.plot_init_date = dates([int2str(options_.plot_shock_decomp.plot_init_date.time(1)) 'Y']);
end
- if ~isempty(options_.shock_decomp.plot_end_date)
- options_.shock_decomp.plot_end_date = dates([int2str(options_.shock_decomp.plot_end_date.time(1)) 'Y']);
+ if ~isempty(options_.plot_shock_decomp.plot_end_date)
+ options_.plot_shock_decomp.plot_end_date = dates([int2str(options_.plot_shock_decomp.plot_end_date.time(1)) 'Y']);
end
@@ -306,7 +311,7 @@ switch type
end
if steadystate
- options_.shock_decomp.steady_state=steady_state;
+ options_.plot_shock_decomp.steady_state=steady_state;
end
if nargout
@@ -319,17 +324,17 @@ end
my_initial_date = initial_date;
a = 1;
b = size(z,3);
-if ~isempty(options_.shock_decomp.plot_init_date)
- my_initial_date = max(initial_date,options_.shock_decomp.plot_init_date);
- a = find((initial_date:initial_date+b-1)==options_.shock_decomp.plot_init_date);
+if ~isempty(options_.plot_shock_decomp.plot_init_date)
+ my_initial_date = max(initial_date,options_.plot_shock_decomp.plot_init_date);
+ a = find((initial_date:initial_date+b-1)==options_.plot_shock_decomp.plot_init_date);
end
-if ~isempty(options_.shock_decomp.plot_end_date)
- b = find((initial_date:initial_date+b-1)==options_.shock_decomp.plot_end_date);
+if ~isempty(options_.plot_shock_decomp.plot_end_date)
+ b = find((initial_date:initial_date+b-1)==options_.plot_shock_decomp.plot_end_date);
end
z = z(:,:,a:b);
% end crop data
-options_.shock_decomp.fig_name=fig_name;
+options_.plot_shock_decomp.fig_name=fig_name;
if detail_plot,
graph_decomp_detail(z,shock_names,M_.endo_names,i_var,my_initial_date,M_,options_)
else
@@ -337,5 +342,5 @@ else
end
if write_xls
- WriteShockDecomp2Excel(z,shock_names,M_.endo_names,i_var,initial_date,M_,options_,options_.shock_decomp);
-end
\ No newline at end of file
+ WriteShockDecomp2Excel(z,shock_names,M_.endo_names,i_var,initial_date,M_,options_,options_.plot_shock_decomp);
+end
diff --git a/matlab/set_default_plot_shock_decomposition_options.m b/matlab/set_default_plot_shock_decomposition_options.m
new file mode 100644
index 000000000..327c047cb
--- /dev/null
+++ b/matlab/set_default_plot_shock_decomposition_options.m
@@ -0,0 +1,51 @@
+function options = set_default_plot_shock_decomposition_options(options)
+%function options = set_default_plot_shock_decomposition_options(options)
+% sets the default options for prior_shock_decomposition
+%
+% INPUTS
+% options
+%
+% OUTPUTS
+% options
+%
+% SPECIAL REQUIREMENTS
+% none
+
+% Copyright (C) 2017 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 .
+
+options.plot_shock_decomp.use_shock_groups = '';
+options.plot_shock_decomp.colormap = '';
+options.plot_shock_decomp.nodisplay = 0;
+options.plot_shock_decomp.graph_format = 'eps';
+options.plot_shock_decomp.detail_plot = 0;
+options.plot_shock_decomp.interactive = 0;
+options.plot_shock_decomp.screen_shocks = 0;
+options.plot_shock_decomp.steadystate = 0;
+options.plot_shock_decomp.type = '';
+options.plot_shock_decomp.fig_name = '';
+options.plot_shock_decomp.write_xls = 0;
+options.plot_shock_decomp.realtime = 0; % 0 is standard; 1 is realtime
+ % (pool/vintage); 2 is conditional
+ % (pool/vintage); 3 is forecast
+ % (pool/vintage)
+options.plot_shock_decomp.vintage = 0; % 0 pool realtime/conditional; int:
+ % forecast/conditional shock
+ % decompositions
+options.plot_shock_decomp.plot_init_date = [];
+options.plot_shock_decomp.plot_end_date = [];
+end
diff --git a/preprocessor/ComputingTasks.cc b/preprocessor/ComputingTasks.cc
index cfc3b59b5..d91d04c10 100644
--- a/preprocessor/ComputingTasks.cc
+++ b/preprocessor/ComputingTasks.cc
@@ -1680,6 +1680,21 @@ RealtimeShockDecompositionStatement::writeOutput(ostream &output, const string &
output << "oo_ = realtime_shock_decomposition(M_,oo_,options_,var_list_,bayestopt_,estim_params_);" << endl;
}
+PlotShockDecompositionStatement::PlotShockDecompositionStatement(const SymbolList &symbol_list_arg,
+ const OptionsList &options_list_arg) :
+ symbol_list(symbol_list_arg),
+ options_list(options_list_arg)
+{
+}
+
+void
+PlotShockDecompositionStatement::writeOutput(ostream &output, const string &basename, bool minimal_workspace) const
+{
+ output << "options_ = set_default_plot_shock_decomposition_options(options_);" << endl;
+ options_list.writeOutput(output);
+ symbol_list.writeOutput("var_list_", output);
+ output << "plot_shock_decomposition(M_, oo_, options_, var_list_);" << endl;
+}
ConditionalForecastStatement::ConditionalForecastStatement(const OptionsList &options_list_arg) :
options_list(options_list_arg)
diff --git a/preprocessor/ComputingTasks.hh b/preprocessor/ComputingTasks.hh
index e74211f78..41da60982 100644
--- a/preprocessor/ComputingTasks.hh
+++ b/preprocessor/ComputingTasks.hh
@@ -593,9 +593,21 @@ private:
const OptionsList options_list;
public:
RealtimeShockDecompositionStatement(const SymbolList &symbol_list_arg,
- const OptionsList &options_list_arg);
+ const OptionsList &options_list_arg);
virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
};
+
+class PlotShockDecompositionStatement : public Statement
+{
+private:
+ const SymbolList symbol_list;
+ const OptionsList options_list;
+public:
+ PlotShockDecompositionStatement(const SymbolList &symbol_list_arg,
+ const OptionsList &options_list_arg);
+ virtual void writeOutput(ostream &output, const string &basename, bool minimal_workspace) const;
+};
+
class ConditionalForecastStatement : public Statement
{
private:
diff --git a/preprocessor/DynareBison.yy b/preprocessor/DynareBison.yy
index 246c8ddac..8c2b91066 100644
--- a/preprocessor/DynareBison.yy
+++ b/preprocessor/DynareBison.yy
@@ -86,10 +86,10 @@ class ParsingDriver;
%token AIM_SOLVER ANALYTIC_DERIVATION ANALYTIC_DERIVATION_MODE AR AUTOCORR POSTERIOR_SAMPLING_METHOD
%token BAYESIAN_IRF BETA_PDF BLOCK USE_CALIBRATION SILENT_OPTIMIZER
-%token BVAR_DENSITY BVAR_FORECAST NODECOMPOSITION DR_DISPLAY_TOL HUGE_NUMBER
-%token BVAR_PRIOR_DECAY BVAR_PRIOR_FLAT BVAR_PRIOR_LAMBDA
-%token BVAR_PRIOR_MU BVAR_PRIOR_OMEGA BVAR_PRIOR_TAU BVAR_PRIOR_TRAIN
-%token BVAR_REPLIC BYTECODE ALL_VALUES_REQUIRED PROPOSAL_DISTRIBUTION
+%token BVAR_DENSITY BVAR_FORECAST NODECOMPOSITION DR_DISPLAY_TOL HUGE_NUMBER FIG_NAME WRITE_XLS
+%token BVAR_PRIOR_DECAY BVAR_PRIOR_FLAT BVAR_PRIOR_LAMBDA INTERACTIVE SCREEN_SHOCKS STEADYSTATE
+%token BVAR_PRIOR_MU BVAR_PRIOR_OMEGA BVAR_PRIOR_TAU BVAR_PRIOR_TRAIN DETAIL_PLOT TYPE
+%token BVAR_REPLIC BYTECODE ALL_VALUES_REQUIRED PROPOSAL_DISTRIBUTION REALTIME VINTAGE
%token CALIB_SMOOTHER CHANGE_TYPE CHECK CONDITIONAL_FORECAST CONDITIONAL_FORECAST_PATHS CONF_SIG CONSTANT CONTROLLED_VAREXO CORR COVAR CUTOFF CYCLE_REDUCTION LOGARITHMIC_REDUCTION
%token CONSIDER_ALL_ENDOGENOUS CONSIDER_ONLY_OBSERVED
%token DATAFILE FILE SERIES DOUBLING DR_CYCLE_REDUCTION_TOL DR_LOGARITHMIC_REDUCTION_TOL DR_LOGARITHMIC_REDUCTION_MAXITER DR_ALGO DROP DSAMPLE DYNASAVE DYNATYPE CALIBRATION DIFFERENTIATE_FORWARD_VARS
@@ -129,9 +129,9 @@ class ParsingDriver;
%token TEX RAMSEY_MODEL RAMSEY_POLICY RAMSEY_CONSTRAINTS PLANNER_DISCOUNT DISCRETIONARY_POLICY DISCRETIONARY_TOL
%token TEX_NAME
%token UNIFORM_PDF UNIT_ROOT_VARS USE_DLL USEAUTOCORR GSA_SAMPLE_FILE USE_UNIVARIATE_FILTERS_IF_SINGULARITY_IS_DETECTED
-%token VALUES VAR VAREXO VAREXO_DET VAROBS PREDETERMINED_VARIABLES
+%token VALUES VAR VAREXO VAREXO_DET VAROBS PREDETERMINED_VARIABLES PLOT_SHOCK_DECOMPOSITION
%token WRITE_LATEX_DYNAMIC_MODEL WRITE_LATEX_STATIC_MODEL WRITE_LATEX_ORIGINAL_MODEL
-%token XLS_SHEET XLS_RANGE LMMCP OCCBIN BANDPASS_FILTER COLORMAP
+%token XLS_SHEET XLS_RANGE LMMCP OCCBIN BANDPASS_FILTER COLORMAP QOQ YOY AOA
%left COMMA
%left EQUAL_EQUAL EXCLAMATION_EQUAL
%left LESS GREATER LESS_EQUAL GREATER_EQUAL
@@ -262,6 +262,7 @@ statement : parameters
| write_latex_original_model
| shock_decomposition
| realtime_shock_decomposition
+ | plot_shock_decomposition
| conditional_forecast
| conditional_forecast_paths
| plot_conditional_forecast
@@ -2139,6 +2140,16 @@ realtime_shock_decomposition : REALTIME_SHOCK_DECOMPOSITION ';'
{ driver.realtime_shock_decomposition(); }
;
+plot_shock_decomposition : PLOT_SHOCK_DECOMPOSITION ';'
+ {driver.plot_shock_decomposition(); }
+ | PLOT_SHOCK_DECOMPOSITION '(' plot_shock_decomposition_options_list ')' ';'
+ { driver.plot_shock_decomposition(); }
+ | PLOT_SHOCK_DECOMPOSITION symbol_list ';'
+ { driver.plot_shock_decomposition(); }
+ | PLOT_SHOCK_DECOMPOSITION '(' plot_shock_decomposition_options_list ')' symbol_list ';'
+ { driver.plot_shock_decomposition(); }
+ ;
+
bvar_prior_option : o_bvar_prior_tau
| o_bvar_prior_decay
| o_bvar_prior_lambda
@@ -2524,6 +2535,25 @@ realtime_shock_decomposition_option : o_parameter_set
| o_save_realtime
;
+plot_shock_decomposition_options_list : plot_shock_decomposition_option COMMA plot_shock_decomposition_options_list
+ | plot_shock_decomposition_option
+ ;
+
+plot_shock_decomposition_option : o_psd_use_shock_groups
+ | o_psd_colormap
+ | o_psd_nodisplay
+ | o_psd_graph_format
+ | o_psd_detail_plot
+ | o_psd_interactive
+ | o_psd_screen_shocks
+ | o_psd_steadystate
+ | o_psd_type
+ | o_psd_fig_name
+ | o_psd_write_xls
+ | o_psd_realtime
+ | o_psd_vintage
+ ;
+
homotopy_setup: HOMOTOPY_SETUP ';' homotopy_list END ';'
{ driver.end_homotopy();};
@@ -2865,11 +2895,17 @@ o_shock_decomposition_presample : PRESAMPLE EQUAL INT_NUMBER { driver.option_num
o_shock_decomposition_forecast : FORECAST EQUAL INT_NUMBER { driver.option_num("shock_decomp.forecast", $3); };
o_save_realtime : SAVE_REALTIME EQUAL vec_int { driver.option_vec_int("shock_decomp.save_realtime", $3); };
o_nodisplay : NODISPLAY { driver.option_num("nodisplay","1"); };
+o_psd_nodisplay : NODISPLAY { driver.option_num("plot_shock_decomp.nodisplay","1"); };
o_graph_format : GRAPH_FORMAT EQUAL allowed_graph_formats
{ driver.process_graph_format_option(); }
| GRAPH_FORMAT EQUAL '(' list_allowed_graph_formats ')'
{ driver.process_graph_format_option(); }
;
+o_psd_graph_format : GRAPH_FORMAT EQUAL allowed_graph_formats
+ { driver.plot_shock_decomp_process_graph_format_option(); }
+ | GRAPH_FORMAT EQUAL '(' list_allowed_graph_formats ')'
+ { driver.plot_shock_decomp_process_graph_format_option(); }
+ ;
allowed_graph_formats : EPS
{ driver.add_graph_format("eps"); }
| FIG
@@ -2975,7 +3011,21 @@ o_dr : DR EQUAL CYCLE_REDUCTION {driver.option_num("dr_cycle_reduction", "1"); }
o_dr_cycle_reduction_tol : DR_CYCLE_REDUCTION_TOL EQUAL non_negative_number {driver.option_num("dr_cycle_reduction_tol",$3);};
o_dr_logarithmic_reduction_tol : DR_LOGARITHMIC_REDUCTION_TOL EQUAL non_negative_number {driver.option_num("dr_logarithmic_reduction_tol",$3);};
o_dr_logarithmic_reduction_maxiter : DR_LOGARITHMIC_REDUCTION_MAXITER EQUAL INT_NUMBER {driver.option_num("dr_logarithmic_reduction_maxiter",$3);};
-
+o_psd_detail_plot : DETAIL_PLOT { driver.option_num("plot_shock_decomp.detail_plot", "1"); };
+o_psd_interactive : INTERACTIVE { driver.option_num("plot_shock_decomp.interactive", "1"); };
+o_psd_screen_shocks : SCREEN_SHOCKS { driver.option_num("plot_shock_decomp.screen_shocks", "1"); };
+o_psd_steadystate : STEADYSTATE EQUAL INT_NUMBER { driver.option_num("plot_shock_decomp.steadystate", $3); };
+o_psd_fig_name : FIG_NAME EQUAL filename { driver.option_str("plot_shock_decomp.fig_name", $3); };
+o_psd_type : TYPE EQUAL QOQ
+ { driver.option_str("plot_shock_decomp.type", "qoq"); }
+ | TYPE EQUAL YOY
+ { driver.option_str("plot_shock_decomp.type", "qoq"); }
+ | TYPE EQUAL AOA
+ { driver.option_str("plot_shock_decomp.type", "qoq"); }
+ ;
+o_psd_write_xls : WRITE_XLS { driver.option_num("plot_shock_decomp.write_xls", "1"); };
+o_psd_realtime : REALTIME EQUAL INT_NUMBER { driver.option_num("plot_shock_decomp.realtime", $3); };
+o_psd_vintage : VINTAGE EQUAL INT_NUMBER { driver.option_num("plot_shock_decomp.vintage", $3); };
o_bvar_prior_tau : BVAR_PRIOR_TAU EQUAL signed_number { driver.option_num("bvar_prior_tau", $3); };
o_bvar_prior_decay : BVAR_PRIOR_DECAY EQUAL non_negative_number { driver.option_num("bvar_prior_decay", $3); };
o_bvar_prior_lambda : BVAR_PRIOR_LAMBDA EQUAL signed_number { driver.option_num("bvar_prior_lambda", $3); };
@@ -3285,7 +3335,11 @@ o_sampling_draws : SAMPLING_DRAWS EQUAL INT_NUMBER { driver.option_num("sampling
o_use_shock_groups : USE_SHOCK_GROUPS { driver.option_str("use_shock_groups","default"); }
| USE_SHOCK_GROUPS EQUAL symbol { driver.option_str("use_shock_groups", $3); }
;
+o_psd_use_shock_groups : USE_SHOCK_GROUPS { driver.option_str("plot_shock_decomp.use_shock_groups","default"); }
+ | USE_SHOCK_GROUPS EQUAL symbol { driver.option_str("plot_shock_decomp.use_shock_groups", $3); }
+ ;
o_colormap : COLORMAP EQUAL symbol { driver.option_num("colormap",$3); };
+o_psd_colormap : COLORMAP EQUAL symbol { driver.option_num("plot_shock_decomp.colormap",$3); };
range : symbol ':' symbol
{
diff --git a/preprocessor/DynareFlex.ll b/preprocessor/DynareFlex.ll
index c8d1accdd..59eac989a 100644
--- a/preprocessor/DynareFlex.ll
+++ b/preprocessor/DynareFlex.ll
@@ -151,6 +151,7 @@ DATE -?[0-9]+([YyAa]|[Mm]([1-9]|1[0-2])|[Qq][1-4]|[Ww]([1-9]{1}|[1-4][0-9]|5[0-2
forecast {BEGIN DYNARE_STATEMENT; return token::FORECAST;}
shock_decomposition {BEGIN DYNARE_STATEMENT; return token::SHOCK_DECOMPOSITION;}
realtime_shock_decomposition {BEGIN DYNARE_STATEMENT; return token::REALTIME_SHOCK_DECOMPOSITION;}
+plot_shock_decomposition {BEGIN DYNARE_STATEMENT; return token::PLOT_SHOCK_DECOMPOSITION;}
sbvar {BEGIN DYNARE_STATEMENT; return token::SBVAR;}
ms_estimation {BEGIN DYNARE_STATEMENT; return token::MS_ESTIMATION;}
ms_simulation {BEGIN DYNARE_STATEMENT; return token::MS_SIMULATION;}
@@ -573,6 +574,18 @@ DATE -?[0-9]+([YyAa]|[Mm]([1-9]|1[0-2])|[Qq][1-4]|[Ww]([1-9]{1}|[1-4][0-9]|5[0-2
parameter_set {return token::PARAMETER_SET; }
init_state {return token::INIT_STATE; }
save_realtime {return token::SAVE_REALTIME;}
+detail_plot {return token::DETAIL_PLOT;}
+interactive {return token::INTERACTIVE;}
+screen_shocks {return token::SCREEN_SHOCKS;}
+steadystate {return token::STEADYSTATE;}
+type {return token::TYPE;}
+qoq {return token::QOQ; }
+yoy {return token::YOY; }
+aoa {return token::AOA; }
+fig_name {return token::FIG_NAME;}
+write_xls {return token::WRITE_XLS;}
+realtime {return token::REALTIME;}
+vintage {return token::VINTAGE;}
prior_mode {return token::PRIOR_MODE; }
prior_mean {return token::PRIOR_MEAN; }
posterior_mode {return token::POSTERIOR_MODE; }
diff --git a/preprocessor/ParsingDriver.cc b/preprocessor/ParsingDriver.cc
index dc7953ce9..e0df61286 100644
--- a/preprocessor/ParsingDriver.cc
+++ b/preprocessor/ParsingDriver.cc
@@ -2133,6 +2133,14 @@ ParsingDriver::realtime_shock_decomposition()
options_list.clear();
}
+void
+ParsingDriver::plot_shock_decomposition()
+{
+ mod_file->addStatement(new PlotShockDecompositionStatement(symbol_list, options_list));
+ symbol_list.clear();
+ options_list.clear();
+}
+
void
ParsingDriver::conditional_forecast()
{
@@ -2815,6 +2823,13 @@ ParsingDriver::process_graph_format_option()
graph_formats.clear();
}
+void
+ParsingDriver::plot_shock_decomp_process_graph_format_option()
+{
+ options_list.symbol_list_options["plot_shock_decomp.graph_format"] = graph_formats;
+ graph_formats.clear();
+}
+
void
ParsingDriver::model_diagnostics()
{
diff --git a/preprocessor/ParsingDriver.hh b/preprocessor/ParsingDriver.hh
index 28385563c..29b9c3210 100644
--- a/preprocessor/ParsingDriver.hh
+++ b/preprocessor/ParsingDriver.hh
@@ -592,6 +592,8 @@ public:
void shock_decomposition();
//! Realtime Shock decomposition
void realtime_shock_decomposition();
+ //! Plot Shock decomposition
+ void plot_shock_decomposition();
//! Conditional forecast statement
void conditional_forecast();
//! Conditional forecast paths block
@@ -722,6 +724,8 @@ public:
void add_graph_format(const string &name);
//! Add the graph_format option to the OptionsList structure
void process_graph_format_option();
+ //! Add the graph_format option to the plot_shock_decomp substructure of the OptionsList structure
+ void plot_shock_decomp_process_graph_format_option();
//! Model diagnostics
void model_diagnostics();
//! Processing the parallel_local_files option
diff --git a/tests/shock_decomposition/ls2003_plot.mod b/tests/shock_decomposition/ls2003_plot.mod
index d3c4c3c85..7faa00d0c 100644
--- a/tests/shock_decomposition/ls2003_plot.mod
+++ b/tests/shock_decomposition/ls2003_plot.mod
@@ -81,13 +81,11 @@ shock_decomposition(use_shock_groups=trade) y_obs R_obs pie_obs dq de;
// various tests for plot_shock_decompositions
// standard plot [using trade group defined before]
-plot_shock_decomposition(M_,oo_,options_,var_list_);
+plot_shock_decomposition;
// test datailed, custom name and yoy plots
-options_.shock_decomp.detail_plot = 1;
-options_.shock_decomp.fig_names = 'MR';
-options_.shock_decomp.type='yoy';
-plot_shock_decomposition(M_,oo_,options_,var_list_);
+plot_shock_decomposition(detail_plot, fig_name = MR, type = yoy);
+
close all,
@@ -96,80 +94,42 @@ close all,
// first compute realtime decompositions [pre-processor not yet available]
realtime_shock_decomposition(forecast=8, save_realtime=[5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65 69 73 77]);
-options_.shock_decomp.detail_plot = 0;
-options_.shock_decomp.type='';
-options_.use_shock_groups='';
-options_.shock_decomp.fig_names = '';
-
-
//realtime pooled
-options_.shock_decomp.realtime=1;
-options_.shock_decomp.vintage=0;
-plot_shock_decomposition(M_,oo_,options_,var_list_);
+plot_shock_decomposition(realtime = 1);
//conditional pooled
-options_.shock_decomp.realtime=2;
-plot_shock_decomposition(M_,oo_,options_,var_list_);
-options_.shock_decomp.realtime=2;
+plot_shock_decomposition(realtime = 2);
+
// conditional 8-step ahead decomposition, given 1989q4
-options_.shock_decomp.detail_plot = 1;
-options_.shock_decomp.vintage=29;
-plot_shock_decomposition(M_,oo_,options_,var_list_);
+plot_shock_decomposition(detail_plot, realtime = 2, vintage = 29);
close all,
//forecast pooled
-options_.shock_decomp.detail_plot = 0;
-options_.shock_decomp.realtime=3;
-options_.shock_decomp.vintage=0;
-plot_shock_decomposition(M_,oo_,options_,var_list_);
+plot_shock_decomposition(realtime = 3);
// forecast 8-step ahead decomposition, given 1989q4
-options_.shock_decomp.detail_plot = 1;
-options_.shock_decomp.realtime=3;
-options_.shock_decomp.vintage=29;
-plot_shock_decomposition(M_,oo_,options_,var_list_);
+plot_shock_decomposition(detail_plot, realtime = 3, vintage = 29);
close all,
// now I test annualized variables
-options_.shock_decomp.realtime=0;
-options_.shock_decomp.detail_plot = 1;
-options_.shock_decomp.interactive=0;
-options_.use_shock_groups='';
-options_.shock_decomp.type='aoa';
-options_.shock_decomp.q2a=1;
-options_.shock_decomp.islog=1;
-plot_shock_decomposition(M_,oo_,options_,'y');
+options_.plot_shock_decomp.q2a=1;
+options_.plot_shock_decomp.islog=1;
+plot_shock_decomposition(detail_plot, type = aoa) y;
-options_.shock_decomp.realtime=1;
-options_.shock_decomp.vintage=0;
-plot_shock_decomposition(M_,oo_,options_,'y');
-
-options_.shock_decomp.vintage=29;
-options_.shock_decomp.realtime=1;
-plot_shock_decomposition(M_,oo_,options_,'y');
-options_.shock_decomp.realtime=2;
-plot_shock_decomposition(M_,oo_,options_,'y');
-options_.shock_decomp.realtime=3;
-plot_shock_decomposition(M_,oo_,options_,'y');
+plot_shock_decomposition(realtime = 1) y;
+plot_shock_decomposition(realtime = 1, vintage = 29) y;
+plot_shock_decomposition(realtime = 2, vintage = 29) y;
+plot_shock_decomposition(realtime = 3, vintage = 29) y;
close all
//test uimenu for groups
-options_.shock_decomp.realtime=0;
-options_.shock_decomp.detail_plot = 1;
-options_.shock_decomp.interactive=1;
-options_.use_shock_groups='row';
-options_.shock_decomp.type='qoq';
-plot_shock_decomposition(M_,oo_,options_,var_list_);
-
-options_.shock_decomp.detail_plot = 1;
-options_.shock_decomp.realtime=3;
-options_.shock_decomp.vintage=29;
-plot_shock_decomposition(M_,oo_,options_,var_list_);
+plot_shock_decomposition(detail_plot, interactive, use_shock_groups = row, type = qoq);
+plot_shock_decomposition(detail_plot, interactive, realtime = 3, vintage = 29);
collect_latex_files;
if system(['pdflatex -halt-on-error -interaction=batchmode ' M_.fname '_TeX_binder.tex'])
error('TeX-File did not compile.')
-end
+end