From 0c9937f33cc3363dc42ca1590653cfd94c6fcfd7 Mon Sep 17 00:00:00 2001 From: Johannes Pfeifer Date: Fri, 5 Jun 2015 20:50:29 +0200 Subject: [PATCH] Add unit test for ML with morris --- tests/Makefile.am | 1 + tests/gsa/cod_ML_morris/cod_ML_morris.mod | 135 ++++++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 tests/gsa/cod_ML_morris/cod_ML_morris.mod diff --git a/tests/Makefile.am b/tests/Makefile.am index e33455217..1eefe3098 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -6,6 +6,7 @@ MODFILES = \ estimation/t_proposal/fs2000_student.mod \ gsa/ls2003.mod \ gsa/ls2003a.mod \ + gsa/cod_ML_morris/cod_ML_morris.mod \ ramst.mod \ ramst_a.mod \ ramst_static_tag.mod \ diff --git a/tests/gsa/cod_ML_morris/cod_ML_morris.mod b/tests/gsa/cod_ML_morris/cod_ML_morris.mod new file mode 100644 index 000000000..6e38d896f --- /dev/null +++ b/tests/gsa/cod_ML_morris/cod_ML_morris.mod @@ -0,0 +1,135 @@ +var c, y_ro, psi, s, tt, pi_h, mc_ro, i_ro, pi_ro, pi_eu, pi_f, y_eu, mc_eu, i_eu, g, a, cp, bnr, gs, as ; +varexo eps_a, eps_g, eps_cp, eps_s, eps_m, eps_as, eps_gs, eps_ms; +parameters alfa, niu, delt, teta_h, teta_f, bet, fi, sigm, h, ro, psi_pi, tetas, rhos, psi_pis, psi_y, psi_deltay, rho_g, rho_a, rho_cp, rho_s, rho_gs, rho_as ; + +alfa = 0.425 ; +bet = 0.99 ; + +niu = 0.6 ; +delt = 0.3 ; +teta_h = 0.7 ; +teta_f = 0.7 ; +fi = 2 ; +sigm = 0.5 ; +h = 0.8 ; +ro = 0.5 ; +psi_pi = 1.5 ; +tetas = 0.7 ; +rhos = 0.5 ; +psi_pis = 1.5 ; +psi_y = 0.25 ; +psi_deltay = 0.25 ; +rho_g = 0.5 ; +rho_a = 0.5 ; +rho_cp = 0.5 ; +rho_s = 0.5 ; +rho_gs = 0.5 ; +rho_as = 0.5 ; + +model (linear) ; + +// (1) mk clearing condition +(1-alfa) * c = y_ro - alfa * niu* (2-alfa)* tt - alfa * niu * psi - alfa * y_eu ; +// (2) terms of trade +tt - tt(-1) = pi_f - pi_h ; +// (3) terms of trade, real exchange rate, law of one price gap +s = psi + (1 - alfa) * tt; +// (4) domestic producers price setting +pi_h - delt * pi_h(-1) = (1 - teta_h) * (1- bet * teta_h) / teta_h * mc_ro + bet * ( pi_h(+1) - delt * pi_h) ; +// (5) domestic real mg costs +mc_ro = fi * y_ro - (1 + fi) * a + alfa * tt + sigm / (1-h) * (c - h* c(-1)) ; +// (6) importers price setting +pi_f - delt * pi_f(-1) = (1 - teta_f) * (1 - bet * teta_f) / teta_f * psi + bet * (pi_f (+1) - delt * pi_f) + cp; +// (7) complete mk assumption +c - h * c(-1) = y_eu - h * y_eu(-1) + (1 - h) / sigm * (psi + (1 - alfa) * tt) + g ; +// (8) domestic inflation +pi_ro = pi_h + alfa * (tt - tt(-1)) ; +// (9) UIP +i_ro - pi_ro(+1) - i_eu + pi_eu(+1) = s(+1) - s + bnr ; +// (10) domestic monetary policy rule +i_ro = ro * i_ro(-1) + (1 - ro) * (psi_pi * pi_ro + psi_y * y_ro + psi_deltay * (y_ro - y_ro(-1)) ) + eps_m ; +// (11) foreign euler equation +y_eu - h * y_eu(-1) = y_eu(+1) - h * y_eu - (1 - h) / sigm * (i_eu - pi_eu(+1)) + gs - gs(+1) ; +// (12) foreign producers price setting +pi_eu = (1 - tetas) * (1 - bet * tetas) / tetas * mc_eu + bet * pi_eu(+1) ; +// (13) foreign real mg costs +mc_eu = fi * y_eu - (1 + fi) * as + alfa * tt + sigm / (1-h) * (y_eu - h * y_eu(-1)) ; +// (14) foreign monetary policy rule +i_eu = rhos * i_eu(-1) + (1 - rhos) * (psi_pis * pi_eu + psi_y * y_eu) + eps_ms ; + +// exogenous processes +// (15) domestic shock in preferences (demand sh) +g = rho_g * g(-1) + eps_g ; +// (16) domestic technological shock (supply sh) +a = rho_a * a(-1) + eps_a ; +// (17) exchange rate shock +bnr = rho_s * bnr(-1) + eps_s ; +// (18) foreign shock in preferences +gs = rho_gs * gs(-1) + eps_gs ; +// (19) foreign technological shock +as = rho_as * as(-1) + eps_as ; +// (20) cost-push shock +cp = rho_cp * cp(-1) + eps_cp ; + +end ; + +shocks; +var eps_g; stderr 1 ; +var eps_a; stderr 1 ; +var eps_cp; stderr 1 ; +var eps_s; stderr 1 ; +var eps_m ; stderr 1 ; +var eps_gs; stderr 1 ; +var eps_as; stderr 1 ; +var eps_ms ; stderr 1 ; +end ; + +/* steady ; +*/ + +check ; + +estimated_params ; +niu, 0.6, 0.01, 0.999 ; +delt, 0.3, 0.01, 0.999 ; +teta_h, 0.7, 0.01, 0.999 ; +teta_f, 0.7, 0.01, 0.999 ; +fi, 2, 0.01, 5 ; +sigm, 0.5, 0.01, 0.999 ; +h, 0.8, 0.01, 0.999 ; +ro, 0.5, 0.01, 0.999 ; +psi_pi, 1.4, 0.01, 8 ; +tetas, 0.6, 0.01, 0.999 ; +rhos, 0.5, 0.01, 0.999 ; +psi_pis, 1.4, 0.01, 8 ; +psi_y, 0.25, 0.01, 0.999 ; +psi_deltay, 0.25, 0.01, 0.999 ; +rho_g, 0.3, 0.01, 0.999 ; +rho_a, 0.3, 0.01, 0.999 ; +rho_cp, 0.3, 0.01, 0.999 ; +rho_s, 0.3, 0.01, 0.999 ; +rho_gs, 0.3, 0.01, 0.999 ; +rho_as, 0.3, 0.01, 0.999 ; + +stderr eps_g, 1, 0.01, 10 ; +stderr eps_a, 1, 0.01, 10 ; +stderr eps_cp, 1, 0.01, 10 ; +stderr eps_s, 1, 0.01, 10 ; +stderr eps_gs, 1, 0.01, 10 ; +stderr eps_as, 1, 0.01, 10 ; +% corr eps_g, eps_a, 0, -1, 1; +end; + +varobs y_ro, pi_ro, i_ro, s, y_eu, pi_eu, i_eu, tt ; + +dynare_sensitivity (identification=1, nsam = 2000, lik_only = 1, morris=2) ; + +stoch_simul(order=2,irf=20) y_ro pi_ro i_ro s ; +//order 1 - impulse response functions are simply the algebraic forward iteration of the model's policy +//order 2 - impulse response functions will be the result of actual Monte Carlo simulations of future shocks +//specify sucient periods in IRFs to see the graphs return to steady state + +check ; + +/* shock_decomposition y_ro ; +*/