

// Fabio Verona, Ines Drummond, Manuel Mota Freitas - FEP - University of Porto (Portugal)
// May 08

// BGG model, code for Dynare

var cU , iU , yU , rnU , kU , xU , qU , hU , piU , rU , nU , ceU , rkU , efpU , aS,gS,mpS, bU, rsU, sU;
varexo e_mpS,e_gS,e_aS;

parameters  cy,cey,iy,gy,kn,nk1,yn,markup,Rk,epsilon,bbeta,eta,alphaK,delta,vsigma,rho,vphi,kappa,omega,v,gamma,sigma, qsigma, a, b, tau;

delta	=	0.025;
a = 0.98;
b= a*(1-delta);
tau = 0.95;
cy	=	0.605770191	; // C/Y
cey	=	0.01	; // Ce/Y
iy	=	0.184229809	; //% I/Y
gy	=	0.2	; //% G/Y
kn	=	2.081759973	; //%K/N
nk1	=	0.480362776	; //%N/K
yn	=	0.282494996	; //%Y/N
markup	=	1.1	; //%X
Rk	=	1.018177298	;
epsilon	=	0.957593537	;
bbeta	=	0.99	;
eta	=	3	;
//beta1 = 1 ; %coeficiente associado a H na funçao utilizadade (se=1 => ln (1-H))
alphaK	=	0.35	;
vsigma=0.11;
qsigma = 0.1;
rho	=	0.9	;
vphi	=	0.25	;
kappa	=	0.08583	;
omega	=	0.984615	;
v	=	0.052092347	;
//v=0;
gamma	=	0.9728	;
sigma	=	1	;

R = 1/bbeta ;


model;
 
nU = Rk*((kn*(rsU - EXPECTATION(-1)(rsU)) + ((1-tau*Rk)/tau)*yU) + nU(-1));
efpU = rsU(+1) - rU;
bU = qU+kU - nU;
gS = 0.95*gS(-1) + e_gS;
aS = aS(-1)  + e_aS; 
mpS = e_mpS;
yU = cy*cU + iy*iU + gy*gS + cey*ceU;
sigma*cU = -rU + sigma*cU(+1);
ceU = sU + kU;
rsU(+1) - rU = -v*(nU-sU-kU);
rkU = (1-epsilon)*(yU-kU(-1)+xU) + epsilon*qU - qU(-1);
rsU = (1-epsilon)*(yU-kU(-1)+xU) + epsilon*sU - sU(-1);
rsU(+1) - rkU(+1) = - (1-b)*(sU - qU);
sU - qU = ((1-delta)/(b*Rk))*(sU(+1) - qU(+1));
yU = aS + alphaK*kU(-1)+(1-alphaK)*omega*hU;
yU - hU - xU - cU = eta^(-1)*hU;
piU = -kappa*xU + bbeta*(0.5*piU(+1) + 0.5*piU(-1));
kU = delta*iU + (1-delta)*kU(-1);
rnU = rho*rnU(-1) + vsigma*piU(+1) - mpS;
rnU = rU + piU(+1);
end;


//initval;

//end;


shocks; 
var e_gS; stderr 0.0155;
//var e_gS; stderr 0;
var e_aS; stderr 0.0043;
//var e_aS; stderr 0;
var e_mpS;stderr 0.06;
end;

steady;
check;
steady(solve_algo=2);

stoch_simul(order=1,nocorr,nomoments,irf=40) yU kU efpU nU rnU piU qU rkU bU;




