%Modelo novo keynesiano do Gali
%Código de autoria própria, capítulo 3 do livro do Gabi
%Endogenous variables
var y yn hiato  pi i r rn  mc a v n piaa iaa raa;
%No livro do Gali a inflação, o juro nominal e o juro real são expressos a.a.
%nas funções de impulso resposta (ver comentário na página 53)
%Exogenous variables
varexo ev ea;
%Parameters
parameters alfa sigma fi epsilon mi psiy vy beta hg teta lambda kappa ro rov roa pesopi pesoy;
%Calibração
alfa = 0.33;
sigma = 1;
fi = 1;
epsilon = 6;
mi = log(epsilon/(epsilon-1));
psiy = (1+ fi)/(sigma*(1-alfa) + fi + alfa);
vy = -(1-alfa)*(mi-log(1-alfa))/(sigma*(1-alfa)+ fi + alfa);
beta = 0.99;
hg = (1- alfa)/(1-alfa+ alfa*epsilon);
teta = 0.66;
lambda = ((1-teta)*(1-beta*teta)/teta)*hg;
kappa = lambda*(sigma + (fi + alfa)/(1-alfa));
ro = - log(beta);
rov = 0.5;
roa = 0.9;
pesopi = 1.5;
pesoy = 0.5/4;

%Modelo (11 variáveis endógenas, logo temos que ter 11 equações)
Model(linear);
y = a + (1- alfa)*n;
yn = psiy*a + vy;
hiato = y - yn;
pi = beta*pi(+1) + kappa*hiato;
i = ro + pesopi*pi + pesoy*hiato + v;
r = i - pi(+1);
rn = ro + sigma*psiy*(a(+1)-a);
mc = (kappa/lambda)*yn - ((1+fi)/(1-alfa))*a - log(1-alfa);
y = y(+1) - (i-pi(+1) - rn)/sigma;
a = roa*a(-1) + ea;
v = rov*v(-1) + ev;
piaa = pi*4;
iaa = i*4;
raa = r*4;
end;

%Variances of the shocks;
shocks;
var ea = 1;
var ev = (0.25)^2;
end;


steady;
check;
stoch_simul(irf=20);
dyngraph;


