var lambda, lambda_tilde, c, c_tilde, c_agg, k, debt, l, l_tilde, inv_cap, phi, q, r, y, a;

varexo e_a;


parameters theta beta_tilde delta alpha gamma rho sigma_l sigma_w sigma_b beta rho_a b y_ss k_ss l_ss c_tilde_ss c_ss q_ss b_ss lambda_ss lambda_tilde_ss phi_ss l_tilde_ss, L_fixed, r_ss;

load param_pintus;
set_param_value('theta',theta)
set_param_value('beta_tilde',beta_tilde)
set_param_value('delta',delta)
set_param_value('alpha',alpha)
set_param_value('gamma',gamma)
set_param_value('rho',rho)
set_param_value('sigma_l',sigma_l)
set_param_value('sigma_w',sigma_w)
set_param_value('sigma_b',sigma_b)
set_param_value('beta',beta)
set_param_value('rho_a',rho_a)
set_param_value('b',b)
set_param_value('y_ss',y_ss)
set_param_value('k_ss',k_ss)
set_param_value('l_ss',l_ss)
set_param_value('c_tilde_ss',c_tilde_ss)
set_param_value('c_ss',c_ss)
set_param_value('q_ss',q_ss)
set_param_value('k_ss',k_ss)
set_param_value('b_ss',b_ss)
set_param_value('k_ss',k_ss)
set_param_value('lambda_ss',lambda_ss)
set_param_value('lambda_tilde_ss',lambda_tilde_ss)
set_param_value('phi_ss',phi_ss)
set_param_value('l_tilde_ss',l_tilde_ss)
set_param_value('L_fixed',L_fixed)
set_param_value('r_ss',r_ss)



model;

% FOCS of the lender 
lambda_tilde = c_tilde^(-sigma_l);
q*lambda_tilde = beta_tilde*q(+1)*lambda_tilde(+1)+beta_tilde*b*l_tilde^(-sigma_w);
lambda_tilde = beta_tilde*(1+r(+1))*lambda_tilde(+1);

% FOCS of the borrower

lambda = (c-rho*c(-1))^(-sigma_b);
q*lambda = beta*q(+1)*lambda(+1)+beta*gamma*(y/l(-1))*lambda(+1)+theta*phi*q(+1);
lambda = beta*lambda(+1)*(alpha*(y/k(-1))+1-delta);
lambda = beta*(1+r(+1))*lambda(+1)+phi*(1+r(+1));
(1+r(+1))*debt=theta*q(+1)*l;

% Production
y = a*(k(-1))^(alpha)*(l(-1))^(gamma);

% Market clearing
c_tilde+q*(l-l(-1))+debt = (1+r)*debt(-1);
c+c_tilde+k-(1-delta)*k(-1)=y;
l+l_tilde = L_fixed;
c_agg = c+c_tilde;

% Investment in capital 
inv_cap = k-(1-delta)*k(-1);



% TFP shock process
log(a) = rho_a*log(a(-1))+e_a;



end;


initval;

lambda = lambda_ss;
lambda_tilde = lambda_tilde_ss; 
c = c_ss;
c_tilde = c_tilde_ss;
c_agg = c_ss+c_tilde_ss;
k = k_ss;
debt = b_ss;
l = l_ss;
l_tilde = l_tilde_ss;
inv_cap = delta*k_ss;
phi = phi_ss;
q = q_ss;
r = r_ss;
y = y_ss;
a = 1;

end;

steady;
check;

shocks;
var e_a = 1;
end; 

stoch_simul (nograph,noprint,hp_filter=1600,order=1,irf=80);




