var u n v m u_m f q y A phi R lam c pi er theta w X sig J LC;

varexo mur mua;


parameters eta mu m_zero rho_zero sigma_a rho_a kappa_v beta gamma sigma kappa_p epsilon_p 
 phipi phiy Rs ys sigma_r rhoer b us vs ms u_ms fs qs As phis lams cs thetas 
ns ws pis rhor phi_c Xs sigs Js LCs;

load parameter_mainAA;


set_param_value('Js',Js);
set_param_value('LCs',LCs);
set_param_value('Xs',Xs);
set_param_value('sigs',sigs);
set_param_value('phi_c',phi_c);
set_param_value('thetas',thetas);
set_param_value('b',b);
set_param_value('phipi',phipi);
set_param_value('phiy',phiy);
set_param_value('rhoer',rhoer);
set_param_value('eta',eta);
set_param_value('rhor',rhor);
set_param_value('sigma_r',sigma_r);
set_param_value('sigma_a',sigma_a);
set_param_value('rho_zero',rho_zero);
set_param_value('mu',mu);
set_param_value('m_zero',m_zero);
set_param_value('rho_a',rho_a);
set_param_value('kappa_p',kappa_p);
set_param_value('kappa_v',kappa_v);
set_param_value('epsilon_p',epsilon_p);
set_param_value('beta',beta);
set_param_value('gamma',gamma);
set_param_value('sigma',sigma);
set_param_value('us',us);
set_param_value('ns',ns);
set_param_value('vs',vs);
set_param_value('ms',ms);
set_param_value('u_ms',u_ms);
set_param_value('fs',fs);
set_param_value('qs',qs);
set_param_value('ys',ys);
set_param_value('As',As);
set_param_value('phis',phis);
set_param_value('pis',pis);
set_param_value('lams',lams);
set_param_value('Rs',Rs);
set_param_value('ws',ws);
set_param_value('cs',cs);

model;

%(1) Total number of job seekers
exp(u)=1-(1-rho_zero)*exp(n(-1));
%(2) matching function
exp(m)=m_zero*(exp(u)^mu)*exp(v)^(1-mu);
%(3) law of motion of employment
exp(n)=(1-rho_zero)*exp(n(-1))+exp(m);
%(4)mesured unemployment
exp(u_m)=1-exp(n);
%(5) job finding rate
exp(f)=exp(m)/exp(u);
%(6) vacancy filling rate
exp(q)=exp(m)/exp(v);
%(7) production function
exp(X)=(exp(A)*(exp(sig)^(phi_c))*(exp(n)^(1-phi_c)));
% (8) Productivity shock
exp(A) = exp(A(-1))^(rho_a)*exp(mua);
%(9) vacancy posting decision
exp(J)=exp(phi)*exp(A)*(1-phi_c)*(exp(sig)^(phi_c))*(exp(n)^(-phi_c))-
(1-gamma+gamma*R)*exp(w)+(1-rho_zero)*beta*(exp(lam(+1))/exp(lam))*exp(J(+1));
%(10) real marginal cost
epsilon_p*(1-exp(phi))=1-kappa_p*(exp(pi)-pis)*exp(pi)+beta*(exp(lam(+1))/exp(lam))*kappa_p
*(exp(pi(+1))-pis)*exp(pi(+1))*(exp(X(+1))/exp(X));
%(11) CPO households
exp(lam)=exp(c)^(-sigma);
%(12) Euler equation
exp(lam)=beta*R*exp(lam(+1))/exp(pi(+1));
%(13) wage
(1-gamma+gamma*R)*exp(w)=eta*exp(phi)*exp(A)*(exp(sig)^(phi_c))*
(exp(n)^(-phi_c))*(1-phi_c)+(1-gamma+gamma*R)*(1-eta)*b+eta*(1-rho_zero)
*beta*((exp(lam(+1))/exp(lam)))*exp(J(+1))-eta*(1-gamma+gamma*R)*beta*
(exp(lam(+1))/exp(lam))*(1-rho_zero)*(1-exp(f(+1)))*exp(J(+1))
/(1-gamma+gamma*R(+1));
%(14) Taylor rule:
(R/Rs)=(((R(-1))/Rs)^(rhor))*((((exp(pi)/pis)^(phipi))*(exp(y)/ys)^(phiy))^(1-rhor))
*exp(er);
%(15)monetary shock
exp(er) = exp(er(-1))^(rhoer)*exp(mur);
%(16) ressource constraint
exp(y)=exp(c);
%(17) labor market tightness
exp(theta)=exp(v)/exp(u);
%(18) 
exp(y)=exp(X)-exp(sig);
%(19)
(1-gamma+gamma*R)=phi_c*exp(phi)*exp(A)*(exp(sig)^(phi_c-1))*(exp(n)^(1-phi_c));
%(20)
exp(J)=kappa_v/exp(q);
%(21)
exp(LC)=(1-gamma+gamma*R)*exp(w);

end;
initval;
J=log(Js);
LC=log(LCs);
theta=log(thetas);
u=log(us);
n=log(ns);
v=log(vs);
m=log(ms);
u_m=log(u_ms);
f=log(fs);
q=log(qs);
y=log(ys);
A=log(As);
phi=log(phis);
pi=log(pis);
lam=log(lams);
w=log(ws);
c=log(cs);
er=0;
R=Rs;
sig=log(sigs);
X=log(Xs);
end;

resid(1)
steady;

shocks;

var mua= sigma_a^2;

var mur= sigma_r^2;

end;
stoch_simul(order=1,irf=20,nograph,hp_filter=1600);