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_tild
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
elas_d
elas_b
elas_f
x
eps_y
y_s
zi
s_i
eps_h
B
npa_rat
%RP

;

predetermined_variables K ;

varexo  e_l_i e_d e_z_e e_elas_d e_elas_b e_elas_f e_y e_zi e_z_i e_f e_si e_h ;


parameters  alph beta_p eps_l_p eps_d_bar      r_r_ss                                  // 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 elas_d_bar elas_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 gamma1 gamma2 gamma3 lambda1 lambda2 lambda3
            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_elas_d rho_elas_b  
            rho_elas_f  rho_y rho_s rho_f  rho_h // SHOCKS
             ;

% *********************			
% CALIBRATED PARAMETERS
% *********************
alph         = 0.5;
a_p          = 0.6;
a_i          = 0.4;
a_r          = 0.4;
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      = 2.831517611; 
theta_i      = 1.339785026;   
Lam          = 1/(3.28);                                                % discount factor impatient households     
eps_l_p  = 1/1.2;
eps_l_i_bar  = 1/0.6;
eps_d_bar    = 0.5;
%eps_b_bar    = 0.24;
eps_y_bar    = 6;
eps_h_bar    = 0.132111635;
z_e_bar      = 1;
s_i_bar      = 0.216663564;
h_bar        = 1.0;
elas_d_bar   = 1.029276405;
elas_b_bar   = 27.06933347;
elas_f_bar   = -20;
k_d          = 10;
k_b          = 6;
kk_b         = 10;
pi_s         = 1;
r_d_ss       = (pi_s/beta_p)-1;
r_ib_ss      = ((elas_d_bar+1)/elas_d_bar)*r_d_ss;
r_r_ss       = r_ib_ss;
r_b_tild_ss  = r_ib_ss*(elas_f_bar-1)/elas_f_bar;
R_b_ss       = (r_b_tild_ss +(1+r_ib_ss)/f_bar)-1;
r_b_ss       = (elas_b_bar/(elas_b_bar-1))*R_b_ss;
%delt         = 0.057189909;
delt         = -0.032616166;
nu           = 0.09;
%phi_p        = 1.8;
%phi_y        = 0.2;
k_p          = 50;
k_f          = 10;
i_p          = 0.5;

%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_elas_d   = 0.9;
rho_elas_b   = 0.9;
rho_elas_f   = 0.9;
rho_z_p      = 0.9;
rho_z_i      = 0.9;
%rho_z_r      = 0.9;
rho_f        = 0.9;
rho_s        = 0.9;
rho_h        = 0.9;
zi_bar       = 1;
rho_zi       = 0.9;
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*(1+2*Lam*d)+beta_p*lam_p(+1)*(1+r_d)=0;



t_p = c_p + d + max(0,Lam*d^2) - (1+r_d(-1))*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(+1)*r_ib(+1)*f_b(+1) + lam_i = 0;

t_i = c_i + (1+r_b(-1))*f_b*b(-1)*pie^(-1) -w_i*n_i - b - r_ib*f_b*b(-1);

%---------------------------------------------------------------
%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;

%n_p=1;
%n_i=1;

%y=z_e;

%w_p=alph*z_e;

%w_i=(1-alph)*y/(n_i*x);
%-----------------------------------------------------------------
%
%-----------------------------------------------------------------

1-elas_d*r_ib/r_d + elas_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;

(1+R_b)*f_b = (1+r_ib) + r_b_tild*f_b - kk_b*(K/B - nu)*(K/B)^2;

%RP = R_b - r_ib;

r_r = r_ib - kk_b*(K/b - nu)*(K/B)^2;

%j_b = (r_r-r_ib)*b_r + r_ib*K +(1-f_b)*b -0.5*kk_b*(K/B - nu)^2*K(-1);
%j_b = R_b(-1)*b(-1)*f_b + r_r(-1)*b_r(-1) - r_ib(-1)*(b(-1)+b_r(-1)-K(-1)) - r_b_tild(-1)*b(-1)*f_b - 0.5*kk_b*(K(-1)/B(-1) - nu)^2*K(-1);
j_b = R_b*b*f_b + r_r*b_r - r_ib*(b+b_r-K) - r_b_tild*b*f_b - 0.5*kk_b*(K/B - nu)^2*K;

K = (1-delt)*K(-1)+ j_b;

-1-elas_f*r_b_tild/r_ib + elas_f - k_f*(r_ib/r_ib(-1)  - 1)*(r_ib/r_ib(-1)) + beta_p* (k_f*(r_ib(+1)/r_ib  - 1)*(r_ib(+1)/r_ib)^2 * f_b*b/(f_b(-1)*b(-1))) = 0;


1 + elas_b*R_b/r_b - elas_b - 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)*((pie/pi_s)^phi_p)*((y/y_s)^phi_y)*(zi);


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
y = c_p + c_i + c_r;

%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;
%eps_b   = (1-rho_b)*eps_b_bar + rho_b*eps_b(-1) + e_b;
z_e     = (1-rho_z_e)*z_e_bar + rho_z_e*z_e(-1) + e_z_e;
elas_d  = (1-rho_elas_d)*elas_d_bar + rho_elas_d*elas_d(-1)+e_elas_d;
elas_b  = (1-rho_elas_b)*elas_b_bar + rho_elas_b*elas_b(-1)+e_elas_b;
elas_f  = (1-rho_elas_f)*elas_f_bar + rho_elas_f*elas_f(-1)+e_elas_f;
eps_y   = (1-rho_y)*eps_y_bar + rho_y*eps_y(-1) + e_y;
zi      = (1-rho_zi)*zi_bar + rho_zi*zi(-1) + e_zi;
f_b     = (1-rho_f)*f_bar + rho_f*f_b(-1) - e_f;
s_i     = (1-rho_s)*s_i_bar + rho_s*s_i(-1) + e_si;
eps_h   = (1-rho_h)*eps_h_bar + rho_h* eps_h(-1) + e_h;


end; %model

initval;
n_p=1;
n_i=1;
y_s       = 1;
z_e       = z_e_bar;
y         = y_s;
%w_p       = 0.416666666;
w_p       = 0.5/1.2;
%t_p       = 0.079293436;
t_p       = 0.130543437;
%w_i       = 0.416666666;
w_i       = 0.5/1.2;
lam_p     = 2;
c_p       = 0.5;

d         = 0.41;
r_d       = 0.00985340655;
r_ib      = 0.019426546;
r_b_tild  = 0.020397873;
c_i       = 0.25;
lam_i     = 4;
b         = 0.041561583; 
%t_i       = 0.096852257;
t_i       = -0.165740194;
%eps_z_r   = 1;
c_r       = 0.25;
lam_r     = 4;
s_i       = 0.216663564;
q_h       = 1.392864;
h         = 1;
eps_h     = 0.132111635;
t_r       = 0.255750879;
r_r       = 0.019426546;
b_r       = 0.296032;
r_b       = 0.052044286;
R_b       = 0.050121657;
K         = 0.030383422;
pie       = pi_s;
elas_d    = 1.029276405;
%eps_l_p   = 1;
eps_d     = 0.5;
eps_z_i   =1;
f_b       = 0.99;
eps_l_i   = 1/0.6;
%eps_b     = 0.24;
elas_b    = 27.06933347;
elas_f    = -20;
eps_y     =  6;
x         =  1.2;
zi        =  1;
B         = 0.337593583;
%j_b       = 0.01223871;
j_b       = -0.000990990754;
%npa_rat   = 0.001231112944;
%RP        = 0.030695111;
end;

shocks;
var e_z_i;
stderr 1;
var e_l_i;
stderr 1;
var e_d;
stderr 1;
%var e_b;
%stderr 1;
var e_y;
stderr 1;
var e_zi;
stderr 1;
var e_z_e;
stderr 1;
var e_elas_d;
stderr 1;
var e_elas_b;
stderr 1;
var e_elas_f;
stderr 1;
var e_f;
stderr 1;
var e_si;
stderr 1;
end;

%steady;
%check;

%model_diagnostics;


%stoch_simul (hp_filter=1600, order=1, irf=40, qz_zero_threshold=1e-14);

%simul(periods=40);

%planner_objective(0.2*var(c_p)+0.2*var(c_i)+0.6*var(c_r));

%write_latex_static_model;

%ramsey_policy(planner_discount=0.99, order=1);

lambda1=1.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.5;

osr_params phi_p phi_y;
osr;



