var 
c_p     
n_p       // 2  PATIENT   HHs
d         // 3  PATIENT   HHs
w_p       // 4  PATIENT   HHs
t_p
w_i
c_i       // 9  IMPATIENT HHs
lam_i
f_b
n_i       // 10 IMPATIENT HHs
b         // 11 IMPATIENT HHs 
t_i
lam_p
c_r
lam_r
b_r
q_h
h         // 12 IMPATIENT HHs
t_r
r_d       // 30 BANKS
r_b       // 31 BANKS
r_r
R_b       // 33 BANKS
K       // 34 BANKS
pie       // 35 RETAILERS
y         // 38 AGGREGATION & EQUILIBRIUM
r_ib      // 49 MONETARY POLICY
j_b
%eps_z_p
eps_z_i
%eps_z_r
%eps_l_p
eps_d
eps_l_i
%eps_b
z_e
x
eps_y
y_s
%zi
s_i
eps_h
B
npa_rat
%RP
c
n_b
w_b
c_b
t_b
z_b
%zi_si
%zi
mk_d
mk_b
;

predetermined_variables K q_h;

varexo  e_l_i e_d e_z_e e_mk_d e_mk_b e_zi e_z_si e_z_b e_z_i e_y e_h;


parameters  alph beta_p eps_l_p eps_d_bar      r_r_ss    z_b_bar                              // HOUSEHOLDS & ENTREPRENEURS
            beta_i s_i_bar  eps_l_i_bar h_bar  eps_y_bar                        // HOUSEHOLDS 
            k_d k_b k_f k_p mk_d_bar mk_b_bar elas_f_bar kk_b                    // BANKS 
            r_b_ss  r_d_ss  r_ib_ss R_b_ss  delt nu   theta_i                               // BANKS (SS)
            z_e_bar i_p a_p a_i f_bar a_r phi_r a_b rho_zi_si zi_si_bar
            phi_p phi_y    Lam         zi_bar rho_zi    eps_h_bar                                       // POLICY
            pi_s        eps_z_p     eps_z_i_bar   rho_z_p rho_z_i                             // STEADY STATE
            rho_l_p rho_l_i rho_z_e rho_d rho_b rho_mk_d rho_mk_b  
            rho_y rho_s rho_f  rho_h rho_z_b
            eta   gamm  phi_s  elas_d elas_b // SHOCKS
             ;

% *********************			
% CALIBRATED PARAMETERS
% *********************
alph         = 0.5;
a_p          = 0.6;
a_i          = 0.4;
a_r          = 0.4;
a_b          = 0.6;
f_bar        = 0.99;
eps_z_p     = 1;
eps_z_i_bar  = 1;
%eps_z_r_bar  = 1;
beta_p       = 0.990242736;                                                     % discount factor patient households
beta_i       = 0.975;   
beta_r       = 0.975; 
theta_i      = 96.21097559;   
Lam          = 1/(0.045350261);                                                % discount factor impatient households     
eps_l_p      = 0.820239461;
eps_l_i_bar  = eps_z_i_bar/0.48;
eps_d_bar    = 0.5;
%eps_b_bar    = 0.24;
eps_y_bar    = 6;
eps_h_bar    = 0.122369136;
z_e_bar      = 1;
z_b_bar      = 0.99;
eta          = 1.41606406;
s_i_bar      = 0.214870083;
h_bar        = 1.0;
elas_d   = 1.029276405;
elas_b  = 1.687324234;
mk_d_bar = elas_d/(1+elas_d);
mk_b_bar = elas_b/(elas_b-1);
k_d          = 0.5;
k_b          = 6;
kk_b         = 10;
pi_s         = 1;
%r_d_ss       = (pi_s/beta_p - 1);
r_ib_ss      = ((elas_d+1)/elas_d)*(pi_s/beta_p - 1);
r_r_ss       = (((1+r_ib_ss)*gamm+(1+(pi_s/beta_p - 1))*(1-gamm)))-1;
R_b_ss       = (((1+r_ib_ss)*gamm+(1+(pi_s/beta_p - 1))*(1-gamm))/f_bar)-1;
r_b_ss       = (elas_b/(elas_b-1))*R_b_ss;
%delt         = 0.057189909;
delt         = -0.032616166;
nu           = 0.09;
phi_p        = 2.5;
phi_y        = 0.9;
k_p          = 100;
k_f          = 10;
i_p          = 0.5;
gamm         = 0.118520107;
%y_s          = 1;
rho_l_p      = 0.9;
rho_l_i      = 0.9;
rho_z_e      = 0.9;
rho_d        = 0.9;
rho_b        = 0.9;
rho_y        = 0.9;
rho_mk_d   = 0.0;
rho_mk_b   = 0.0;
rho_z_p      = 0.9;
rho_z_i      = 0.9;
rho_z_b      = 0.9;
%rho_z_r      = 0.9;
rho_zi_si    = 0.9;
rho_f        = 0.9;
rho_s        = 0.5;
rho_h        = 0.9;
zi_bar       = 1;
zi_si_bar    = 0.99;
rho_zi       = 0.9;
phi_r        = 0.75;
phi_s        = 0.95;
model;


%---------------------------------------------------------------

%---------------------------------------------------------------
%Patient HHd 1-7
%---------------------------------------------------------------
n_p=1;
n_i=1;
%((1-a_p)*eps_z_p-eps_d)/(c_p-a_p*c_p(-1))=beta_p*(1+r_d)*((1-a_p)*eps_z_p(+1)-eps_d(+1))/(c_p(+1)-a_p*c_p);

(c_p-a_p*c_p(-1)) = ((1-a_p)*eps_z_p)*w_p*n_p/eps_l_p;

lam_p = (1-a_p)*eps_z_p/(c_p-a_p*c_p(-1));

beta_p*(1+r_d)=1;

(1-eps_d)-lam_p*(gamm+2*Lam*gamm^2*d)+beta_p*lam_p(+1)*(1+r_d)*gamm=0;



t_p = c_p + gamm*d + Lam*gamm^2*d^2 - (1+r_d(-1))*gamm*d(-1)*pie^(-1) - w_p*n_p;



%---------------------------------------------------------------
%Impatient hhd 8-11
%---------------------------------------------------------------

(c_i-a_i*c_i(-1)) = (1-alph)*y*((1-a_i)*eps_z_i)/(eps_l_i*x);

lam_i = ((1-a_i)*eps_z_i)/(c_i-a_i*c_i(-1));

-beta_i*theta_i*(1-f_b(+1))*pie(+1)^(-1) - beta_i*lam_i(+1)*(1+r_b)*f_b(+1)*pie^(-1) + lam_i = 0;

t_i = c_i + (1+r_b(-1))*f_b*b(-1)*pie^(-1) -w_i*n_i - b;

%---------------------------------------------------------------
%Firms 12-19
%---------------------------------------------------------------
h = 1;

y = z_e*n_p^(alph)*n_i^(1-alph);

w_p = alph*z_e*n_p^(alph-1)*n_i^(1-alph)/x;

w_i = (1-alph)*z_e*n_p^alph*n_i^(-alph)/x;

lam_r = (1-a_r)/(c_r-a_r*c_r(-1));

s_i = (b_r*(1+r_r))/(q_h(+1)*h*pie(+1));

eps_h/h + beta_i*lam_r(+1)*q_h(+1)*(1-s_i)-lam_r*q_h + lam_r*s_i*q_h(+1)*pie(+1)/(1+r_r)=0;

t_r = c_r + (1+r_r(-1))*b_r(-1)/pie + w_p*n_p + w_i*n_i + q_h*(h-h(-1))- b_r - y/x;


%-----------------------------------------------------------------
%BCA - Loan Collectors 20-29
%-----------------------------------------------------------------
(1-a_b)/(c_b-a_b*c_b(-1))=beta_p*(1-a_b)*(1+r_d)*pie(+1)^(-1)/(c_b(+1)-a_b*c_b);

1/n_b = w_b * (1-a_b)/(c_b-a_b*c_b(-1));

t_b = c_b+(1+r_d(-1))*(1-gamm)*d(-1)-w_b*n_b;

%-----------------------------------------------------------------
%Banks 20-29
%-----------------------------------------------------------------

1-(mk_d/(1-mk_d))*r_ib/r_d + (mk_d/(1-mk_d)) - k_d*(r_d/r_d(-1)  - 1)*(r_d/r_d(-1)) + beta_p* (k_d*(r_d(+1)/r_d  - 1)*(r_d(+1)/r_d)^2 * d(+1)/d) = 0;

B = b+b_r;

d + K = B;

f_b = z_e*z_b*n_b;

(1+R_b)*f_b = (1+r_ib)*gamm + (1+r_d)*(1-gamm) - kk_b*(K/B - nu)*(K/B)^2;

%RP = R_b - r_ib*gamm - r_d*(1-gamm);

w_b = (1+R_b(-1))*z_e*z_b*b(-1);

1+r_r =(1+ r_ib)*gamm + (1+r_d)*(1-gamm) - kk_b*(K/B - nu)*(K/B)^2;

j_b = R_b*b*f_b + r_r*b_r - r_ib*gamm*(b+b_r-K) - r_d*(1-gamm)*(b+b_r-K) - 0.5*kk_b*(K/B - nu)^2*K;

K = (1-delt)*K(-1)+ j_b;

1 + (mk_b/(mk_b-1))*R_b/r_b - (mk_b/(mk_b-1)) - k_b*(r_b/r_b(-1)  - 1)*(r_b/r_b(-1)) + beta_p* (k_b*(r_b(+1)/r_b  - 1)*(r_b(+1)/r_b)^2 * b(+1)/b) = 0;

%(1+r_ib)=(1+r_ib_ss)^(1-phi_r)*(1+r_ib(-1))^phi_r*((pie/pi_s)^(phi_p*(1-phi_r)))*((y_s/y_s(-1))^(phi_y*(1-phi_r)))*(1+e_zi);
1+r_ib=(1-phi_r)*(1+r_ib_ss)+phi_r*(1+r_ib(-1))+phi_p*(1-phi_r)*(pie-pi_s)+phi_y*(1-phi_r)*(y_s-y_s(-1))+(e_zi);
%s_i = (s_i_bar)^(1-phi_s)*(s_i(-1))^(phi_s)*(B/B(-1))^eta*(1+e_z_si);
%s_i=B^eta;
s_i = (1-phi_s)*(s_i_bar)+phi_s*(s_i(-1))+eta*(B-B(-1))+e_z_si;
%1+r_ib=max(0,(1+r_ib_ss)*((pie/pi_s)^phi_p)*((y_s/y_s(-1))^phi_y)); %zero lower bound

npa_rat = (1-f_b)*b/B;

1-eps_y+eps_y/x - k_p*(pie - pie(-1)^(i_p)*pi_s^(1-i_p))*pie +beta_p*(k_p*(pie(+1)-pie^(i_p)*pi_s^(1-i_p))*pie(+1)*y(+1)/y)=0;


%Aggregation
c = c_p + c_i + c_r + c_b;
y_s = c;

%Exogenous Processes(32-44
%eps_z_p = (1-rho_z_p)*eps_z_p_bar + rho_z_p*eps_z_p(-1) + e_z_p;
eps_z_i = (1-rho_z_i)*eps_z_i_bar + rho_z_i*eps_z_i(-1) + e_z_i;
%eps_z_r = (1-rho_z_r)*eps_z_r_bar + rho_z_r*eps_z_r(-1) + e_z_r;

%eps_l_p = (1-rho_l_p)*eps_l_p_bar + rho_l_p*eps_l_p(-1) + e_l_p;
eps_l_i = (1-rho_l_i)*eps_l_i_bar + rho_l_i*eps_l_i(-1) + e_l_i;
eps_d   = (1-rho_d)*eps_d_bar + rho_d*eps_d(-1) + e_d;
z_e     = (1-rho_z_e)*z_e_bar + rho_z_e*z_e(-1) + e_z_e;
mk_d  = (1-rho_mk_d)*mk_d_bar + rho_mk_d*mk_d(-1)+e_mk_d;
mk_b  = (1-rho_mk_b)*mk_b_bar + rho_mk_b*mk_b(-1)+e_mk_b;
eps_y   = (1-rho_y)*eps_y_bar + rho_y*eps_y(-1) + e_y;
eps_h   = (1-rho_h)*eps_h_bar + rho_h* eps_h(-1) + e_h;
z_b     = (1-rho_z_b)*z_b_bar + rho_z_b*z_b(-1)+e_z_b;
%s_i     = (1-rho_s)*s_i_bar + rho_s*s_i(-1) + e_si;
%zi_si     = (1-rho_zi_si)*zi_si_bar + rho_zi_si*zi_si(-1)+e_z_si;
%zi       = (1-rho_zi)*zi_bar + rho_zi*zi(-1)+e_zi;
end; %model

initval;
mk_d    = 0.507213508;
mk_b    = 2.454917418;
n_p=1;
n_i=1;
n_b=1;
z_e       = z_e_bar;
y         = z_e;
%zi        =  1;
%w_p       = 0.416666666;
w_p       = 0.5/1.2;
%t_p       = 0.079293436;
t_p       = 0.038768134;
%w_i       = 0.416666666;
w_i       = 0.5/1.2;
lam_p     = 1.968574705;
c_p       = 0.507981738;

d         = 0.41;
r_d       = 0.00985340655;
r_ib      = 0.019426546;
%r_b_tild  = 0.020397873;
c_i       = 0.2;
lam_i     = 5;
b         = 0.041561583; 
%t_i       = 0.096852257;
t_i       = -0.214525254;
%eps_z_r   = 1;
c_r       = 0.25;
lam_r     = 4;
%zi_si     = zi_si_bar;
s_i       = 0.214870083;
q_h       = 1.392864;
h         = 1;
eps_h     = 0.122369136;
t_r       = 0.253252804;
r_r       = 0.010988015;
b_r       = 0.296032;
r_b       = 0.052044286;
R_b       = 0.021200015;
K         = 0.030383422;
pie       = pi_s;

%eps_l_p   = 0.820239461;
eps_d     = 0.5;
eps_z_i   =1;
z_b       = 0.99;
f_b       = 0.99;
eps_l_i   = 0.5/0.24;
%eps_b     = 0.24;

%elas_f    = -20;
eps_y     =  6;
x         =  1.2;
w_b        = 0.042018262;
c_b        = 0.042018262;
t_b        = 0.003561087698;

B         = 0.337593583;

j_b       = -0.0003799874084;
npa_rat   = 0.001231112944;
%RP        = 0.030695111;
c         = 1;
y_s       = y;
end;


shocks;
%var e_z_i;
%stderr 1;
%var e_l_i;
%stderr 1;
var e_d;
stderr 1;
%var e_y;
%stderr 1;
var e_zi;
stderr 1;
var e_z_e;
stderr 1;
var e_mk_d;
stderr 1;
var e_mk_b;
stderr 1;
var e_z_b;
stderr 1;
var e_z_si;
stderr 1;
end;

steady;
check;

%identification(ar=10);



%stoch_simul(order=1,irf=0,nocorr) pie r_ib ;
stoch_simul (hp_filter=1600, order=1, irf=18, qz_zero_threshold=1e-14);
%simul(periods=20);
%estimated_params_init(use_calibration);
%end;
%estimation(datafile=utility_10_da,mh_jscale=0.30,prior_trunc=0,plot_priors=0,mh_replic=10000,mode_compute=8,mh_nblocks=10,filtered_vars,order=1,lik_init=1,mode_check)y c pie r_b r_ib r_d d B zi; 
%estimation(datafile=utility_10_da,first_obs=20,mh_nblocks = 1,nobs=45,dsge_var,mode_compute=4,optim=('NumgradAlgorithm',3),mh_replic=2000,bayesian_irf);

%lambda1=2;
%lambda2=0.5;
%lambda3=0.5;

%optim_weights;
%pie lambda1;
%c_p lambda2;
%c_i lambda3;
%c_r lambda3;
%end;


%phi_p = 1.8;
%phi_y = 0.2;
%phi_r = 2;
%osr_params phi_p phi_y phi_r;
%osr(irf=0);
