    close all;

% Example Model

%----------------------------------------------------------------
% 1. Defining variables, parameters, shocks
%----------------------------------------------------------------

@#define countries = [ "US", "EU", "AS" ]
@#define B = [ "EU", "AS" ]

@#for co in countries
var c_@{co} y_@{co} z_@{co} r_@{co} yk_@{co} yl_@{co};

varexo uk_@{co} ul_@{co};

parameters rho_@{co} eta_@{co} gamma_y_@{co} gamma_l_@{co} delta_@{co};
@#endfor

var w_US w_EU w_AS;

parameters beta n a1 a2 b22 b23 b32 b33;





%----------------------------------------------------------------
% (2.) Model
%----------------------------------------------------------------
 
model(linear);
@#for co in countries
  yk_@{co}=gamma_y_@{co}*yk_@{co}(-1)+uk_@{co};
  yl_@{co}=gamma_l_@{co}*yl_@{co}(-1)+ul_@{co};
  y_@{co}=delta_@{co}*yk_@{co}+(1-delta_@{co})*yl_@{co};
  r_@{co}=(1-beta)*yk_@{co}+beta*z_@{co}-z_@{co}(-1);
  z_@{co}=rho_@{co}*c_@{co}-rho_@{co}*c_@{co}(+1)+(1-beta)*yk_@{co}(+1)+beta*z_@{co}(+1);
@#endfor

@#for b in B
rho_@{b}*(c_US(+1)-c_@{b}(+1))=(rho_@{b}-eta_@{b})*(c_US-c_@{b});
@#endfor


a1*w_EU+a2*w_AS=a1/beta*w_EU(-1)+a2/beta*w_AS(-1)+(c_US-c_EU)-(y_US-y_EU)+a1*(b22*(r_EU-r_US) 
+ b23*(r_AS-r_US)) + a2*(b32*(r_EU-r_US) + b33*(r_AS-r_US)); 
a1*w_AS+a2*w_EU=a1/beta*w_AS(-1)+a2/beta*w_EU(-1)+(c_US-c_AS)-(y_US-y_AS)+a2*(b22*(r_EU-r_US) + b23*(r_AS-r_US)) 
+ a1*(b32*(r_EU-r_US) + b33*(r_AS-r_US)); 
w_US=-(w_EU+w_AS);  
 
  // World ressource constraint
@#for co in countries
  +c_@{co}
@#endfor
    =
@#for co in countries
  +y_@{co}
@#endfor
    ;
end;



@#for co in countries
rho_@{co}=2; 
eta_@{co}=0.0001; 
gamma_y_@{co}0.9; 
gamma_l_@{co}=0.9; 
delta_@{co}=0.36;
@#endfor

b22=-6; 
b23=3; 
b32=3;  
b33=-6;
n=1/3;
beta=0.96; 
a1=(1-n)/(1-2*n);
a2=n/(1-2*n);


shocks;
@#for co in countries
var uk_@{co}; stderr 0.01; 
var ul_@{co}; stderr 0.01;
@#endfor
end;



steady;

stoch_simul(irf = 10, order = 1, nograph);




