var 
%Patient HHd's
c_p   
eps_z_p  
n_p       // 2  PATIENT   HHs
eps_l_p
D         // 3  PATIENT   HHs
eps_d
gam_d
r_d
w_p       // 4  PATIENT   HHs
t_p
lam_p

%Impatient HHd's
c_i       // 9  IMPATIENT HHs
eps_z_i
n_i
eps_l_i
f_b
%gam_b
w_i
b         // 11 IMPATIENT HHs 
r_b
r_tild
lam_i

%Entrepreneur
c_r
eps_z_r
eps_h
h
r_r
b_r
q_h
%gam_r
q_k
k
y_e
z_e
u
s_i
r_k
mu_r
lam_r

%Banks
R_tild
K       // 34 BANKS
B
npa_rat
j_b

%prices
pie       // 35 RETAILERS

%Aggregation
y         // 38 AGGREGATION & EQUILIBRIUM
c
n
i
%BCAs
elas_d
elas_b
elas_f

%Goods Market
eps_y
y_s
eps_q
r

j_r
eps_k
j_d
j_bb
j_c
x_d1
x_b1
x_d2
x_b2
;

%predetermined_variables K ;

varexo  e_l_i e_l_p e_z_e e_elas_f e_elas_d e_elas_b e_zi e_z_p e_z_i e_z_r e_f e_si e_y e_h e_d e_gam_d e_q e_k;


parameters  alph beta_p beta_r eps_z_p_bar eps_z_i_bar eps_z_r_bar eps_d_bar                                   // HOUSEHOLDS & ENTREPRENEURS
            beta_i s_i_bar eps_l_p_bar eps_l_i_bar h_bar eps_y_bar                        // HOUSEHOLDS 
            k_d k_b k_f k_p   kk_b   elas_d_bar   elas_b_bar     elas_f_bar          // BANKS 
            delt nu   theta_i  r_d_ss   rho_k eps_k_bar                          // BANKS (SS)
            z_e_bar i_p a_p a_i f_bar a_r phi_r 
            phi_p phi_y    eps_h_bar  k_e    k_dd k_bb k_c i_d i_b i_c  // POLICY
            pi_s rho_z_p rho_z_i rho_z_r  x_f                      // STEADY STATE x_d2 x_b2
            rho_l_p rho_l_i rho_z_e rho_d rho_b rho_q eps_q_bar rho_elas_d rho_elas_b  rho_gam_d
            rho_elas_f  rho_y rho_s rho_f  rho_h w1 w2 v1 v2 v3 v4 delt_b x
            gam_d_bar x_d1_bar x_d3 x_b1_bar  x_b3 rho_a// SHOCKS
            kk_v nu_v rho_w1 rho_w2 rho_v1 rho_v2 gamme alph_n zi_1 zi_2  k_i j;

% *********************			
% CALIBRATED PARAMETERS
% *********************
alph            = 0.25; %(According to KLEMS database)
alph_n          = 0.8;    %(As per Gerali et al)
a_p             = 0.6;
a_i             = 0.4;
a_r             = 0.4;
f_bar           = 0.95;
eps_z_p_bar     = 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         = 9.032478266;                             %27.0974348046; 
eps_l_p_bar     = 1;
eps_l_i_bar     = 1;
eps_d_bar       = 1;
gam_d_bar       = 1;                %0.00378;
%gam_d_bar       = 1;                %0.000582257;
%gam_d_bar       = 1;                %0.000582257;
eps_y_bar       = 6;
eps_h_bar       = 1;
z_e_bar         = 1;
s_i_bar         = 0.716972923;
h_bar           = 1;
                                                     %4.195162893;
j               = 0.394643418;                                                      %0.040145412;
k_d             = 10;
k_dd            = 10;
k_b             = 10;
k_bb            = 10;
k_c             = 10;
kk_b            = 10;
kk_v            = 10;
pi_s            = 1;
r_d_ss          = (1/beta_p)-1;
delt         = 0.069;
delt_b       = 0.1049;
nu           = 0.09;
nu_v         = 1;
phi_p        = 1.8;
phi_y        = 0.2;
k_p          = 50;
k_f          = 10;
k_i          = 10;
k_e          = 10;
i_p          = 0.5;
i_d          = 0.5;
i_b          = 0.5;
i_c          = 0.5;
x_d1_bar     = 0.290271699;
%x_d2         = 0.386061360;
x_d3         = 1.33;
x_b1_bar     = 0.000353661;
%x_b2         = 0.0002874124;                             %0.000435179;
x_b3         = 1.2305;
r_tild_bar   = 0.06;
rho_l_p      = 0.99;
rho_l_i      = 0.99;
rho_z_e      = 0.99;
rho_d        = 0.99;
rho_b        = 0.99;
rho_y        = 0.99;
rho_elas_d   = 0.95;
rho_elas_b   = 0.99;
rho_elas_f   = 0.98;
rho_z_p      = 0.99;
rho_z_i      = 0.99;
rho_z_r      = 0.99;
rho_f        = 0.99;
rho_s        = 0.99;
rho_h        = 0.99;
zi_bar       = 1;
rho_zi       = 0.99;
rho_g        = 0.85;
phi_r        = 0.75;
rho_w1       =  0.99;
rho_w2      =   0.99;
rho_v1      =   0.99;
rho_v2      =   0.99;
%rho_Lam     =   0.99;
gamme       =   1.921823798;
zi_1        =   0.094641026;
zi_2        =   0.0094641026;
%rho_gam_d   =   0.99;
rho_gam_d   =   0.99;
%rho_gam_d   =   0.95;
w1          =   15.34357868;
w2          =   7.67178934;
v1          =   1;
v2          =   0.95;
v3          =   0.976221160;
v4          =   1;
%x           =   1.2;
rho_q       =   0.99;
rho_a       =   0.99;
eps_q_bar   =   1;
eps_k_bar   =  -0.130322331;                                      %-0.130271271;
rho_k       = 0.99;
x           =  1.2;
x_f          = 0.761630233;
elas_d_bar      = -3.03030303;
elas_b_bar      =  5.338394701;                                   %-4.338394794;
elas_f_bar      = 4.195162893;   
%y_s    =1;
model;


%---------------------------------------------------------------

%---------------------------------------------------------------
%Patient HHd 1-12
%---------------------------------------------------------------
n_p=0.4;
n_i=0.4;
w_p=(eps_l_p)/((lam_p)*(n_p));

lam_p=(eps_z_p)*(1-a_p)*((c_p)-a_p*(c_p(-1)))^(-1);

n =(n_p)^(alph_n)*(n_i)^(1-alph_n);

(1-(eps_d)) + beta_p*(lam_p(+1))*(1+(r_d))/pie(+1) - (lam_p)=0;

j_d=gam_d*(1-(1/x_d3)-0.5*k_dd*(pie-pie(-1)^i_p*pi_s^(1-i_d)));

j_bb=gam_d*(1-(1/x_b3)-0.5*k_bb*(pie-pie(-1)^i_p*pi_s^(1-i_b)));

j_c=gam_d*(1-(1/x_f)-0.5*k_c*(pie-pie(-1)^i_p*pi_s^(1-i_c)));

j_r=y*(1-(1/x)-0.5*k_e*(pie-pie(-1)^i_p*pi_s^(1-i_p)));

t_p = j_r + j_d + j_bb + j_c;

(gam_d)*(x_d1)-(t_p + (1+(r_d(-1)))*(D(-1))*(gam_d(-1))^(-1)*pie^(-1) + (w_p*n_p)- c_p - (D)*(gam_d)^(-1) )=0;

%---------------------------------------------------------------
%Impatient hhd 13-17
%---------------------------------------------------------------
w_i-eps_l_i/((lam_i)*(n_i))=0;

lam_i=(1-a_i)*(eps_z_i)*((c_i)-a_i*(c_i(-1)))^(-1);

beta_i*theta_i*(1-(f_b)) = lam_i*pie(+1) - beta_i*(lam_i(+1))*(1+(r_b))*(f_b(+1))*pie(+1)^(-1) + beta_i*(lam_i(+1))*(f_b(+1))*((r_tild(+1)))*pie(+1)^(-1);

gam_d*(x_b1) = (w_i)*(n_i) + (b)*((gam_d))^(-1) + (f_b)*(b(-1))*(r_tild)/(gam_d(-1)*pie) - c_i - (1+(r_b(-1)))*(f_b)*(b(-1))/(gam_d(-1)*pie);

q_k*(1-0.5*k_i*(i*eps_q/i(-1)-1)^2 - k_i*(i*eps_q/i(-1)-1)*(i*eps_q/i(-1))) + beta_r*((lam_r(+1)/lam_r)*q_k(+1)*eps_q(+1)*k_i*((i*eps_q(+1)/i(-1))-1)*(i(+1)/i)^2)=1;

%---------------------------------------------------------------
%Firms 18-30
%---------------------------------------------------------------
u=1;


%-(q_k)*(lam_r) + beta_r*(lam_r(+1))*(alph*(y_e(+1))*(x(+1)*k)^(-1)+ (q_k(+1))*(1-delt)-zi_1*((u(+1))-1)+zi_2*((u(+1))-1)^2)=0;

-(q_k)*(lam_r) + beta_r*(lam_r(+1))*(r_k(+1) + (q_k(+1))*(1-delt)-zi_1*((u(+1))-1)+zi_2*((u(+1))-1)^2)=0;

%r_k = alph*(y_e)*((x)*u*k(-1))^(-1);

k(-1)=(r_k*x/(alph*n^(1-alph)*u^alph))^(1/(alph-1));

y_e = (z_e)*((k(-1))*(u))^alph*(n)^(1-alph); %4

k=(1-delt)*k(-1)+(1-0.5*k_i*(i*eps_q/i(-1)-1)^2)*i; %5

w_p = (1-alph)*alph_n*(y_e)*(n_p*(x))^(-1);    %8

w_i = (1-alph)*(1-alph_n)*(y_e)*((x)*n_i)^(-1);  %9

c - c_p - c_i = -(1+(r_r(-1)))*(b_r(-1))*(gam_d(-1))^(-1)*pie^(-1) - (w_p)*(n_p) - (w_i)*(n_i) - (q_h)*((h)-(h(-1))) - (q_k)*(k) - (k(-1))*(zi_1*((u)-1) + zi_2*((u)-1)^2) + (b_r)*(gam_d)^(-1) + (y_e)*(x)^(-1) + (q_k)*(k(-1))*(1-delt);

c_r = c - c_p - c_i;

lam_r = eps_z_r*(1-a_r)*((c_r)-a_r*(c_r(-1)))^(-1); %7

%lam_r*(alph*(y_e)*((x)*u*k(-1))^(-1) - (zi_1 + zi_2*(u-1)))=0;

lam_r*(r_k - (zi_1 + zi_2*(u-1)))=0;  %10

s_i = ((b_r)*(1+(r_r)))/((q_h(+1))*(h)*(pie(+1))); %11

%(lam_r) - (mu_r)*(1+(r_r)) - beta_r*(lam_r(+1))*(1+(r_r))=0;

(mu_r) = lam_r/(1+r_r) - beta_r*lam_r(+1)/pie(+1);

j*(eps_h)/(h) + beta_r*(lam_r(+1))*(q_h(+1)) - (lam_r)*(q_h) + (mu_r)*(s_i)*(q_h(+1))*(pie(+1))=0;




%-----------------------------------------------------------------
%Banks 31-37
%-----------------------------------------------------------------

B - b - b_r = 0;

B-D-K=0;

npa_rat = (1-(f_b))*(b)/(B);

(1+(r_b))*(f_b(+1)) = (1+(r_d)) + (f_b(+1))*(R_tild) + w1*kk_b*((K)/(w1*(b)+w2*(b_r)) - nu)*((K)/(w1*(b)+w2*(b_r)))^2 + v3*kk_v*((v1*(K(-1))+v2*(D))*(v3*(B)+v4*(npa_rat))^(-1)-nu_v) * ((v1*(K(-1))+v2*(D))*(v3*(B)+v4*(npa_rat))^(-1))^2;

%R_tild-((1+(r_b))*(f_b(+1))- (1+(r_d)))/f_b(+1)=0;

(1+(r_r)) = (1+(r_d)) + w2*kk_b*((K(-1))/(w1*(b)+w2*(b_r)) - nu)*((K)/(w1*(b)+w2*(b_r)))^2; %+ v3*kk_v*((v1*(K(-1))+v2*(D))*(v3*(B)+v4*(npa_rat))^(-1)-nu_v) * ((v1*(K(-1))+v2*(D))*(v3*(B)+v4*(npa_rat))^(-1))^2;

%x_d2=x_d1*x_d3;

%x_b2=x_b1*x_b3^(-1);

j_b = gam_d*(r_b)*(b)*(f_b) + gam_d*(r_r)*(b_r) - gam_d*(r_d)*(D) - gam_d*R_tild(-1)*f_b*b(-1)  - gam_d*x_d2 - gam_d*x_b2 ;  %- 0.5*kk_b*((K)/(w1*(b)+w2*(b_r)) - nu)^2*(K)

eps_k(-1)=(K*pie - (1-delt_b)*(K(-1)))/j_b(-1);


%-----------------------------------------------------------------
%BCAs 39-41
%-----------------------------------------------------------------

-1-elas_d*x_d3 + elas_d - k_d*((pie) - 1)*((pi_s)) + beta_r*((lam_r(+1))/(lam_p)) *  k_d*((pie(+1))  - 1) *((pie(+1))) * (gam_d(+1))/(gam_d) = 0;

1 + elas_b/x_b3 - elas_b - k_b*((pie) - 1)*((pi_s)) + beta_r* ((lam_r(+1))/(lam_p)) * k_b*((pie(+1))  - 1)*(pie(+1)) * (gam_d(+1))/(gam_d) = 0;

-1 - elas_f*x_f + elas_f - k_f*((pie) - 1)*((pi_s)) + beta_p* ((lam_p(+1))/(lam_p)) * k_f*((pie(+1))  - 1)*(pie(+1)) * (f_b*b)*(f_b(-1)*b(-1))^(-1) = 0;


%-----------------------------------------------------------------
%Monetary Policy 32
%-----------------------------------------------------------------

1+r = (1-phi_r)*(1+r_d_ss)+phi_r*(1+(r(-1)))+phi_p*(1-phi_r)*((pie)-pi_s)+phi_y*(1-phi_r)*((y_s)-(y_s(-1)))+((e_zi));

%log(r) = log(r_d_ss) + phi_p*log(pie/pi_s) + phi_y*log(y/y_s);
%-----------------------------------------------------------------
%Goods Market 33
%-----------------------------------------------------------------
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 34-44
%-----------------------------------------------------------------
%c = c_p + c_i + c_r;
y = gamme*(y_e);
h=1;
%u=1;
y = c + q_k*(k-(1-delt)*k(-1)) + delt_b*K(-1)/pie - (1-eps_k(-1))*(r_d(-1)*D(-1)/pie - r_b(-1)*b(-1)*f_b(-1)/pie - r_r(-1)*b_r(-1)/pie) - (1-f_b(-1))*b(-1)/pie + x_d1 + x_b1 + x_d2(-1)*eps_k(-1)/pie + x_b2(-1)*eps_k(-1)/pie-j_c-j_d - r_tild(-1)*f_b(-1)*b(-1)/pie + R_tild(-1)*f_b*b(-1)*eps_k(-1)/pie +(y-y_e)*x^(-1)-j_bb;
%y_s=y;
%pie=1;


%Exogenous Processes(46-64)
eps_z_p = (1-rho_z_p)*(eps_z_p_bar) + rho_z_p*(eps_z_p(-1)) + e_z_p;
eps_l_p = (1-rho_l_p)*eps_l_p_bar + rho_l_p*eps_l_p(-1) + e_l_p;
eps_d   = (1-rho_d)*(eps_d_bar) + rho_d*eps_d(-1) + e_d;                        %Eq 47
gam_d   = (1-rho_gam_d)*(gam_d_bar) + rho_gam_d*(gam_d(-1)) + e_gam_d;
%gam_d   = (1-rho_gam_d)*(gam_d_bar) + rho_gam_d*(gam_d(-1)) + e_gam_d;
z_e     = (1-rho_z_e)*z_e_bar + rho_z_e*z_e(-1) + e_z_e;
%gam_d   = (1-rho_gam_d)*(gam_d_bar) + rho_gam_d*(gam_d(-1)) + e_gam_d;
eps_z_i = (1-rho_z_i)*(eps_z_i_bar) + rho_z_i*(eps_z_i(-1)) + e_z_i;
eps_l_i = (1-rho_l_i)*(eps_l_i_bar) + rho_l_i*(eps_l_i(-1)) + e_l_i;
eps_z_r = (1-rho_z_r)*(eps_z_r_bar) + rho_z_r*(eps_z_r(-1)) + e_z_r;
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;
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;
eps_q   = (1-rho_q)*eps_q_bar + rho_q* eps_q(-1) + e_q;
eps_k   = (1-rho_k)*eps_k_bar + rho_k* eps_k(-1) + e_k;
end; %model

initval;
%x=1.2;
h=1;
u=1;
z_e     =  z_e_bar;
pie       = pi_s;
f_b       = f_bar;
gam_d   =  gam_d_bar;  
gam_d   =  gam_d_bar;                           %0.00378;
gam_d   =  gam_d_bar;                            %0.000582257;
eps_l_p  = eps_l_p_bar;
eps_l_i  = eps_l_i_bar;
eps_z_p  = eps_z_p_bar;
eps_z_i  = eps_z_i_bar;
eps_z_r  = eps_z_r_bar;
eps_d    = eps_d_bar;
eps_k    = eps_k_bar;
n_p     =   0.4;
n_i     =   0.4;
n       =   0.4;
q_k     =   1;
r_tild  =   0.06;
r_k     =   0.094641026;
r_b     =   0.1087014;
r_d     =   r_d_ss; %0.00985340655;
r_r     =   0.00985340655;
x_d1    =   x_d1_bar;
x_b1    =   x_b1_bar;
R_tild    = 0.045697814;
k       =   1.145422625;
y_e     =   0.520339066;
w_p     =   0.650423833;                         %0.216807944;
w_i     =   0.162605958;                                      %0.054201986;
pie     =   pi_s;
lam_p   =   3.843647596;                                     %11.53094279;
lam_i   =   15.37459039;                                                 %46.12377118;
c_p     =   0.260169533;                                                     %0.086723178;
c_i     =   0.065042383;                                                     %0.021680794;
j_r     =   0.166666667;
j_d     =   0.248120301;
j_bb     =   0.187322227;
j_c     =   -0.312973089;
t_p     =   0.28913611;
x_d2         = 0.386061360;
x_b2         = 0.0002874124; 
i       =   0.079034161;
c       =   0.349764506;
c_r     =   0.02455259;                                              %0.241360534;
lam_r   =   1/c_r; %40.72890116;                                                  %4.143179429;
mu_r    =   0.620819888;                                                             %0.063153389;

r         =   r_d_ss;
D         =   0.11524846;
b         =   0.094722; 
b_r       =   0.4888889;
B         =   0.58361090;
q_h       = 0.688598;
s_i       = s_i_bar;
elas_f    = elas_f_bar;
K         = 0.46836244;
eps_h     = 1;
eps_l_p   = 1;
eps_d     = 1;
eps_z_i   = 1;
f_b       = 0.95;
eps_l_i   = 1;
elas_d    = elas_d_bar;
elas_b    = elas_b_bar;
eps_y     =  6;
j_b       = -0.376997707;                            %-0.377145473;
%eps_k     = eps_k_bar;
npa_rat   = 0.008115167;
y_s       = 1;
eps_d     = 1;
eps_h     = 1;
eps_q     = eps_q_bar;
y       =   1;
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_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;

%resid;
steady;
check;
model_diagnostics;
%identification(ar=10);



%estimated_params;
%eps_d_bar, 0.8,beta_pdf, 0.43,0.12;
%Lam, 0.2,beta_pdf,0.4,0.12;
%end;


%varobs d B c f_b w_i pie r_ib r_b r_d K;
%stoch_simul(order=1,irf=0,nocorr) pie r_ib r_d;
%stoch_simul (hp_filter=1600, order=1, irf=18, qz_zero_threshold=1e-30);
%stoch_simul (hp_filter=1600, order=1, irf_plot_threshold=0, qz_zero_threshold=1e-14) pie R_b r_b r_r r_ib r_d q_h b_r x w_p w_i c_r c j_b K b npa_rat y_e y_s d B;
stoch_simul (hp_filter=1600, order=1, irf_plot_threshold=0, qz_zero_threshold=1e-30) pie r_d;
%pie R_b r_b r_r q_h b_r b c j_b K y_s d B;

%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);
%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);








