// BVAR-DSGE using VAR(4)
// Note that must have number of exog shocks = number of observed variables for identification in BVAR-DSGE, so delete the foreign shocks

var y c l i k r z delrer pi y_obs r_obs q_obs pi_obs rStar piStar;
varexo eps_z eps_r eps_rer eps_pi 
//eps_piStar eps_rStar
;
parameters beta delta alpha eta rho alphaD gamma omega rho_piStar rho_rStar dsge_prior_weight ;
alpha = 0.35;
beta = 0.99;
delta = 0.024;
eta=0.99;
rho=0.7;
alphaD=0.4;             // Dennis fn. 17
omega=0.4;
gamma=0.05;
rho_piStar = 0.99;
rho_rStar = 0.99;

// Calibration of dsge_prior_weight 
  dsge_prior_weight = 0.6;

model(linear);
eta*(c-c(+1)) + r(+1) = 0;
y = l + eta*c;
y = (1-(alpha*delta)/((1/beta)+delta-1))*c + ((alpha*delta)/((1/beta)+delta-1))*i;
y = alpha*k(-1) + (1-alpha)*l + z;
r=beta*((1/beta)+delta-1)*(y-k(-1))+ eps_r;
delta*i + (1-delta)*k(-1) = k;
z = rho*z(-1) + eps_z;
pi = omega*pi(+1) + (1-omega)*pi(-1) + gamma*y + eps_pi;
delrer=(1-alphaD)*(r(-1)-pi-rStar(-1)+piStar) + eps_rer;                                   // Dennis rer("q") equation section 5.1, p.13 
piStar=0;                                                                                  // Dennis fn. 17
rStar=0;                                                                                   // Dennis fn. 17
//piStar=rho_piStar*piStar(-1)+eps_piStar;                             // foreign inflation rate
//rStar=rho_rStar*rStar(-1)+eps_rStar;                                 // foreign interest rate


// Measurement equations
y_obs=y-y(-1);
r_obs=r-r(-1);
q_obs=delrer;
pi_obs=pi-pi(-1);
end;

/*
// Here we specify the standard deviation of the shocks
shocks; 
var eps_z; stderr 0.02;
var eps_r;stderr 0.02;
var eps_rer;stderr 0.06;
var eps_pi; stderr 0.0155;
end;

resid(1);

steady;
check;

disp(' ');
disp('STARTING STOCHASTIC SIMULATION PHASE');
stoch_simul(periods=2000, irf=40, simul_seed=17) c i y r;
*/

disp(' ');
disp('DEFINING PRIORS FOR PARAMETERS');
//Declaration of the prior beliefs about the deep parameters and (if needed) the weight of the DSGE prior
estimated_params;
rho, beta_pdf, 0.7, 0.2;
eta, normal_pdf, 1,0.25;
stderr eps_z, inv_gamma_pdf, 0.02, inf; 
stderr eps_r, inv_gamma_pdf, 0.02, inf;
stderr eps_rer, inv_gamma_pdf, 0.02, inf; 
stderr eps_pi, inv_gamma_pdf, 0.02, inf; 
//dsge_prior_weight, uniform_pdf,,,0,2;
end;

varobs pi_obs q_obs r_obs y_obs;

disp(' ');
disp('STARTING ESTIMATION PHASE');
estimation(datafile=ls20074vn_jc4,mh_replic=20000,first_obs=10,mh_nblocks=1,mh_drop=0.45,mh_jscale=0.8,bayesian_irf,irf=20,solve_algo=3,nobs=100,mode_compute=6,forecast=40,mode_check) c i y r;
//shock_decomposition;
//bvar_density;

disp(' ');
disp('STARTING POSTERIOR ANALYSIS PHASE');
//posterior_analysis;
bvar_forecast(forecast=10,bvar_replic=10000,nobs=100) 4;
stoch_simul(periods=2000, irf=40, simul_seed=17) c i y r;


dyngraph;
save_params_and_steady_state(ls_d_vn_saved_params_file);

