//preamble
var cu r dp hu q wu lu cc lambda hc wc lc b Y F X;
varexo eps_e;
parameters ALPHA1, ALPHA2, ALPHA3, ALPHA4, j, BETA, BETATILDE, M, RHO, PHIP, PHIY, XSS, THETA, ETA, GAMMA;
ALPHA1=j/1-BETA;
ALPHA2=j/1-BETATILDE-M*(BETA_BETATILDE);
ALPHA3=(1-GAMMA)/X;
ALPHA4=(GAMMA+X-1)/X;
ALPHA5=ALPHA3/(1+(1-BETA)*M*ALPHA2;
ALPHA6=ALPHA4+(1-BETA)*(M*ALPHA2*ALPHA5);
j=0.1;
BETA=0.99;
BETATILDE=0.98;
M=0.9;
ETA=0.01;
RHO =0.8 ;
PHIP = 0.5 ;
PHIY= 0;
XSS = 1.2 ;
THETA = 0.75 ;
STDERR_AE = 0.0029;

model;

//% Savers
1/cu=BETA*(1/cu(+1))*(r/dp(+1));
j/hu=q/cu-BETA*(q(+1)/cu(+1));
wu=((lu)^ETA)*cu;

//% Borrowers
1/cc=BETATILDE*(1/cc(+1))*(r/dp(+1))+lambda*r;
j/hc=q/cc-BETATILDE*(q(+1)/cc(+1))-M*dp(+1)*q(+1);
wc=((lc)^ETA)*cc;

//% Budget Constraint
cc+q*hc+(r(-1)*b(-1)/dp)=wc*lc+b;

//% Collateral Constraint
b*r=M*dp(+1)*q(+1)*hc;

//% Final good firm
Y=((lu)^GAMMA)*((lc)^1-GAMMA);
wu=GAMMA*1/X*Y/lu;
wc=(1-GAMMA)*1/X*Y/lc;

//% New Keynesian Phillips Curve
dp = BETA*dp(+1) - (((1-THETA)*(1-BETA*THETA))/THETA)*(X-log(XSS));

//% Taylor Rule
r = RHO*r(-1)+(1-RHO)*(1+PHIP)*dp+(1-RHO)*PHIY*Y+(1-RHO)*log(1/BETA)+eps_e;

//% Market Clearing
hu+hc=1;
Y=cu+cc;
F=((X-1)*X)*Y;
end;

steady_state_model;
Y=1;
dp=1;
r=1/BETA;
lambda=(BETA-BETATILDE)/cc;
F=(1-1/X)*Y;
q=ALPHA1*(cu/hu);
q=ALPHA2*(cc/hc);
b=BETA*M*ALPHA2*cc;
cc=ALPHA5*Y;
cu=ALPHA6*Y;
hu=(ALPHA1*ALPHA6)/((ALPHA1*ALPHA6)+(ALPHA2*ALPHA5));
hc=(ALPHA2*ALPHA5)/((ALPHA1*ALPHA6)+(ALPHA2*ALPHA5));
wu=(ALPHA4*Y-F)/lu;
wc=(ALPHA3*Y)/lc;
end;

steady;
shocks;
var eps_e; stderr 100*STDERR_AE;
end;
stoch_simul(order=1,irf=20) Y cu cc hu hc r dp b X q;
