var pi y i rn a ygap r yn dm l u dy robs pinfobs v g;
varexo e_a e_u e_v e_g;
parameters PHI_Y PHI_PI RHO mu cr conster LAMBDA KAPPA AUX PSI_YA RHOG RHOV ctrend constepinf pie cgamma RHOU BETA SIGMA PHI RHOA THETA ALFA EPSILON SED; 

%SW(2007)
ALFA  =0.19;
PHI   =1.92;
EPSILON=5.48;
BETA   =0.99;
THETA  =0.65;
SIGMA  =1.39;
RHO    =-log(BETA);
SED = 4; %Gali
RHOG = 0.97;
RHOU = 0.90;
RHOA = 0.95;
RHOV = 0.12;
cgamma  = 1.004;
cpie    = 1.005;
constepinf=0.6308;
ctrend=0.4930;
PHI_PI = 2.03;
PHI_Y = 0.08;

% Functions of other parameters
mu     =  log(EPSILON/(EPSILON-1));
cr=cpie/(BETA*cgamma^(-SIGMA));
conster=(cr-1)*100;
LAMBDA  =  ((1-THETA)*((1-BETA*THETA)/THETA)*(1-ALFA)/(1-ALFA+ALFA*EPSILON));
KAPPA   =  LAMBDA*(SIGMA + (PHI+ALFA)/(1-ALFA));
AUX     =  (1-ALFA)*(log(EPSILON/(EPSILON-1)-log(1-ALFA)))/(SIGMA*(1-ALFA)+PHI+ALFA); 
PSI_YA  =  (1+PHI)/(PHI+ALFA+SIGMA*(1-ALFA)); 

model(linear);
% New Keynesian Phillips Curve: eq(21)
pi=BETA*pi(+1)+KAPPA*ygap+u;

% Dynamic IS: eq(22)
ygap=ygap(+1)-(1/SIGMA)*(i-pi(+1)-rn)+g;

% Natural Interest Rate: eq(23)
rn=RHO+SIGMA*PSI_YA*(a(+1)-a);

% Auxiliary equations: 
%(Fisher pag 49)
r=i-pi(+1);

% adhoc money (growth) demand: eq(29) and (31)
y-SED*i=l-yn;
l(-1)=l+pi-dm;

% natural product: eq(19) and definition of output gap
yn     = PSI_YA*a + AUX;                       
ygap=y+yn;

%MP rule
i = RHO + PHI_PI*pi+PHI_Y*ygap+v;

%Shocks
a=RHOA*a(-1)+e_a;
u = RHOU*u(-1)+e_u;
v = RHOV*v(-1)+e_v;
g = RHOG*g(-1)+e_g;

%SW(2007) Measurement equations
dy=y-y(-1)+ctrend;
pinfobs = 1*(pi) + constepinf;
robs = 1*i+conster;
end;


steady;
check;

shocks;
var e_v; stderr 0.24;
var e_a; stderr 0.45;
var e_u; stderr 0.14;
var e_g; stderr 0.52;
end;

stoch_simul(order =1, periods=183,simul_replic=100) dy pinfobs robs;
[sim_array]=get_simul_replications(M_,options_);