% Output gap measurement with annual data
% file:///C:/Users/petroulf/Desktop/output%20gap/papers/wp1579.pdf

var   y, G, DY, DY_bar;   
var   pie; 
var   unr, unr_bar, unr_g, unr_gap;
var   piec;
var   DCAP,DCAP_bar, cap_gap,  cap_g;  
var   growthc;

var DY_, unr_,pie_, piec_,growthc_ ,  DCAP_  ; // observables


varexo res_lgdp_bar, res_g, res_y,
    res_pie, res_piec, res_growthc,
    res_unr_bar, res_unr_g, res_unr_gap
    res_cap_gap, res_cap_bar, res_cap_g;

parameters      growth_ss, phi, beta, lambda, unr_ss, tau1, tau2, tau3,tau4,
               theta, kappa1, kappa2, delta;


unr_ss=8; % NAIRU
growth_ss =2;// 150*log(1+0.7/100);

% Transitory parameters.
beta = 0.25; 
tau1 = 0.1; 
tau2 = 0.1; 
tau3 = 0.1; 
tau4=0.1;
theta = 0.1;  
lambda = 0.25;
phi = 0.7; 
delta=0.5;
kappa1=0.1;
kappa2=1.3;


%%%%%%%%
% Model
%%%%%%%%

model;
     
% Output
y=y(-1)+DY-DY_bar;
DY_bar=G+res_lgdp_bar;
G = (1-theta)*G(-1)+ theta*growth_ss +  res_g; // trend growth
y =  phi*y(-1) + res_y; // gap equation


% Inflation.  
// Phillips Curve 
pie = lambda*pie(+1)+(1-lambda)*pie(-1)+beta*y + res_pie;


% Unemployment.   

// NAIRU definition
unr_gap = unr_bar - unr;

//Stochastic Processes for Change in NAIRU
unr_bar =unr_bar(-1)+ tau4*(unr_ss-unr_bar(-1))+unr_g + res_unr_bar;

// Stochastic Process for  NAIRU
unr_g = (1-tau3)*unr_g(-1) + res_unr_g; 

// Dynamic Okun's Law
unr_gap = tau2*unr_gap(-1)+ tau1*y + res_unr_gap; 


% Capacity
cap_gap=cap_gap(-1)+DCAP-DCAP_bar;
DCAP_bar=cap_g+res_cap_bar;
cap_g=(1-delta)*cap_g(-1)+res_cap_g;
cap_gap=kappa1*cap_gap(-1)+kappa2*y+res_cap_gap;



% Expectations

piec=pie+res_piec;
growthc=DY+res_growthc;



// Observables
pie_= pie; 
DY_ =DY;
unr_=unr;
piec_=piec;
DCAP_=DCAP;
growthc_=growthc;

end;


initval;
y=0;
unr_gap=0;
unr=unr_ss;
unr_=unr;
G=growth_ss;

DY=growth_ss;
DY_bar=growth_ss;
pie=0;    
unr_bar=unr_ss;
unr_g=0;

pie_=pie;
DY_=DY;


//DCAP_=DCAP;
growthc=DY;
growthc_=growthc;

end;

check;

resid;

steady;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Estimation
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

shocks;
var res_lgdp_bar; stderr 0.2;
var res_g; stderr 0.2;
var res_y; stderr 0.8;
var res_pie; stderr 0.25;
var res_piec; stderr 0.25;
var res_unr_gap; stderr .5;
var res_unr_bar; stderr .5;
var res_unr_g; stderr .1;
var res_cap_gap; stderr .1;
var res_cap_bar; stderr .1;
var res_cap_g; stderr .1;
var res_growthc; stderr .1;
end;

varobs DY_ unr_ piec_ growthc_ pie_ DCAP_;//  ;// ;/;;

estimated_params;

lambda, 0.25,0,0.6,normal_pdf, 0.25, 0.05;
beta, 0.05,0,1,normal_pdf, 0.05, 0.1;
phi, 0.9,0,1,normal_pdf, 0.9, 0.1;
theta, 0.1,0,.3,normal_pdf, 0.1, 0.1;
tau1, 0.3,0,.5,normal_pdf, 0.3, 0.1;
tau2, 0.3,0,.5,normal_pdf, 0.3, 0.1;
delta, 0.5,0,2,normal_pdf, 0.5, 0.1;
kappa1, 0.1,0.05,.5,normal_pdf, 0.1, 0.05;
kappa2, 1.3,0,3,normal_pdf, 1.3, 0.05;


stderr res_y,.5,0.0005,2,normal_pdf,.5,.05;
stderr res_lgdp_bar,0.5,0.0005,5,normal_pdf,0.5,.1;
stderr res_g,0.5,0.0005,5,normal_pdf,0.5,.2;
stderr res_unr_gap,0.8,0.0005,10,normal_pdf,0.8,0.2;
stderr res_unr_bar,0.3,0.0005,10,normal_pdf,0.3,0.2;
stderr res_unr_g,0.3,0.0005,10,normal_pdf,0.3,0.2;
stderr res_pie,0.5,0.005,3,normal_pdf,0.5,0.1;
stderr res_piec,1,0.005,3,normal_pdf,1,0.1;
stderr res_cap_gap,0.2,0.0005,1,normal_pdf,0.2,.1;
stderr res_cap_bar,0.2,0.0005,10,normal_pdf,0.2,.1;
stderr res_cap_g,0.2,0.0005,10,normal_pdf,0.2,.1;
stderr res_growthc,1,0.005,3,normal_pdf,1,0.05;
end;

 
//For full Metropolis simulation set mh_replic=20000. It will take several hours
estimation(datafile=turkey,nograph,lik_init=2,mh_replic=14,mh_nblocks=10,
            mh_jscale=0.4,mode_compute=6);

% mode_compute=4 - Sims, fast but inaccurate
% mode_compute=5 - Faster, but doesn't always work
% mode_compute=6 - Slowest but always work

