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 
t_i
r_b
r_tild
lam_i

%Entrepreneur
c_r
eps_z_r
eps_h
h
W_p
W_i
r_r
b_r
q_h
gam_r
q_k
k
y_e
z_e
u
t_r
s_i
r_k
mu_r
lam_r

%Banks
R_tild
K       // 34 BANKS
B
npa_rat
j_b

%prices
pie       // 35 RETAILERS
%pie_d
%pie_b
%pie_f

%Aggregation
y         // 38 AGGREGATION & EQUILIBRIUM
c
n
i
%BCAs
elas_d
elas_b
elas_f

%Goods Market
eps_y
y_s
eps_q
;

predetermined_variables K ;

varexo  e_l_i e_l_p e_z_e e_elas_d e_elas_b e_elas_f 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_gam_b e_gam_r e_q;


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 elas_d_bar elas_b_bar elas_f_bar kk_b                    // BANKS 
            delt nu   theta_i  r_d_ss                             // BANKS (SS)
            z_e_bar i_p a_p a_i f_bar a_r phi_r
            phi_p phi_y    eps_h_bar                                       // POLICY
            pi_s rho_z_p rho_z_i rho_z_r eta_p eta_i                            // STEADY STATE
            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_gam_b rho_gam_r
            rho_elas_f  rho_y rho_s rho_f  rho_h w1 w2 v1 v2 v3 v4 delt_b
            gam_d_bar gam_b_bar gam_r_bar Lam x_d1 x_d2 x_d3 x_b1 x_b2 x_b3 // SHOCKS
            kk_v nu_v rho_w1 rho_w2 rho_v1 rho_v2 gamme rho_Lam D_bar alph_n zi_1 zi_2 j x k_i ;

% *********************			
% CALIBRATED PARAMETERS
% *********************
alph            = 0.462; %(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.99024274;                                                     % discount factor patient households
beta_i          = 0.975;   
beta_r          = 0.975; 
theta_i         = 0.63560127;   
Lam             = 1/3.28;                                                % discount factor impatient households     
eps_l_p_bar     = 1;
eps_l_i_bar     = 1;
eps_d_bar       = 1;
gam_d_bar       = 1;                %0.00378;
gam_b_bar       = 1;                %0.000582257;
gam_r_bar       = 1;                %0.000582257;
eps_y_bar       = 6;
eps_h_bar       = 1;
z_e_bar         = 1;
s_i_bar         = 0.7169729;
h_bar           = 1;
elas_d_bar      = -3.03030303;
elas_b_bar      = -4.33839479;
elas_f_bar      = 11.62198787;
j               = -1.5239272;
k_d             = 10;
k_b             = 6;
kk_b            = 10;
kk_v            = 10;
pi_s            = 1;
r_d_ss          = (1/beta_p)-1;
%r_ib_ss         = r_d_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.069;
delt_b       = 0.01996552;
nu           = 0.09;
nu_v         = 1;
phi_p        = 1.8;
phi_y        = 0.2;
k_p          = 50;
k_f          = 10;
k_i          = 10;
i_p          = 0.5;
x_d1     = 0.4756306;
x_d2     = 1/1.33;
x_d3     = 1/1.580806;
x_b1     = 0.3625612;
x_b2     = 1/1.2305;
x_b3     = 1/2.241491;
r_tild_bar   = 0.05;
%y_s         = 1;
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.99;
rho_elas_b   = 0.99;
rho_elas_f   = 0.99;
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;
D_bar       =   0.11524846;
gamme       =   0.74927686;
zi_1        =   0.094641026;
zi_2        =   0.00094641026;
rho_gam_d   =   0.99;
rho_gam_b   =   0.99;
rho_gam_r   =   0.99;
w1          =   1;
w2          =   10.45085113;
v1          =   1;
v2          =   0.95;
v3          =   0.97622116;
v4          =   1;
eta_p       =   -3.26303946;
eta_i       =   -0.23663873;
x           =   1.2;
rho_q       =   0.99;
eps_q_bar   =   1;
model;


%---------------------------------------------------------------

%---------------------------------------------------------------
%Patient HHd 1-4
%---------------------------------------------------------------
(lam_p)=(eps_z_p)*(1-a_p)*((c_p)-a_p*(c_p(-1)))^(-1);

(eps_l_p)=(lam_p)*(w_p)*(n_p);

(1-(eps_d)) + beta_p*(lam_p(+1))*(1+(r_d)) - (lam_p)*(1+max(2*Lam*((1)*(gam_d)^(-1) - (1)*(gam_d)^(-1)),0))=0;

t_p = (c_p) + (D)*(gam_d)^(-1) + max(Lam*((D)*(gam_d)^(-1)-(D_bar)*(gam_d)^(-1))^2,0) + (gam_d)*(x_d1) - (1+(r_d(-1)))*(D(-1))*(gam_d(-1))^(-1) - (w_p)*(n_p);

%---------------------------------------------------------------
%Impatient hhd 5-9
%---------------------------------------------------------------

(lam_i)=(1-a_i)*(eps_z_i)*((c_i)-a_i*(c_i(-1)))^(-1);

(eps_l_i)=(lam_i)*(w_i)*(n_i);

beta_i*theta_i*(1-(f_b(+1))) + beta_i*(lam_i(+1))*(1+(r_b))*(f_b(+1)) - beta_i*(lam_i(+1))*(f_b(+1))*((r_tild(+1))) = (lam_i);

(t_i) = (c_i) + (1+(r_b(-1)))*(f_b)*(b(-1))*(gam_b(-1))^(-1) - (w_i)*(n_i) - (b)*((gam_b))^(-1)- (f_b)*(b(-1))*(gam_b(-1))^(-1)*(r_tild) + (gam_b)*(x_b1);

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 10-24
%---------------------------------------------------------------

(lam_r) = eps_z_r*(1-a_r)*((c_r)-a_r*(c_r(-1)))^(-1);

n -(n_p)^(alph_n)*(n_i)^(1-alph_n)=0;

-(q_k)*(lam_r) + beta_r*(lam_r(+1))*(alph*(y_e(+1))*(x(+1)*k)^(-1)+ (q_k)*(1-delt)-zi_1*((u(+1))-1)-zi_2*((u(+1))-1)^2)=0;

k=(1-delt)*k(-1)+(1-0.5*k_i*(i*eps_q/i(-1)-1)^2)*i;

y_e = (z_e)*((k(-1))*(u))^alph*(n)^(1-alph);

(lam_r)*((1-alph)*alph_n*(y_e)*(n_p*(x))^(-1) - (W_p))=0;

(lam_r)*((1-alph)*(1-alph_n)*(y_e)*((x)*n_i)^(-1) - (W_i))=0;

(r_k) = zi_1 + zi_2*((u)-1);

(r_k) = alph*(y_e)*((x)*u*k(-1))^(-1);

(lam_r)*(alph*(y_e)*((x)*u*k(-1))^(-1) - (zi_1 + zi_2*(u-1)))=0;

(lam_r) -(mu_r)*(1+(r_r)) + beta_r*(lam_r(+1))*(1+(r_r))=0;

s_i = ((b_r)*(1+(r_r)))/((q_h(+1))*(h)*(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;

(t_r) = (c_r) + (1+(r_r(-1)))*(b_r(-1))*(gam_r(-1))^(-1) + (W_p)*(n_p) + (W_i)*(n_i) + (q_h)*((h)-(h(-1))) + (q_k)*(k) + (k)*(zi_1*((u)-1) + zi_2*((u)-1)^2)- (b_r)*(gam_r)^(-1) - (y_e)*(x)^(-1) - (q_k)*(k(-1))*(1-delt);

y = gamme*(y_e);

%-----------------------------------------------------------------
%Banks 25-30
%-----------------------------------------------------------------

B = b+b_r;

K = B-D;

gam_b*(1+(r_b(-1)))*(f_b) = gam_d*(1+(r_d(-1))) + (f_b)*(R_tild)*(gam_b) - 0.5*kk_b*((K)/(w1*(b)+w2*(b_r)) - nu)*((K)/(w1*(b)+w2*(b_r)))^2 - 0.5*kk_v*((v1*(K)+v2*(D))*(v3*(B)+v4*(npa_rat))^(-1)-nu_v) * ((v1*(K)+v2*(D))*(v3*(B)+v4*(npa_rat))^(-1))^2;

gam_r*(1+(r_r(-1))) = gam_d*(1+(r_d(-1))) - 0.5*kk_b*((K)/(w1*(b)+w2*(b_r)) - nu)*((K)/(w1*(b)+w2*(b_r)))^2 - 0.5*kk_v*((v1*(K)+v2*(D))*(v3*(B)+v4*(npa_rat))^(-1)-nu_v) * ((v1*(K)+v2*(D))*(v3*(B)+v4*(npa_rat))^(-1))^2;

(j_b) = gam_b*(r_b)*(b)*(f_b) + gam_r*(r_r)*(b_r) - gam_d*(r_d)*(D) -gam_b*R_tild*f_b*b - 0.5*kk_b*(K/(w1*(b)+w2*(b_r)) - nu)^2*((K)/(w1*(b)+w2*(b_r))) - 0.5*kk_v*((v1*(K)+v2*(D))*(v3*(B)+v4*(npa_rat))^(-1)-nu_v) ;

K = (1-delt_b)*(K(-1))+ (j_b);

%-----------------------------------------------------------------
%BCAs 31-34
%-----------------------------------------------------------------
(npa_rat) = (1-(f_b))*(b)/(B);

-1-(elas_d)/(x_d2)+ (elas_d) - k_d*((pie) - 1)*((pi_s)) + beta_p*((lam_p(+1))/(lam_p)) *  k_d*((pie(+1))  - 1) *((pie(+1))) * (gam_d(+1))/(gam_d) = 0;

-1-(elas_b)/(x_b2)+ (elas_b) - k_b*((pie) - 1)*((pi_s)) + beta_p* ((lam_p(+1))/(lam_p)) * k_b*((pie(+1))  - 1)*(pie(+1)) * (gam_b(+1))/(gam_b) = 0;

-1-(elas_f)*(R_tild)/(r_tild)+ (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 35
%-----------------------------------------------------------------

1+(r_d)=(1-phi_r)*(1+r_d_ss)+phi_r*(1+(r_d(-1)))+phi_p*(1-phi_r)*((pie)-pi_s)+phi_y*(1-phi_r)*((y_s)-(y_s(-1)))+((e_zi));


%-----------------------------------------------------------------
%Goods Market 36
%-----------------------------------------------------------------
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;

%-----------------------------------------------------------------
%Goods Market 37-38
%-----------------------------------------------------------------
W_p = eta_p/(eta_p-1)*w_p;
W_i = eta_i/(eta_i-1)*w_i;
%-----------------------------------------------------------------
%%Aggregation 39-44
%-----------------------------------------------------------------
(c) = (1/3)*(c_p) + (1/3)*(c_i) + (1/3)*(c_r);
(y)= (c) + (i);
(y_s)=(y);
%(h)=1;
%(u)=1;
%pie=1;
%(pie_d)=pie;
%(pie_b)=pie;
%(pie_f)=pie;

%Exogenous Processes(45-62)
(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_b)   = (1-rho_gam_b)*(gam_b_bar) + rho_gam_b*(gam_b(-1)) + (e_gam_b);
(gam_r)   = (1-rho_gam_r)*(gam_r_bar) + rho_gam_r*(gam_r(-1)) + (e_gam_r);
(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_b   = (1-rho_b)*eps_b_bar + rho_b*eps_b(-1) + e_b;
(eps_z_r) = (1-rho_z_r)*(eps_z_r_bar) + rho_z_r*(eps_z_r(-1)) + (e_z_r);
(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;
eps_q   = (1-rho_q)*eps_q_bar + rho_q* eps_q(-1) + e_q;
end; %model

initval;
gam_d    = gam_d_bar;                           %0.00378;
gam_b   =  gam_b_bar;                            %0.000582257;
gam_r   =  gam_r_bar;                           %0.000582257;
eps_l_p  = 1;
eps_l_i  = 1;
eps_z_p  = 1;
eps_z_i  = 1;
eps_z_r  = 1;
eps_d    = 1;

n_p     =   0.4;
n_i     =   0.4;
n       =   0.4;
pie     =   pi_s;
%pie_d   =   1;
%pie_b   =   1;
%pie_f   =   1;
u       =    1;
h       =    1;
z_e     =   z_e_bar;
k       =   5.42923914;
i       =   0.374617501;
y_e     =   1.33462016;
y       =   1;
c_p     =   0.625382499;
c_i     =   0.625382499;
c_r     =   0.625382499;
c       =   0.625382499;
lam_p   =   1.59902140;
lam_i   =   1.59902140;
lam_r   =   1.59902140;
w_p     =   1.56345625;
w_i     =   1.56345625;
W_p     =   1.19670941;
W_i     =   0.29917735;
mu_r    =   3.142465193;
r_d       =   r_d_ss;
r_r       =   0.00985340655;
D         =   D_bar;
b         =   0.094722; 
b_r       =   0.4888889;
B         =   0.58361090;
t_p       = 0.47449501;
t_i       = 0.36310740;
t_r       = 0.49098846;
q_h       = 0.688598;
s_i       = s_i_bar;
q_k       = 1;
h         = 1;
r_b       = 0.1087014;
R_tild    = 0.04569781;
r_tild    = 0.05;  
K         = 0.46836244;
pie       = pi_s;
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;
elas_f    = elas_f_bar;
eps_y     =  6;
j_b       = 0.0093511;
npa_rat   = 0.00811517;
y_s       = y;
z_e       = 1;
eps_d     = 1;
r_k       = zi_1;
eps_h     = 1;
eps_q     = eps_q_bar;
f_b       = f_bar;
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;

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);








