%Smets-Wouters US-EU two-country model

var c1, l1, r1, pi1, i1, q1, rk1, k1, w1, p1, y1,        eb1, ei1, ea1, er1, ew1, eg1, ep1, 

c2, y2, i2, q2, r2, pi2, rk2, k2, w2, l2,      eg2, ei2, epi2, ew2, ea2, eb2;



varexo eetaa1, eetab1, eetai1, eetar1, eetaw1, eetag1, eetap1, 

eetaq2, eetap2, eetag2, eetai2, eetapi2, eetaw2, eetaa2, eetab2;



parameters h1, gamma1, sigmac1, whnc1, beta1, adjcost1, delta1, rkstar1, ik1, alpha1, cphip1, iotap1, xip1, phip1, zetap1, cphiw1, iotaw1, xiw1, lambdaw1, zetaw1, sigmal1, psi1, cy1, iy1, im_eu1, im_us1, rho1, rpi1, ry1, rdy1, sigmag1, omega1, rhob1, rhoi1, rhoa1, rhor1, rhow1, rhog1, rhop1, muw1, rhoga1,mup1,

delta2, ky2, gy2, im_us2, im_eu2, beta2, cap_adjcost2, rkbar2, phim2, rdpi2, rho2, rpi2, ry2, rdy2, rhof2, phiw2, gammaw2, xiw2, lambdaw2, sigmac2, sigmal2, h2, psi2, phi2, alpha2, phip2, gammap2, xip2, sigmag2, omega2, rhog2, rhoi2, rhopi2, rhow2, rhoa2, rhob2;

% calibrated parameters in US model
h1 = 0.71; gamma1 = 1.0043; sigmac1 = 1.3952; whnc1 = 0.83192; beta1 = 0.99;
adjcost1 = 5.74; delta1 = 0.025; rkstar1 = 0.032649; alpha1 = 0.19; 
iotap1 = 0.24; xip1 =0.66; phip1 =1.6; zetap1 = 10; iotaw1 = 0.58; xiw1 = 0.7;
lambdaw1 = 1.5; zetaw1 = 10; sigmal1 = 1.83; psi1 = 0.54; cy1 = 0.64; 
iy1 = 0.17; im_eu1 = 0.016; im_us1 = 0.02; rho1 = 0.81; rpi1 = 2.03; ry1 =0.08; 
rdy1 = 0.22; sigmag1 =0.8; omega1 = 0.7;
rhob1 = 0.5799; rhoi1 = 0.7165; rhoa1 = 0.9977; rhor1 = 0; rhow1 = 0; rhog1 = 0.9957;
rhop1 = 0; muw1 = 0; rhoga1 = 0.51;mup1 = 0;

cphip1 = 0.06;
cphiw1 = 0.08;
ik1 = 1-(1-delta1)/gamma1;

% calibrated parameters in EU model

delta2 = 0.025; ky2 = 2.2; gy2 = 0.18; im_us2 = 0.001222; im_eu2 = 0.001413; 
beta2 = 0.99; cap_adjcost2 = 7.0; rkbar2 = 0.04; rdpi2 =0.221; rho2 = 0.931;
rpi2 = 1.661; ry2 = 0.143; rdy2 = 0.173; rhof2 = 1.5; gammaw2 = 0.663; xiw2 = 0.758;
lambdaw2 = 0.596; sigmac2 = 1.608; sigmal2 = 1.188; h2 = 0.552; psi2 = 0.175;
phi2 = 1.487; alpha2 = 0.3; gammap2 = 0.425; xip2 = 0.909; sigmag2 = 0.8; omega2 = 0.7; 
rhog2 = 0.949; rhoi2 = 0.927; rhopi2 = 0.924; rhow2 = 0.889; rhoa2 = 0.823; rhob2 = 0.855;

phim2 = 0.04;
phiw2 = 0.08;
phip2 = 0.06;



model (linear);

% Home country (US)

% consumption Euler equation
c1 = (h1/gamma1)/(1+h1/gamma1)*c1(-1) + 1/(1+h1/gamma1)*c1(1) + (sigmac1-1)*whnc1/(sigmac1*(1+h1/gamma1))*(l1-l1(1)) - (1-h1/gamma1)/(sigmac1*(1+h1/gamma1))*(r1-pi1(1)) + eb1;

% investment Euler equation 
i1 = 1/(1+beta1*gamma1)*i1(-1) + beta1*gamma1/(1+beta1*gamma1)*i1(1) + 1/((1+beta1*gamma1)*(gamma1^2)*adjcost1)*q1 + ei1;

% Tobin's q equation
q1 = (1-delta1)/(1-delta1+rkstar1)*q1(1) + rkstar1/(1-delta1+rkstar1)*rk1(1)-(r1-pi1(1)) + (1+h1/gamma1)*sigmac1/(1-h1/gamma1)*eb1;

% capital accumulation equation
k1 = (1-ik1)*k1(-1) + ik1*i1 + (1-ik1)*(1+beta1*gamma1)*(gamma1^2)*adjcost1*ei1;

% marginal product of labour
alpha1*rk1 + (1-alpha1)*w1 = ea1;

% price setting equation
p1 = cphip1*((beta1*gamma1/(1+beta1*gamma1*iotap1)*pi1(1) + iotap1/(1+beta1*gamma1*iotap1)*pi1(-1) - (1/(1+beta1*gamma1*iotap1))*(1-beta1*gamma1*xip1)*(1-xip1)/(xip1*((phip1-1)*zetap1+1))*(alpha1*rk1+(1-alpha1)*w1-ea1)) + er1) + (1-cphip1)*(1/alpha1*(ea1-(1-alpha1)*w1));

% labour supply
w1 = cphiw1* ((beta1*gamma1/(1+beta1*gamma1)*w1(1) + 1/(1+beta1*gamma1)*w1(-1) + beta1*gamma1/(1+beta1*gamma1)*pi1(1) - (1+beta1*gamma1*iotaw1)/(1+beta1*gamma1)*pi1 + iotaw1/(1+beta1*gamma1)*pi1(-1) - (1/(1+beta1*gamma1))*((1-beta1*gamma1*xiw1)*(1-xiw1)/(xiw1*((lambdaw1-1)*zetaw1+1)))*(w1-sigmal1*l1-(1/(1-h1/gamma1))*(c1-h1/gamma1*c1(-1))))+ew1) + (1-cphiw1)*(sigmal1*l1+(1/(1-h1/gamma1))*(c1-h1/gamma1*c1(-1))-(pi1-expectation(-1)(pi1)));

% labour demand
l1 = -w1 + (1+(1-psi1)/psi1)*rk1 + k1(-1);

% market clearing condition
y1 = cy1*c1 + iy1*i1 + alpha1*(1-psi1)/psi1*rk1 + +eg1;

% production function
rk1 = (1/(phip1*alpha1*(1-psi1)/psi1))*(y1-phip1*alpha1*k1(-1) - phip1*(1-alpha1)*l1 - phip1*ea1);

% Taylor rule
r1 = rho1*r1(-1) + (1-rho1)*(rpi1*pi1 + ry1*y1) + rdy1*(y1-y1(-1)) + er1;


% exogenous processes
eb1 = rhob1*eb1(-1) + eetab1; % net-worth shocks
ei1 = rhoi1*ei1(-1) + eetai1; % investment specific technology shock
ea1 = rhoa1*ea1(-1) + eetaa1; % total factor productivity shock
er1 = rhor1*er1(-1) + eetar1; % monetary shock
ew1 = rhow1*ew1(-1) + eetaw1 - muw1*eetaw1(-1); % wage mark-up shock
eg1 = rhog1*eg1(-1) + eetag1 + rhoga1*eetaa1; % exogenous spending shock
ep1 = rhop1*ep1(-1) + eetap1 - mup1*eetap1(-1); % price mark-up shock
% wage setting equation- second part=(1-cphiw1)*(sigmal1*l1+(1/(1-h1/gamma1))*(c1-h1/gamma1*c1(-1))-(pi1-pi1)+ ewnc1)


% Overseas (EU)


% market clearing equation
c2 = (1/(1 - delta2*ky2 - gy2))*(y2 - delta2*ky2*i2 - eg2 );

% investment Euler equation
i2 =1/(1+beta2)*i2(-1) + beta2/(1+beta2)*i2(1) + (1/cap_adjcost2)/(1+beta2)*q2 +ei2;

% Tobin's q equation
q2 = -(r2 - pi2(1)) + (1-delta2)/(1-delta2+rkbar2)*q2(1) + rkbar2/(1-delta2+rkbar2)*rk2(1) + eetaq2;

% capital accumulation equation
k2 = (1-delta2)*k2(-1) + delta2*i2(-1);

% Taylor rule equation
pi2 = phim2*( pi2(-1) + 1/rdpi2*(r2 - rho2*r2(-1) - (1-rho2)*(rpi2*pi2(-1)+ry2*y2-rdy2*(y2-y2(-1))))) + (1-phim2)*(1/rhof2*(r2-pi2(1))) + epi2;

% labour supply
w2 = phiw2* (beta2/(1+beta2)*w2(1) + 1/(1+beta2)*w2(-1) + beta2/(1+beta2)*pi2(1) - (1+beta2*gammaw2)/(1+beta2)*pi2 + gammaw2/(1+beta2)*pi2(-1) - (1-beta2*xiw2)*(1-xiw2)/((1+beta2)*(1+(1+lambdaw2)*sigmal2/lambdaw2)*xiw2)*(w2-sigmal2*l2-sigmac2/(1-h2)*(c2-h2*c2(-1)))+ew2) + (1-phiw2)*(sigmal2*l2+sigmac2/(1-h2)*(c2-h2*c2(-1))-(pi2-expectation(-1)(pi2)));

% labour demand
l2 = -w2 + (1+psi2)*rk2 + k2(-1);

% production function
y2 = phi2*alpha2*psi2*rk2 + phi2*alpha2*k2(-1) + phi2*(1-alpha2)*l2 + phi2*ea2;

% price-setting equation
rk2 = phip2 *(xip2*(1+beta2*gammap2)/((1-beta2*xip2)*(1-xip2)*alpha2)*(pi2 - beta2/(1+beta2*gammap2)*pi2(1) - gammap2/(1+beta2*gammap2)*pi2(-1)) - (1-alpha2)/alpha2*w2 + 1/alpha2*ea2 - eetap2) + (1-phip2)*(1/alpha2*ea2-(1-alpha2)/alpha2*w2);

% consumption Euler equation
r2 = pi2(1) + (1+h2)*sigmac2/(1-h2)*(h2/(1+h2)*c2(-1) + 1/(1+h2)*c2(1) - c2 + eb2);


% exogenous processes
eg2 = rhog2*eg2(-1) + eetag2;
ei2 = rhoi2*ei2(-1) + eetai2;
epi2 = rhopi2*epi2(-1) + eetapi2;
ew2 = rhow2*ew2(-1) + eetaw2;
ea2 = rhoa2*ea2(-1) + eetaa2;
eb2 = rhob2*eb2(-1) + eetab2;

%% wage setting equation NC part=(1-phiw1)*(sigmal2*l2+sigmac2/(1-h2)*(c2-h2*c2(-1))-(pi2-pi2)+ewnc)
end;

write_latex_dynamic_model;

write_latex_static_model;

resid(1);


steady;

check;

shocks;
var eetaa1; stderr 0.4618;
var eetab1; stderr 1.8513;
var eetai1; stderr 0.6017;
var eetar1; stderr 0.2397;
var eetaw1; stderr 0.2089;
var eetag1; stderr 0.6090;
var eetap1; stderr 0.1455;

var eetaq2; stderr 0.604;
var eetap2; stderr 0.16;
var eetag2; stderr 0.325;
var eetai2; stderr 0.085;
var eetapi2; stderr 0.017;
var eetaw2; stderr 0.289;
var eetaa2; stderr 0.598;
var eetab2; stderr 0.336;
end;

stoch_simul (periods=2000);



