% Slow residuals ML estimation

var zT1 zN1 zT2 zN2;
varexo eT1 eN1 eT2 eN2;

parameters 
A1T_11 A1T_12 A1T_13 A1T_14 A2T_11 A2T_12 A2T_13 A2T_14 A1N_11 A1N_12 A1N_13 A1N_14 A2N_11 A2N_12 A2N_13 A2N_14 
a b c d e f g h k l
;

A1T_11 = 0.84  ;   
A1T_12 = 0     ; % No cross-country spill-overs
A1T_13 = 0.22 ; % Mild sectoral spillovers
A1T_14 = 0     ;
A2T_11 = 0     ;
A2T_12 = A1T_11;
A2T_13 = 0     ;
A2T_14 = A1T_13;
A1N_11 = 0     ; % in the paper, spillovers are not symmetric. there are spillovers from NT->T but not the other way round
A1N_12 = 0     ;
A1N_13 = 0.30  ;
A1N_14 = 0     ;
A2N_11 = 0     ;
A2N_12 = 0     ;
A2N_13 = 0     ;
A2N_14 = A1N_13;

a = 0.01; 
b = 0.01; 
c = 0.005;
d = 0.04; 
e= 0.03;
f= 0.02;
g= 0.09;
h= 0.06;
k= 0.04;
l= 0.02546;

model(linear);

zT1 = A1T_11*zT1(-1) + A1T_12*zT2(-1) + A1T_13*zN1(-1) + A1T_14*zN2(-1) + a*eT1 ;
zT2 = A2T_11*zT1(-1) + A2T_12*zT2(-1) + A2T_13*zN1(-1) + A2T_14*zN2(-1) + b*eT1 + c*eT2 ;
zN1 = A1N_11*zT1(-1) + A1N_12*zT2(-1) + A1N_13*zN1(-1) + A1N_14*zN2(-1) + d*eT1 + e*eT2 + f*eN1 ;
zN2 = A2N_11*zT1(-1) + A2N_12*zT2(-1) + A2N_13*zN1(-1) + A2N_14*zN2(-1) + g*eT1 + h*eT2 + k*eN1 + l*eN2 ;

end;

check; 

shocks ;
var eT1 = 1;
var eN1 = 1;
var eT2 = 1;
var eN2 = 1;
var eT1, eT2 = 0;
var eT1, eN1 = 0;
var eT1, eN2 = 0;
var eT2, eN2 = 0;
var eT2, eN1 = 0;
var eN2, eN1 = 0;
end;

varobs zT1 zN1 zT2 zN2;

estimated_params;

% Using eviews results as initial conditions
A1T_11 , 0.778  , , ;   
A1T_12 , -0.7399     , , ; 
A1T_13 , 0.169 , , ; 
A1T_14 , 1.2     , , ;
A2T_11 , -0.08     , , ;
A2T_12 , 0.707, , ;
A2T_13 , 0.3766     , , ;
A2T_14 , -0.0606, , ;
A1N_11 , -0.0312     , , ;
A1N_12 , -0.509     , , ;
A1N_13 , 0.742  , , ;
A1N_14 , -0.381     , , ;
A2N_11 , -0.0586     , , ;
A2N_12 , -0.0043     , , ;
A2N_13 , 0.122     , , ;
A2N_14 , 0.857, , ;

a , 0.01 , , ;
b , 0.01, , ;
c , 0.01, , ;
d , 0.01, ,; 
e , 0.01, ,;
f , 0.01, ,;
g , 0.01, ,;
h , 0.01, ,;
k , 0.01, ,;
l , 0.01, ,;
end;


estimation(datafile=solows11, nograph) zT1 zT2 zN1 zN2;

ApersistenceM = [M_.params(1) M_.params(2) M_.params(3) M_.params(4) ; ...
                 M_.params(5) M_.params(6) M_.params(7) M_.params(8) ; ...
                 M_.params(9) M_.params(10) M_.params(11) M_.params(12) ; ...
                 M_.params(13) M_.params(14) M_.params(15) M_.params(16) ];

disp(' ')
disp('The AR(1) matrix is  ') 
disp(ApersistenceM)

B = [M_.params(17) 0 0 0 ; M_.params(18) M_.params(19) 0 0 ; ...
           M_.params(20) M_.params(21) M_.params(22) 0 ;...
           M_.params(23) M_.params(24) M_.params(25) M_.params(26)]; 
SigmaRF = B*B';

disp('The reduced-form var-cov matrix is  ') 
disp(SigmaRF)

/*
disp('The variance of eT1 is ') 
M_.params(5)^2
disp('The variance of eN1 is ') 
M_.params(6)^2+M_.params(7)^2
disp('The co-variance is ') 
M_.params(5)*M_.params(6)
*/