//close all;

var cG_a_t tauw_a_t inG_a_t 
    ger_gov_cns ger_gov_inv ger_taxrate_lab
    cG_b_t tauw_b_t inG_b_t
    eur_gov_cns eur_gov_inv eur_taxrate_lab;

varexo nua_ecG nua_etauw nua_einG
       nub_ecG nub_etauw nub_einG;

parameters rho_eg_a rho_etauw_a rho_einG_a
           rho_eg_b rho_etauw_b rho_einG_b
           tauw_a tauw_b inG_a_ts inG_b_ts cG_a_ts cG_b_ts;

rho_etauw_a = 0.75;
rho_etauw_b = 0.75;
rho_einG_a  = 0.75;
rho_einG_b  = 0.75;
rho_eg_a = 0.75;
rho_eg_b = 0.75;

tauw_a = 0.380; 
tauw_b = 0.380; 
inG_a_ts = 0.0262;
inG_b_ts = 0.0262;
cG_a_ts = 0.0856;
cG_b_ts = 0.0856;

model;

cG_a_t = cG_a_ts + rho_eg_a*(cG_a_t(-1)-cG_a_ts) + nua_ecG;
tauw_a_t = tauw_a + rho_etauw_a*(tauw_a_t(-1)-tauw_a) + nua_etauw;
inG_a_t = inG_a_ts + rho_einG_a*(inG_a_t(-1)-inG_a_ts) + nua_einG;

   ger_gov_cns = log(cG_a_t) - log(cG_a_t(-1));
   ger_gov_inv = log(inG_a_t) - log(inG_a_t(-1));
   ger_taxrate_lab = tauw_a_t - tauw_a;

cG_b_t = cG_b_ts + rho_eg_b*(cG_b_t(-1)-cG_b_ts) + nub_ecG;
tauw_b_t = tauw_b + rho_etauw_b*(tauw_b_t(-1)-tauw_b) + nub_etauw;
inG_b_t = inG_b_ts + rho_einG_b*(inG_b_t(-1)-inG_b_ts) + nub_einG;

   eur_gov_cns = log(cG_b_t) - log(cG_b_t(-1));
   eur_gov_inv = log(inG_b_t) - log(inG_b_t(-1));
   eur_taxrate_lab = tauw_b_t - tauw_b;

end;

initval;
cG_a_t = cG_a_ts;
tauw_a_t = tauw_a;
inG_a_t = inG_a_ts;
ger_gov_cns = 0;
ger_gov_inv = 0;
ger_taxrate_lab = 0;
cG_b_t = cG_b_ts;
tauw_b_t = tauw_b;
inG_b_t = inG_b_ts;
eur_gov_cns = 0;
eur_gov_inv = 0;
eur_taxrate_lab = 0;
end;

steady;
check;

shocks;
var nua_ecG = 0.01^2;
var nub_ecG = 0.01^2;
var nua_etauw = 0.01^2;
var nub_etauw = 0.01^2;
var nua_einG = 0.01^2;
var nub_einG = 0.01^2;

end;

//stoch_simul(order = 1, irf=20);


estimated_params;

rho_einG_a, beta_pdf,  0.75, 0.1;
rho_einG_b, beta_pdf,  0.75, 0.1;
rho_etauw_a, beta_pdf,  0.75, 0.1;
rho_etauw_b, beta_pdf,  0.75, 0.1;
rho_eg_a, beta_pdf, 0.75, 0.1;
rho_eg_b, beta_pdf, 0.75, 0.1;

stderr nua_einG, inv_gamma_pdf, 0.01, 2;
stderr nub_einG, inv_gamma_pdf, 0.01, 2;
stderr nua_etauw, inv_gamma_pdf, 0.01, 2;
stderr nub_etauw, inv_gamma_pdf, 0.01, 2;
stderr nua_ecG, inv_gamma_pdf, 0.01, 2;
stderr nub_ecG, inv_gamma_pdf, 0.01, 2;

end;


varobs ger_gov_cns eur_gov_cns ger_gov_inv eur_gov_inv ger_taxrate_lab eur_taxrate_lab;

identification;

estimation(datafile=data_mode_identification_interaction, mode_compute=4, mode_check, mh_replic=0) ger_gov_cns eur_gov_cns ger_gov_inv eur_gov_inv ger_taxrate_lab eur_taxrate_lab;



