var 
%Patient HHd's
c_p   
eps_z_p  
n_p       // 2  PATIENT   HHs
eps_l_p
D         // 3  PATIENT   HHs
eps_d
r_d
w_p       // 4  PATIENT   HHs
t_p       //taxes
g         // govt exp
lam_p

%Impatient HHd's
c_i       // 9  IMPATIENT HHs
eps_z_i
n_i
eps_l_i
f_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
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
c_b
n_b
t_b
z_b
%prices
pie       // 35 RETAILERS

%Aggregation
y         // 38 AGGREGATION & EQUILIBRIUM
c
n
i
%BCAs

%Goods Market
eps_y
y_s
eps_q
r
j_r
w_b

;

predetermined_variables K g;

varexo  e_l_i e_l_p e_z_e e_zi e_z_p e_z_i e_z_r e_si e_y e_h e_d e_q e_z;


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          // 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 A rho_z z_b_bar
            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                 // 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_y rho_s rho_h w1 w2 v1 v2 v3 v4 delt_b 
            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         = 0.38436476;                             %27.0974348046; 
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;
z_b_bar         = 1;
s_i_bar         = 0.716972923;
h_bar           = 1;
A               = 2.375;                                                   %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.376160699;
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;
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_z        = 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;
gamme       =   1.921823798;
zi_1        =   0.094641026;
zi_2        =   0.0094641026;

w1          =   15.34357868;
w2          =   7.67178934;
v1          =   1;
v2          =   0.95;
v3          =   0.976221160;
v4          =   1;
%x           =   1.2;
rho_q       =   0.99;
rho_z       =   0.99;
rho_a       =   0.99;
eps_q_bar   =   1;
rho_k       = 0.99;
x           =  1.2;
%y_s    =1;



model;

%---------------------------------------------------------------
%Patient HHd 1-5
%---------------------------------------------------------------
lam_p=(eps_l_p)/((w_p)*(n_p));

lam_p=(eps_z_p)*(1-a_p)*((c_p)-a_p*(c_p(-1)))^(-1);

j_r=y*(1-(1/x));  

beta_p*(lam_p(+1))*(1+(r_d))*((pie(+1))^(-1)) - (lam_p)=0;

t_p =  (1+(r_d(-1)))*(D(-1))*pie^(-1) + (w_p*n_p) + j_r - c_p - D ;

%---------------------------------------------------------------
%Impatient hhd 6-11
%---------------------------------------------------------------
n_b=0.4;

f_b = z_e*z_b*A*n_b;

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)) + beta_i*(lam_i(+1))*(1+(r_b))*(f_b)*pie(+1)^(-1) - beta_i*(lam_i(+1))*(f_b)*((r_tild))*pie(+1)^(-1) = lam_i;

c_i - (w_i)*(n_i) - (f_b(-1))*(b(-1))*(r_tild(-1))*(pie)^(-1) + (1+(r_b(-1)))*(f_b(-1))*(b(-1))*(pie)^(-1)-b=0;

%---------------------------------------------------------------
%Firms 12-30
%---------------------------------------------------------------
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;
u=1;
-(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;

n_p=0.4;

n_i=0.4;

n =(n_p)^(alph_n)*(n_i)^(1-alph_n);

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

h=1;

c_r = -(1+(r_r(-1)))*(b_r(-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) + (y_e)*(x)^(-1) + (q_k)*(k(-1))*(1-delt);

(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/u - (zi_1 + zi_2*(u-1)))=0;  %10

s_i = ((b_r)*(1+(r_r)))/((q_h(+1))*(h)*(pie(+1))); %11

(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-39
%-----------------------------------------------------------------

B = b + b_r;

K=B-D;

npa_rat = (1-(f_b))*(b)/(B);

R_tild=((1+(r_b))*(f_b) - (1+(r_d)))/ (f_b) + w1*kk_b*((K(-1))/(w1*(b)+w2*(b_r)) - nu)*((K(-1))/(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;

w_b = (1+r_b-R_tild)*b*f_b/n_b;

c_b = R_tild*f_b*b - r_tild*f_b*b + w_b*n_b;

(1+(r_r)) = (1+(r_d)) + w2*kk_b*((K(-1))/(w1*(b)+w2*(b_r)) - nu)*((K(-1))/(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;

j_b = (r_b)*(b)*(f_b) + (r_r)*(b_r) - (r_d)*(D) - R_tild*f_b*b - w_b*n_b - 0.5*kk_b*((K)/(w1*(b)+w2*(b_r)) - nu)^2*(K);

K*pie = (1-delt_b)*(K(-1)) + j_b(-1) + g;

%-----------------------------------------------------------------
%Monetary Policy 40
%-----------------------------------------------------------------

1+r_d = (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 41
%-----------------------------------------------------------------
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 42-45
%-----------------------------------------------------------------
c = c_p + c_i + c_r + c_b;
g=t_p;
y = gamme*(y_e);

y = c + q_k*(k-(1-delt)*k(-1)) + delt_b*K(-1)/pie + (y-y_e)/x  -  (1-f_b)*b(-1)/pie - w_b*n_b + w_b(-1)*n_b(-1) - (k(-1))*(zi_1*((u)-1) + zi_2*((u)-1)^2);
%y_s=y;

 

%Exogenous Processes(46-57)
eps_l_i = (1-rho_l_i)*(eps_l_i_bar) + rho_l_i*(eps_l_i(-1)) + e_l_i;
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
z_e     = (1-rho_z_e)*z_e_bar + rho_z_e*z_e(-1) + e_z_e;
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_y   = (1-rho_y)*(eps_y_bar) + rho_y*(eps_y(-1)) + e_y;
z_b     = (1-rho_z)*z_b_bar + rho_z*z_b(-1) + e_z;
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;
%x=1.2;
y=1;
pie=1;
z_e     =   z_e_bar;
z_b     =   z_b_bar;
eps_q    = eps_q_bar;
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_h    = 1;
eps_y    = 6;

q_k      = 1;
h        = 1;
u        = 1;
r_k     =  0.094641026;
n_p     =   0.4;
n_i     =   0.4;
n_b     =   0.4;
n       =   0.4;
k       =   1.145422625;
y_e     =   0.520339066;
i       =   delt*k;
w_p     =    0.650423833;                         %0.216807944;
w_i     =   0.162605958;            
q_h     =   0.688598;
r_d     =   r_d_ss; %0.00985340655;
r_r     =   0.00985340655;
r_b     =   0.1087014;
b       =   0.094722;
b_r     =   0.4888889;
B       =   0.58361090;
D       =   0.11524846;
K         = 0.46836244;  
npa_rat   = 0.008115167;

c_r     =   0.02455259;     
lam_r   =   40.72890116;                                                  %4.143179429;
s_i       = s_i_bar;
mu_r    =   0.620819888;                                                             %0.063153389;
j_r     =   0.16666667;
lam_p   =   3.843647596;    
c_p     =   0.260169533;      
t_p     =   0.167802257;
g       =   0.167802257;
n_b     =   0.4;
f_b       = f_bar;

lam_i   =   15.37459039;                                                 %46.12377118;                                             %0.086723178;
c_i     =   0.065042383;     
r_tild  =   0.056069821;

R_tild    = 0.045697814;
w_b      =  0.010280397;
c_b     =   0.003178825;                                  
c       =   0.352943331;
j_b       = 0.008377286;                           %0.054201986;
r         =   r_d_ss;
y_s       = y;                            %11.53094279;
                                                %0.021680794;
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_z;
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);








