% On the Sources of Aggregate Fluctuations in Emerging Economies
% model in linear form
% calibrated to Mexican data using Chang and Fernandez (2012)

close all

%----------------------------------------------------------------
% Defining variables
%----------------------------------------------------------------

var y c w h u k q s sr nx b inv la a g r rstar gy gc gi dnx;               

varexo ea eg er;

parameters delta beta phi gbar psi bbar alpha theta rstarbar rbar srbar omega tau eta sbar rhoa rhog rhor sigma sigma_a sigma_g sigma_r;

%----------------------------------------------------------------
% Calibration
%----------------------------------------------------------------

delta = 0.050;
beta = 0.9976;
phi = 6;
gbar = 1.006;
psi = 0.001;
bbar = 0.100;
alpha = 0.6868;
theta = 0.77;
rbar = 1.01446168;
rstarbar = 1.0025;
srbar = (gbar*alpha);
omega = 1.600;
tau = 1.7168;
eta     = 0.80;
sigma = 2.000;
sbar = 1.0120;
rhoa = 0.94;
rhog = 0.72;
rhor = 0.83;
sigma_a = 0.0041;
sigma_g = 0.0109;
sigma_r = 0.0109;

%----------------------------------------------------------------
% 3. Model
%----------------------------------------------------------------

model; 

    % 1. Equation:

    k*g = (1-delta)*k(-1) + inv - (phi/2)*k(-1)*g*( (k/k(-1)) - gbar)^2;

    % 2. Equation:

    b = w*h + u*k(-1) + q*g*b(+1) - inv - c;  
  
    % 3. Equation:

    q^-1 = r + psi*(exp(b(+1) - bbar) - 1);

    % 4. Equation:

    r = rstar*s; % emin degilim!!!!

    % 5. Equation:

    la = (c - tau*h^omega)^-sigma;  

    % 6. Equation:

    tau*omega*h^(omega-1) = w;
  
    % 7. Equation:
  
    la*q = beta*(g^-sigma)*la(+1);

    % 8. Equation:

    la*(1 + phi*(k/k(-1) - gbar)) = beta*la(+1)*(g^-sigma)*(u + 1 - delta 
    + 0.5*phi*( (g(+1)*(k(+1)/k) )^2 - gbar^2));
    
    % 9. Equation:
  
    y = exp(a)*k(-1)^(1-alpha)*(g*h)^alpha;

    % 10. Equation:
  
    u = (1 - alpha)*exp(a)*(k^alpha)*(g*h)^alpha;

    % 11. Equation:

    w*(1 + theta*(r(-1) - 1)) = alpha*exp(a)*(k^(1 - alpha))*(h^(alpha - 1))*(g^alpha);
    
    % 12. Equation:
 
    log(nx) = y - inv - c;


    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%Growth and Deviations Observed in the Measurement Eq.%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


    % 13. Equation:
 
    gy = g(-1)*y/y(-1);

    % 14. Equation:
  
    gc = g(-1)*c/c(-1); 

    % 15. Equation:
  
    gi =  g(-1)*inv/inv(-1);

    % 16. Equation:
  
    dnx = nx - nx(-1);


    %%%%%%%%%%%%%%%%%%%%
    %%%Driving Forces%%%
    %%%%%%%%%%%%%%%%%%%%

    % 17. Equation:

    a = rhoa*a(-1) + ea;

    % 18. Equation:
    
    log(g) = (1-rhog)*log(gbar) + rhog*log(g(-1)) + eg;

    % 19. Equation:

    log(rstar) = (1 - rhor)*log(rbar) + rhor*(log(rstar(-1))) + er;

    % 20. Equation:

    log(s) = log(sbar) + eta*( log( sr(+1) ) - log(sbar) );

    % 21. Equation:

    log(sr) = exp(a)*(log(g)^alpha);

 
end;

%----------------------------------------------------------------
% 4. Computation
%----------------------------------------------------------------

initval;

h = 1/3;

r = rbar; 

rstar = rstarbar; 

s = sbar; 

q = 1/r;

a = 0;

g = gbar;

sr = srbar;

k = ((r + delta - 1)/(1 - alpha))^(-1/alpha)*gbar*h;

y = ((r + delta - 1)/(1 - alpha))*k;

inv = k*(gbar + delta - 1);

b = bbar*y;

u = (1 - alpha)*(y/k);

c = ( 0.68 + ( u/((r + delta - 1)/(1 - alpha)) ) + bbar*(gbar*q - 1) - (inv/y) )*y;

nx = (y - inv -c)/y;

w = alpha*(k^(1-alpha))*(h^(alpha-1))*( (gbar^alpha)/(1 + theta*(r-1)) );

la = (c - tau*h^omega)^-sigma;



end;

shocks;
var ea; stderr sigma_a;
var eg; stderr sigma_g;
var er; stderr sigma_r;
end;


steady;
resid(1); 
check;

stoch_simul(order=1,relative_irf) gy gc gi dnx;

