%**************************************************************%
%
% DYNARE file to small open economy model with news shocks
%
%**************************************************************%

%Assign variable and parameter names

var  k i c h lambda w y a d ghat dy tau r s tb ca tby cay b sy by g rk;
varexo eg ea;
parameters delta phi gamma omega tauav beta rav alpha rhogg rhogd theta psi sbar rhoa;

%Asign values to the parameters

delta=0.1;
phi=0.084;
gamma=2;
omega=0.22;
tauav=0.25;
beta=0.96;
rav=(1-beta)/beta;
alpha=0.32;
rhogg=0.62;
rhogd=-0.1;
theta=0.5;
psi=0.003;
rhoa=0.62;
sbar=0.1274;

%Write down model 

model;

k(1)=(1-delta)*k+i-phi*(k(1)-k)/2;
((c^omega)*(1-h)^(1-omega))^(-gamma)*omega*c^(omega-1)*(1-h)^(1-omega)=lambda;
((c^omega)*(1-h)^(1-omega))^(-gamma)*(1-omega)*c^(omega)*(1-h)^(-omega)=lambda*(1-tau)*w;
lambda=beta*(1+r)*lambda(1);
lambda*(1+phi*(k(1)-k))=beta*lambda(1)*((1-tau(1))*rk+delta*tau(1)+(1-delta)+phi*(k(2)-k(1)));
y=a*k^(alpha)*h^(1-alpha);
rk=a*alpha*k^(alpha-1)*h^(1-alpha);
w=a*(1-alpha)*k^(alpha)*h^(-alpha);

d=(1+r(-1))*d(-1)+g-tau*(w*h+(rk-delta)*k);
b=(1+r(-1))*b(-1)-(1-tau)*(w*h+(rk-delta)*k)+c+(i-delta*k);

ghat=rhogg*ghat(-1)+rhogd*(dy(-1)-dy)+eg;
tau=tauav+theta*(dy(-1)-dy);
r=rav+psi*(exp(s-sbar)-1);
a=rhoa*a(-1)+ea;

s=(1+r(-1))*s(-1)-tb;
ca=tb-r(-1)*s(-1);

dy=d/y;
tb=y-c-i-g;
tby=tb/y;
cay=ca/y;
s=b+d;
sy=s/y;
by=b/y;
end;

%Write down initial conditions

initval;
h=0.2;
tau=0.25;
k=0.2*((beta^(-1)-delta*tau-1+delta)/(alpha*(1-tau)))^(1/(alpha-1));
c=(omega/(1-omega))*(1-0.2)*(1-0.25)*(1-alpha)*(h/k)^(-alpha);
y=k^(alpha)*h^(1-alpha);
rk=alpha*k^(alpha-1)*h^(1-alpha);
w=(1-alpha)*k^(alpha)*h^(-alpha);
i=delta*k;
lambda=((c^omega)*(1-h)^(1-omega))^(-gamma)*omega*c^(omega-1)*(1-h)^(1-omega);
r=(1-beta)/beta;
g=y*0.2;
ghat=0;
tb=y-c-i-g;
s=tb/r;
ca=tb-r*s;
d=(-g+tau*(w*h+rk*k)-delta*tau*k)/r;
b=s-d;
dy=d/y;
tby=tb/y;
cay=ca/y;
sy=s/y;
by=b/y;
a=0;
end;

%Solve for steady state
steady;
check; 

%Asign variance of shocks
shocks;

var eg; stderr 1;
var ea; stderr 1;
end;

%Solve model 
stoch_simul(periods=220, order=1);
