% Endogenous variables: 
var c_1 c_2 b_1 b_2 tau_1 tau_2 y_1 y_2 r Pi d_1 d_2;


% Exogenous variables: 
varexo e_y_1 e_y_2 psi_1 psi_2 theta;


% Parameters:
parameters c_1_bar c_2_bar y_1_bar y_2_bar R_bar b_1_bar 
b_2_bar tau_1_bar tau_2_bar beta d_1_bar d_2_bar g_1_bar 
g_2_bar gamma_1_1 gamma_2_1 alpha_1; 

%clear all
beta = 0.99;
R_bar = 1 / beta;
tau_1_bar = 0.3;
tau_2_bar = 0.3;
y_1_bar = 1;
y_2_bar = 1;
gamma_1_1 = 1.4;
gamma_2_1 = 1.4;
gamma_1_0 = 1.;
gamma_2_0 = 1.;
b_1_bar = (tau_1_bar / gamma_1_0)^(1/gamma_1_1);
b_2_bar = (tau_2_bar / gamma_2_0)^(1/gamma_2_1);
c_1_bar = b_1_bar * (R_bar - 1) - tau_1_bar + y_1_bar;
c_2_bar = b_2_bar * (R_bar - 1) - tau_2_bar + y_2_bar;
g_1_bar = (y_1_bar + y_2_bar - c_1_bar - c_2_bar)/2;
g_2_bar = (y_1_bar + y_2_bar - c_1_bar - c_2_bar)/2;
d_1_bar = ( tau_1_bar - g_1_bar )/(R_bar-1);
d_2_bar = ( tau_2_bar - g_2_bar )/(R_bar-1);
alpha_1 = 0.5;


% The Model:
model (linear);


c_1_bar * c_1 + c_2_bar * c_2 = y_1_bar * y_1 + y_2_bar * y_2;

c_1(+1) + Pi(+1)  = c_1 + r - 0.0001 * b_1_bar * b_1;
c_2(+1) + Pi(+1)  = c_2 + r - 0.0001 * b_2_bar * b_2;

b_1_bar * b_1  = - c_1_bar * c_1 + R_bar * b_1_bar * b_1(-1)  
 - tau_1_bar * tau_1 + b_1_bar * r(-1) + y_1_bar * y_1;

b_2_bar * b_2  = - c_2_bar * c_2 + R_bar * b_2_bar * b_2(-1)  
 - tau_2_bar * tau_2 + b_2_bar * r(-1) + y_2_bar * y_2;

 
d_1_bar * d_1 = R_bar * d_1_bar * d_1(-1) + d_1_bar * r(-1) - tau_1_bar * tau_1;
d_2_bar * d_2 = R_bar * d_2_bar * d_2(-1) + d_2_bar * r(-1) - tau_2_bar * tau_2;

y_1 = e_y_1;
y_2 = e_y_2;


tau_1 = gamma_1_1 * d_1(-1) + psi_1;
tau_2 = gamma_2_1 * d_2(-1) + psi_2;

r = alpha_1 * Pi + theta;

end;


resid(1);
steady;
check;
%model_diagnostics(M_,options_,oo_);

shocks;
var psi_2=0.103;
end;


stoch_simul(irf=24);