% BM - ECB 2019
var y pi i y_star y_gap r_star r_gap g z;
varexo y_gap_e, pi_e, y_star_e, g_e, z_e, pi_star, r, i_e;
varobs y, pi, i;
parameters a_y1, a_y2, a_r, b_pi, b_y, rho_i, rho_pi, rho_y;
% y
a_y1=1.5;
% a_y2=-0.5; % if initial value of a_y1+a_y2 > 1, then no stable equilibrium error
% a_r=-0.1;
% pi
b_pi=0.673;
b_y=0.0775;
% i
rho_i=0.5;
rho_pi=2.5;
rho_y=1;
%==============================================
% model specification
%==============================================
model(linear);
% y
y=y_star+y_gap;
r=r_star+r_gap;
y_gap = a_y1y_gap(-1) + a_y2y_gap(-2) + (a_r/2)*(r_gap(-1) + r_gap(-2)) + y_gap_e;
% pi
pi = (1-b_pi)pi_star + (b_pi/2)(pi(-1)+pi(-2)) + b_y*(y_gap(-1)) + pi_e;
% i
i = rho_ii(-1) + (1-rho_i)(r_star + pi_star + rho_pi*(pi - pi_star) + rho_y*y_gap) + i_e;
%-----------------------------------------
% state equations
%-----------------------------------------
% r_star
r_star = 4 * g + z; % adj to have per annum as unit
% z
z = z(-1) + z_e;
% g
g = g(-1) + g_e;
% y_star
y_star = y_star(-1) + g(-1) + y_star_e;
end;
%==============================================
% stationary state (as starting point for estimation)
%==============================================
% steady_state_model;
% y_gap=0;
% r_gap=0;
% pi=pi_star;
% i=r+pi;
% end;
%
% steady;
% check;
% stoch_simul(order=1);
%==============================================
% parameters to estimate
%==============================================
estimated_params;
% y
a_y1, 1.4, 0, 2, uniform_pdf, 1, 2; %gap(-1)
a_y2, -0.597, uniform_pdf, -1, 0;
a_r, -0.071, uniform_pdf, -0.5, 0;
% pi
b_pi, 0.673, 0, inf, uniform_pdf, 0, 1; %pi(-1)
b_y, 0.0775, 0, inf, uniform_pdf, 0, 1; %gap(-1)
% i
rho_i, 0.5, 0, inf, uniform_pdf, 0, 1;
rho_pi, 2.5, 0, inf, uniform_pdf, 1, 4;
rho_y, 1, 0, inf, uniform_pdf, 0, 2;
stderr y_gap_e, 0.4, inv_gamma_pdf, 0.67, 0.22;
stderr pi_e, 0.75, inv_gamma_pdf, 0.67, 0.22;
stderr z_e, 0.3, inv_gamma_pdf, 0.3, 0.22;
stderr y_star_e, 0.5, inv_gamma_pdf, 0.67, 0.22;
stderr g_e, 0.1, inv_gamma_pdf, 0.1, 0.22;
corr y_gap_e, y_star_e, -0.25, beta_pdf, 0, 0.3, -1, 1;
end;
%==============================================
% parameters initialization
%==============================================
% initval;
% y_gap=0;
% r_gap=0;
% end;
% histval;
% y_gap(0)=0;
% r_gap(0)=0;
% end;
%==============================================
% Estimation
%==============================================
% identification(diffuse_filter);
estimation(datafile=‘…/…/data/BM_data.csv’,
dirname=‘…/BM_output/’,
% mode_check,
first_obs=3, % needs to be larger than # of lags
mode_compute=6, % do MCMC
diffuse_filter, % to estimate models with non-stationary observed variables
kalman_algo=3, % use Multivariate Diffuse Kalman Filter for non-stationary models
consider_all_endogenous,
% smoothed_state_uncertainty, % computation of the variance of smoothed estimates, i.e. varT(yt)
smoother,
mh_replic=50000,
mh_nblocks=2,
mh_drop=0.5,
mh_conf_sig=0.95,
plot_priors=0,
nodisplay,
graph_format=pdf);