//%------------------------------------------------------------
//% Declare endogenous and exogenous variables
//%------------------------------------------------------------

var h_p n_cp n_hp c_p h_i n_ci n_hi c_i S B w_cp w_ci w_hp w_hi k_c b_i1 k_h l c_e X q_h b_e1 r_nl pai q_l R r_s Y GDP ih i_c i_h Z_c Z_h Z_g phi psi epsilon_CP epsilon_pai epsilon_MP THETA;    //%All of them are AR(1) 
varexo u_c u_h u_phi u_psi u_CP u_pai u_MP u_g;

//%-----------------------------------------------------------------------
//% Declare model parameters
//%------------------------------------------------------------------------

parameters PHI_SS BETA_P BETA_I DELTA_H TAO TAO_H U_C U_H V_H DELTA_KC DELTA_KH X_SS GAMMA OMEGA DELTA_F LAMDA ALPHA TREND_AC TREND_AH XI ETA_P ETA_I C ETA_IBANK EPSILON OMEGA_CALVO RHO_R PHI_PAI PHI_XGAP Z_PAI Z_X RHO_AC RHO_AH RHO_PHI RHO_PSI RHO_CP RHO_B RHO_PAI RHO_MP RHO_G STDERR_AC STDERR_AH STDERR_PHI STDERR_PSI STDERR_CP STDERR_B STDERR_PAI STDERR_MP STDERR_G;

//%TREND_QH TREND_CP TREND_HP TREND_S TREND_CI TREND_HI TREND_B_I1 TREND_B_I2 TREND_QL TREND_L TREND_B_E1 TREND_B_E2 TREND_F TREND_NPROFIT TREND_KC TREND_KH TREND_Y QH_IH_Y C_Y HP_IH HI_IH CP_Y CI_Y CE_Y S_Y B_I1_Y B_I2_Y R_NL_SS KC_Y QH_IH_KH KH_Y QL_L_Y B_E1_Y B_E2_Y S_B F_B PROFIT_NBANK_F G_Y Y_GDP

//% Calibrated parameters
PHI_SS       =0.10;
BETA_P       =0.986;
BETA_I       =0.97;
DELTA_H      =0.013;
TAO          =0.18;
TAO_H        =0.18;
U_C          =0.35;
U_H          =0.1;
V_H          =0.1;
DELTA_KC     =0.03;
DELTA_KH     =0.04;
X_SS         =1.15;
GAMMA        =0.97;
OMEGA        =0.09;
DELTA_F      =0.1049;
LAMDA        =1;

//% Estimated parameters (mean)

ALPHA        =0.65;
TREND_AC     =0.005;
TREND_AH     =0.005;
XI           =1;
ETA_P        =0.5;
ETA_I        =0.5;
C            =100;
ETA_IBANK    =359.9;
EPSILON      =0.5;
OMEGA_CALVO  =0.667;
RHO_R        =0.75;
PHI_PAI      =1.5;
PHI_XGAP     =0.002;
Z_PAI        =-0.15;
Z_X          =-0.15;


//% Estimated shocks parameters (mean)
RHO_AC       =0.9;
RHO_AH       =0.9;
RHO_G        =0.9;
RHO_PHI      =0.9;
RHO_PSI      =0.9;
RHO_IB       =0.9;
RHO_B        =0.9;
RHO_CP       =0.9;
RHO_PAI      =0.9;
RHO_MP       =0.9;
STDERR_AC    =0.001;
STDERR_AH    =0.001;
STDERR_G     =0.001;
STDERR_PHI   =0.001;
STDERR_PSI   =0.001;
STDERR_IB    =0.001;
STDERR_B     =0.001;
STDERR_CP =0.001;
STDERR_PAI   =0.001;
STDERR_MP    =0.001;






//%------------------------------------------------------------
//% Model equations
//%------------------------------------------------------------



model ; 

# TREND_QL        =TREND_AC;
# TREND_QH        =(1-U_H-V_H)*TREND_AH+(U_H+V_H)*TREND_AC-V_H*TREND_QL;
# TREND_CP        =TREND_AC;
# TREND_HP        =(1-U_H-V_H)*TREND_AC-(1-U_H-V_H)*TREND_AH+V_H*TREND_QL;
# TREND_S         =TREND_AC;
# TREND_CI        =TREND_AC;
# TREND_HI        =TREND_HP;
# TREND_B_I1      =TREND_AC;
# TREND_B_I2      =TREND_AC;
# TREND_L         =TREND_AC-TREND_QL;
# TREND_B_E1      =TREND_AC;
# TREND_B_E2      =TREND_AC;
# TREND_F         =TREND_AC;
# TREND_NPROFIT   =TREND_AC;
# TREND_KC        =TREND_AC;
# TREND_KH        =TREND_AC;
# TREND_Y         =TREND_AC;
# q_h_SS          =1;

# THETA_SS=0;
# QH_IH_Y=0.03;
# R_S_SS=BETA_P^(-1)-1;
# R_NL_SS=R_S_SS;

# HI_IH=((1-ALPHA)*(1-TAO)*(1-U_C)/(X_SS*QH_IH_Y)+(1-ALPHA)*(1-TAO_H)*(1-U_H-V_H))/((1-BETA_I*(1+TREND_QH)*(1-DELTA_H-THETA_SS)-(1+TREND_QH)*THETA_SS/(1+R_NL_SS))/PHI_SS+(1-(1-DELTA_H)/(1+TREND_HI))+(1-(1+R_NL_SS)/(1+TREND_B_I1))*THETA_SS/(1+R_NL_SS)*(1+TREND_QH));
# HP_IH=(1+TREND_HP)/(TREND_HP+DELTA_H)-HI_IH;
# CP_Y=(1-BETA_P*(1+TREND_QH)*(1-DELTA_H))*HP_IH*QH_IH_Y/PHI_SS;
# CI_Y=(1-BETA_I*(1+TREND_QH)*(1-DELTA_H))*HI_IH*QH_IH_Y/PHI_SS;
# B_I1_Y=0.5;
# KC_Y=(1-TAO)*U_C*(1+TREND_Y)/((1-THETA_SS/(1+R_NL_SS))/GAMMA-(1-DELTA_KC)+THETA_SS)/X_SS;
# QH_IH_KH=((1-THETA_SS/(1+R_NL_SS))/GAMMA-(1-DELTA_KH)+THETA_SS)/((1-TAO_H)*U_H*(1+TREND_Y));
# KH_Y=QH_IH_Y/QH_IH_KH;
# QL_L_Y=(1-TAO_H)*V_H*(1+TREND_Y)/((1-(1+TREND_QL)*THETA_SS/(1+R_NL_SS))/GAMMA-(1+TREND_QL)*(1-THETA_SS))*QH_IH_Y;
# B_E1_Y=0.5;
# IC_Y=(1-(1-DELTA_KC)/(1+TREND_KC))*KC_Y;
# IH_Y=(1-(1-DELTA_KH)/(1+TREND_KH))*KH_Y;
# CE_Y=U_C*(1-TAO)/X_SS+(U_H+V_H)*(1-TAO_H)*QH_IH_Y+(1-(1+R_NL_SS)/(1+TREND_B_E1))*B_E1_Y-IC_Y-IH_Y-(1-1/(1+TREND_QL))*QL_L_Y;
# C_Y=CP_Y+CI_Y+CE_Y;
# Y_GDP=0.95; 
# B_Y=B_I1_Y+B_E1_Y;
# S_Y=B_Y;
# G_Y=0.18;

//% 1
PHI_SS*(CP_Y)/(HP_IH*QH_IH_Y)*(h_p-phi)=c_p-q_h-BETA_P*(1+TREND_QH)*(1-DELTA_H)*(c_p(+1)-q_h(+1));
//% 2
n_cp=((ETA_P-XI)*(1+(1-TAO)*(1-U_C)/((1-TAO_H)*(1-U_H-V_H ))/(QH_IH_Y*X_SS))^(-1)+XI)^(-1)*(w_cp-c_p-((ETA_P-XI)*(1+(1-TAO_H)*(1-U_H-V_H )/((1-TAO)*(1-U_C))*QH_IH_Y*X_SS)^(-1))*n_hp);
//% 3
n_hp=((ETA_P-XI)*(1+(1-TAO)*(1-U_C)/((1-TAO_H)*(1-U_H-V_H ))/(QH_IH_Y*X_SS))^(-1)+XI)^(-1)*(w_hp-c_p-((ETA_P-XI)*(1+(1-TAO_H)*(1-U_H-V_H )/((1-TAO)*(1-U_C))*QH_IH_Y*X_SS)^(-1))*n_cp);
//% 4
c_p=c_p(+1)-BETA_P*r_s;
//% 5
ALPHA*(1-TAO)*(1-U_C)/X_SS*(w_cp+n_cp)+ALPHA*(1-TAO_H)*(1-U_H-V_H)*QH_IH_Y*(w_hp+n_hp)=CP_Y*c_p+HP_IH*QH_IH_Y*((h_p-(1-DELTA_H)/(1+TREND_HP)*h_p(-1))+DELTA_H*q_h);


//% Impatient households
//% 6
PHI_SS*(CI_Y)/(HI_IH*QH_IH_Y)*(h_i-phi)=c_i-q_h-BETA_I*(1+TREND_QH)*(1-DELTA_H-THETA_SS)*(c_i(+1)-q_h(+1))-BETA_I*(1+TREND_QH)*THETA_SS*THETA+(1+TREND_QH)*THETA_SS/(1+R_NL_SS)*(q_h(+1)+THETA-1/(1+R_NL_SS)*r_nl-c_i);
//% 7
n_ci=((ETA_I-XI)*(1+(1-TAO)*(1-U_C)/((1-TAO_H)*(1-U_H-V_H ))/(QH_IH_Y*X_SS))^(-1)+XI)^(-1)*(w_ci-c_i-((ETA_I-XI)*(1+(1-TAO_H)*(1-U_H-V_H )/((1-TAO)*(1-U_C))*QH_IH_Y*X_SS)^(-1))*n_hi);
//% 8
n_hi=((ETA_I-XI)*(1+(1-TAO)*(1-U_C)/((1-TAO_H)*(1-U_H-V_H ))/(QH_IH_Y*X_SS))^(-1)+XI)^(-1)*(w_hi-c_i-((ETA_I-XI)*(1+(1-TAO_H)*(1-U_H-V_H )/((1-TAO)*(1-U_C))*QH_IH_Y*X_SS)^(-1))*n_ci);

//% 10
(1-ALPHA)*(1-TAO)*(1-U_C)/X_SS*(w_ci+n_ci)+(1-ALPHA)*(1-TAO_H)*(1-U_H-V_H)*QH_IH_Y*(w_hi+n_hi)+B_I1_Y*b_i1=CI_Y*c_i+(HI_IH*QH_IH_Y)*(h_i-(1-DELTA_H)/(1+TREND_HI)*h_i(-1)+(1-(1-DELTA_H)/(1+TREND_HI))*q_h)+1/(1+TREND_B_I1)*(1+R_NL_SS)*B_I1_Y*(1/(1+R_NL_SS)*r_nl(-1)+b_i1(-1));
//% 11
b_i1=THETA+q_h(+1)+h_i-1/(1+R_NL_SS)*r_nl;


//% Enterpreneurs
//% 12
Y-X =w_cp+n_cp;
//% 13
Y-X =w_ci+n_ci;
//% 14
q_h+ih =w_hp+n_hp;
//% 15
q_h+ih =w_hi+n_hi;
//% 16
GAMMA*(1-DELTA_KC)*(c_e(+1)-c_e)+GAMMA*(1-TAO)*U_C*TREND_Y/(X_SS*KC_Y)*(c_e(+1)-c_e-Y(+1)+X(+1)+k_c)=0;
//% 17
GAMMA*(1-DELTA_KH)*(c_e(+1)-c_e)+GAMMA*(1-TAO_H)*U_H*TREND_Y*QH_IH_KH*(c_e(+1)-c_e-q_h(+1)-ih(+1)+k_h)=0;
//% 18
GAMMA*(1+TREND_QL)*(c_e-c_e(+1)+q_l(+1))+GAMMA*V_H*(1-TAO_H)*TREND_Y*QH_IH_Y/QL_L_Y*(c_e-c_e(+1)+q_h(+1)+ih(+1)-l)=q_l;
c_e=c_e(+1)-1/(1+R_NL_SS)*r_nl;
//% 20
CE_Y*c_e+IC_Y*i_c+IH_Y*i_h+QL_L_Y*(q_l-1/(1+TREND_QL)*q_l+l-1/(1+TREND_QL)*l(-1))+ALPHA*(1-TAO)*(1-U_C)/X_SS*(w_cp+n_cp)+ALPHA*(1-TAO_H)*(1-U_H-V_H)*QH_IH_Y*(w_hp+n_hp)+(1-ALPHA)*(1-TAO)*(1-U_C)/X_SS*(w_ci+n_ci)+(1-ALPHA)*(1-TAO_H)*(1-U_H-V_H)*QH_IH_Y*(w_hi+n_hi)+(1+R_NL_SS)*B_E1_Y/(1+TREND_B_E1)*(1/(1+R_NL_SS)*r_nl(-1)+b_e1(-1))=(1-TAO)/X_SS*(Y-X)+(1-TAO_H)*QH_IH_Y*(q_h+ih)+B_E1_Y*b_e1;



//% Normal Banks 
//% 22
r_nl=r_s;

//% Philips curve
//% 27
pai=BETA_P*exp(TREND_Y)/(1+BETA_P*exp(TREND_Y)*EPSILON)*pai(+1)+EPSILON/(1+BETA_P*exp(TREND_Y)*EPSILON)*pai(-1)+(1-OMEGA_CALVO)*(1-OMEGA_CALVO*BETA_P*exp(TREND_Y))/(OMEGA_CALVO*(1+BETA_P*exp(TREND_Y)*EPSILON))*(-X)+epsilon_pai;


B_Y*B=B_I1_Y*b_i1+B_E1_Y*b_e1;
B=S;

//% 30 
R=RHO_R*R(-1)+(1-RHO_R)*PHI_PAI*pai+(1-RHO_R)*PHI_XGAP*(GDP-GDP(-1))+epsilon_MP;
//% 31
r_s=R-pai(+1);

//% 32
GDP=Y_GDP*Y+(1-Y_GDP)*(q_h+ih);
//% 33
HP_IH*(h_p-(1-DELTA_H)/(1+TREND_HP)*(h_p(-1)))+HI_IH*(h_i-(1-DELTA_H)/(1+TREND_HI)*(h_i(-1)))=ih;

G_Y*Z_g=TAO*Y+TAO_H*QH_IH_Y*(q_h+ih)+QL_L_Y*(q_l-1/(1+TREND_QL)*q_l+l-1/(1+TREND_QL)*l(-1));


//% 37
Y=(1-U_C)*Z_c+(1-U_C)*ALPHA*n_cp+(1-U_C)*(1-ALPHA)*n_ci+U_C*k_c(-1);
//% 38
ih=(1-U_H-V_H )*Z_h+(1-U_H-V_H )*ALPHA*n_hp+(1-U_H-V_H )*(1-ALPHA)*n_hi+U_H*k_h(-1)+V_H*l(-1);
//% 39
k_c-(1-DELTA_KC)/(1+TREND_KC)*k_c(-1)=(TREND_KC+DELTA_KC)/(1+TREND_KC)*i_c;
//% 40
k_h-(1-DELTA_KH)*(1+TREND_KH)*k_h(-1)=(TREND_KH+DELTA_KH)/(1+TREND_KH)*i_h;
THETA=0;



//% STOCHASTIC PROCESSES FOR THE SHOCKS
Z_c                 =RHO_AC*Z_c(-1)+u_c;
Z_h                 =RHO_AH*Z_h(-1)+u_h;
Z_g                 =RHO_G*Z_g(-1)+u_g;
phi                 =RHO_PHI*phi(-1)+u_phi;
psi                 =RHO_PSI*psi(-1)+u_psi;
epsilon_CP          =RHO_CP*epsilon_CP(-1)+u_CP;

epsilon_pai         =RHO_PAI*epsilon_pai(-1)+u_pai;
epsilon_MP          =RHO_MP*epsilon_MP(-1)+u_MP;
end;


         
shocks;
var u_c=(STDERR_AC)^2;
var u_h=(STDERR_AH)^2;
var u_g=(STDERR_G)^2;
var u_phi=(STDERR_PHI)^2;
var u_psi=(STDERR_PSI)^2;
var u_CP=(STDERR_CP)^2;

var u_pai=(STDERR_PAI)^2;
var u_MP=(STDERR_MP)^2;

end;
steady;
check;


stoch_simul(order=1,irf=0); 
model_diagnostics(M_,options_,oo_);

