//dsge model simulation
var y c i d m n k pi nx r rr q g w a lambda rf xi e_w pih pif e_q nu; 
varexo mu_r mu_rf mu_nx mu_q mu_w mu_a mu_g; 

parameters gamma_l sigma beta_b upsilon alpha_a delta chi_m phi iota_d gamma_g 
rho_rr rho_r lambda_y lambda_pi lambda_q rho_q rho_w rho_rf rho_nx rho_a rho_g R_R PI_PI C_Y I_Y G_Y NX_Y;
//eta_zeta beta_PI
R_R=1.0091;
PI_PI=0.5866;//1.0059;

C_Y=0.431;
I_Y=0.4;
G_Y=0.141;
NX_Y=1-C_Y-I_Y-G_Y;

beta_b=0.9921;
phi=0.75;
delta=0.025;

gamma_l=0.5;
sigma=0.8;
upsilon=0.5;
alpha_a=0.4;

chi_m=0.8;
iota_d=0.4;
gamma_g=0.6;
rho_rr=0.5;
rho_r=0.5;
lambda_y=1.5;
lambda_pi=0.5;
lambda_q=0.4;
rho_q=0.25;
rho_w=0.5;
rho_rf=0.5;
rho_nx=0.3;
rho_a=0.6;
rho_g=0.5;


model(linear);

#eta_zeta=1-gamma_l;
#beta_PI=beta_b/PI_PI;

(gamma_l*(1-sigma)-1)*c=lambda-(1-gamma_l)*(1-sigma)*m;
(1-beta_PI)*(m-c)=(beta_PI)*(lambda(+1)-pi(+1)-lambda);
upsilon*n=lambda+w;
(beta_PI*R_R-1)*d= beta_PI*R_R*(lambda(+1)-pi(+1)-lambda+r);
y=alpha_a*k+(1-alpha_a)*(a+n);
rr=xi+y-k;
w=xi+y-n;
k(+1)=delta*i+(1-delta)*k;
//k=delta*i(-1)+(1-delta)*k(-1);
i=(1-eta_zeta)*d+e_w;
//pih=(1-phi)*(1-beta_b*phi)*xi/phi+beta_b*pih(+1);
//pif=(1-phi)*(1-beta_b*phi)*xi/phi+beta_b*pif(+1);
pih(-1)=(1-phi)*(1-beta_b*phi)*xi(-1)/phi+beta_b*pih;
pif(-1)=(1-phi)*(1-beta_b*phi)*xi(-1)/phi+beta_b*pif;
pi=gamma_g*pih+(1-gamma_g)*pif;
r=(1-gamma_l)*(rr+pi)+gamma_l*(rf-pif(+1)+pi(+1)+q(+1)-q)+e_q;
rr=rho_rr*rr(-1)+(1-rho_rr)*chi_m*nu;
nu=m+pi-m(-1);
r=rho_r*r(-1)+(1-rho_r)*(lambda_y*y+lambda_pi*pi+lambda_q*q)+mu_r;
y=C_Y*c+I_Y*i+G_Y*g+NX_Y*nx;
e_q=rho_q*e_q(-1)+mu_q;
e_w=rho_w*e_w(-1)+mu_w;
rf=rho_rf*rf(-1)+mu_rf;
nx=rho_nx*rf(-1)+mu_nx;
a=rho_a*a(-1)+mu_a;
g=rho_g*g(-1)+mu_g;

end;

varobs y c m pi rf q r ; //

initval;

y=0; i=0; c=0; m=0; n=0; pi=0; nx=0; d=0; k=0; w=0; r=0; rr=0; rf=0; q=0; pih=0; pif=0; g=0; a=0; xi=0; e_w=0;e_q=0;
nu=0; lambda=0;

end;

steady;
check;

estimated_params; 

gamma_l,beta_pdf,0.5,0.2;
sigma,beta_pdf,0.8,0.2;
upsilon,beta_pdf,0.5,0.2;
alpha_a,beta_pdf,0.4,0.2;

chi_m,gamma_pdf,0.8,0.2;
phi,beta_pdf,0.75,0.2;
iota_d,beta_pdf,0.4,0.2;
gamma_g,beta_pdf,0.6,0.2;

rho_rr,beta_pdf,0.3,0.2;
rho_r,beta_pdf,0.5,0.2;
lambda_y,gamma_pdf,1.5,0.2;
lambda_pi,gamma_pdf,0.5,0.2;
lambda_q,gamma_pdf,0.4,0.2;

rho_w,beta_pdf,0.5,0.2;
rho_q,beta_pdf,0.5,0.2;
rho_rf,beta_pdf,0.5,0.2;
rho_nx,beta_pdf,0.3,0.2;
rho_a,beta_pdf,0.6,0.2;
rho_g,beta_pdf,0.5,0.2;

stderr mu_r, inv_gamma_pdf,1,Inf;
stderr mu_rf, inv_gamma_pdf,1,Inf;
stderr mu_nx, inv_gamma_pdf,1,Inf;
stderr mu_q, inv_gamma_pdf,1,Inf;
stderr mu_w, inv_gamma_pdf,1,Inf;
stderr mu_a, inv_gamma_pdf,1,Inf;
stderr mu_g, inv_gamma_pdf,1,Inf;
end; 

estimated_params_init(use_calibration);
end;

estimation(datafile=obs_data,conf_sig=0.95) y c m pi rf q r;//;
//estimation(order=1,datafile=obs_data,mh_replic=200,mh_nblocks=2,mh_jscale=0.8,conf_sig=0.95);