Home > . > olr.m

olr

PURPOSE ^

Copyright (C) 2001 Michel Juillard

SYNOPSIS ^

function olr(var_list,olr_inst,obj_var,W)

DESCRIPTION ^

 Copyright (C) 2001 Michel Juillard

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % Copyright (C) 2001 Michel Juillard
0002 %
0003 function olr(var_list,olr_inst,obj_var,W)
0004   global M_ options_ oo_ 
0005     
0006   options_.order = 1;
0007   options_ = set_default_option(options_,'ar',5);
0008   options_ = set_default_option(options_,'irf',40);
0009   options_ = set_default_option(options_,'dr_algo',0);
0010   options_ = set_default_option(options_,'simul_algo',0);
0011   options_ = set_default_option(options_,'drop',100);
0012   options_ = set_default_option(options_,'replic',1);
0013   options_ = set_default_option(options_,'nomoments',0);
0014   options_ = set_default_option(options_,'nocorr',0);
0015   options_ = set_default_option(options_,'simul_seed',[]);
0016   options_ = set_default_option(options_,'hp_filter',0);
0017   options_ = set_default_option(options_,'hp_ngrid',512);
0018   options_ = set_default_option(options_,'simul',0);
0019   options_ = set_default_option(options_,'olr_beta',1);
0020   options_ = set_default_option(options_,'periods',1);
0021   if options_.simul & ~isempty(options_.periods) & options_.periods == 0
0022     options_.periods = options_.periods;
0023   end
0024 
0025   options_.periods = max(options_.periods,1);
0026   
0027   make_ex_;
0028   
0029   oo_.dr=olr1(oo_.steady_state,options_.dr_algo,olr_inst,options_.olr_beta,obj_var,W);
0030 
0031   disp(' ')
0032   disp('OPTIMAL LINEAR REGULATOR')
0033   disp(' ')
0034   disp('MODEL SUMMARY')
0035   disp(' ')
0036   disp(['  Number of variables:         ' int2str(M_.endo_nbr-size(olr_inst,1))])
0037   disp(['  Number of stochastic shocks: ' int2str(M_.exo_nbr)])
0038   disp(['  Number of instruments        ' int2str(size(olr_inst,1))])
0039 %  disp(['  Number of state variables:   ' ...
0040 %    int2str(length(find(oo_.dr.kstate(:,2) <= M_.maximum_lag+1)))])
0041 %  disp(['  Number of jumpers:           ' ...
0042 %    int2str(length(find(oo_.dr.kstate(:,2) == M_.maximum_lag+2)))])
0043   disp(['  Number of static variables:  ' int2str(oo_.dr.nstatic)])
0044   my_title='MATRIX OF COVARIANCE OF EXOGENOUS SHOCKS';
0045   labels = deblank(M_.exo_name);
0046   headers = strvcat('Variables',labels);
0047   lh = size(labels,2)+2;
0048   table(my_title,headers,labels,M_.Sigma_e,lh,10,6);
0049   disp(' ')
0050   disp_dr(oo_.dr,options_.order,var_list);
0051   if options_.order == 1 & options_.simul == 0 & options_.nomoments == 0
0052     disp_th_moments(oo_.dr,var_list);
0053   elseif options_.simul == 1 | options_.nomoments == 0
0054     if options_.periods == 0
0055       error('OLR error: number of periods for the simulation isn''t specified')
0056     end
0057     if options_.periods < options_.drop
0058       disp(['OLR error: The horizon of simulation is shorter' ...
0059         ' than the number of observations to be DROPed'])
0060       return
0061     end
0062     
0063     oo_.y_simul = simult(repmat(oo_.dr.ys,1,M_.maximum_lag),oo_.dr);
0064     dyn2vec;
0065     if options_.nomoments == 0
0066       disp_moments(oo_.y_simul,var_list);
0067     end
0068   end
0069   
0070   n = size(var_list,1);
0071   if n == 0
0072     n = length(oo_.dr.order_var);
0073     ivar = [1:n]';
0074     var_list = M_.endo_names;
0075   else
0076     ivar=zeros(n,1);
0077     for i=1:n
0078       i_tmp = strmatch(var_list(i,:),M_.endo_names,'exact');
0079       if isempty(i_tmp)
0080           error (['One of the specified variables does not exist']) ;
0081       else
0082     ivar(i) = i_tmp;
0083       end
0084     end
0085   end
0086 
0087   if n < 13 & options_.irf > 0
0088     if n == 1
0089       nr = 1;
0090       nc = 1;
0091     elseif n == 2
0092       nr = 1;
0093       nc = 2;
0094     elseif n <= 4
0095       nr = 2;
0096       nc = 2;
0097     elseif n <= 6
0098       nr = 2;
0099       nc = 3;
0100     elseif n <= 9
0101       nr = 3;
0102       nc = 3;
0103     elseif n <= 12
0104       nr = 3;
0105       nc = 4;
0106     end
0107     olditer = options_.periods;
0108     if options_.order == 1
0109       options_.replic = 1;
0110     else
0111       if options_.replic == 0
0112     options_.replic = 50;
0113       end
0114     end
0115     for i = 1:M_.exo_nbr
0116       figure('Name',['Shock to ' M_.exo_name(i,:)]);
0117       y=irf(oo_.dr,M_.exo_name(i,:),sqrt(M_.Sigma_e(i,i)), options_.irf, options_.drop, options_.replic, options_.order);
0118       m = 1;
0119       for j = 1:n
0120     if max(y(ivar(j),:))-min(y(ivar(j),:)) > 1e-10
0121       subplot(nr,nc,m);
0122       plot([y(ivar(j),:)']);
0123       title(var_list(j,:),'Interpreter','none');
0124       assignin('base',[deblank(var_list(j,:)) '_' deblank(M_.exo_name(i,:))],y(ivar(j),:)');
0125       m = m + 1;
0126     end
0127       end
0128     
0129     end
0130     options_.periods = olditer;
0131   end
0132       
0133 % 05/21/03 MJ

Generated on Fri 16-Jun-2006 09:09:06 by m2html © 2003