% --------------------------------------------
% NK model 
%
%
%  --- Non Linear Version -----
%
% 
% --------------------------------------------



var     c, w, y, l, k, i, z, R, pip, s, techno;

varexo eps_techno ; 
varexo_det  eps_em;

parameters  betaa sigmac sigmal alpha delta tetap mup sbar GbarY Rbar zbar rotem
            YbarK IbarY CbarY LbarK Pstarbar pipbar ybar kbar ibar cbar gbar lbar wbar chilbar Q1bar Q2bar technobar rhoTechno;

betaa   = 0.99;     % discount factor
sigmac  = 1.6;      % Inverse degree of risk aversion
sigmal  = 1;        % Degree of risk aversion
alpha   = 0.35;     % capital share
delta   = 0.025;
tetap   = 11;       % elasticity of subst. demand
mup     = tetap/(tetap-1);  % mark up
sbar    = 1/mup;
GbarY   = 0.19;         
Rbar    = 1/betaa;  
zbar    = 1/betaa - (1-delta);
YbarK   = zbar/(sbar*alpha);
IbarY   = delta*(1/YbarK);
CbarY   = 1 - IbarY - GbarY  ;
LbarK   = (YbarK)^(1/(1-alpha));
Pstarbar   = 1;
pipbar     = 1;
ybar       = 1;
kbar       = 1/(YbarK*(1/ybar));
ibar       = IbarY*ybar;
cbar       = CbarY*ybar;
gbar       = GbarY*ybar;
lbar       = LbarK*kbar;
wbar       = sbar*(1-alpha)*ybar/lbar;
chilbar    = ((cbar^(-1/sigmac))*wbar)*(lbar^(-sigmal));
technobar  = 1;
rhoTechno  = 0.95;
rotem      = 35;



model;

    pip(1)/R      = betaa*((c(1)^(-1/sigmac))/(c^(-1/sigmac)));

    chilbar*l^(sigmal) = ((c)^(-1/sigmac))*w;

    y          = techno*((l)^(1-alpha))*(k(-1)^(alpha));
    w          = s*(1-alpha)*(y/l);
    z          = s*alpha*(y/k(-1));

    1 - rotem*(pip-1)*pip + rotem*betaa*((c(1)^(-1/sigmac))/(c^(-1/sigmac)))*((pip(1)-1)*pip(1)*y(1)/y) = (1-s)*tetap;

    z(1)  = (c^(-1/sigmac))/(betaa*(c(1)^(-1/sigmac))) - (1-delta);
    k     = (1-delta)*k(-1) + i;

    y      = c + i + gbar + y*(rotem/2)*(pip-1)^2;
    //R/Rbar  = (pip/pipbar)^(1.5);
    (R)/(Rbar)  = exp(eps_em)*((((R(-1))/(Rbar))^(0.8))*((pip/pipbar)^((1-0.8)*1.5))*((y)^((1-0.8)*0.025)));

    (techno/technobar) - ((techno(-1)/technobar)^rhoTechno)*exp(eps_techno);

end;


initval;
c       = cbar;
w       = wbar;
y       = ybar;
l       = lbar;
k       = kbar;
i       = ibar;
z       = zbar; 
R       = Rbar;
pip     = pipbar;
s       = sbar;
techno  = technobar;
end;


shocks;
    var eps_techno = 0.9^2; 

    var eps_em; 
    periods 1:1 2:2 3:3 4:4 5:5 6:6 7:7 8:8 9:9 10:10 11:11 12:12 13:13;
    values  0.00616082	0.00718570	0.00625440	0.00485449	0.00358274	0.00261125	0.00193572	0.00149558	0.00122515	0.00107101	0.00099462	0.00096985	0.00097937	;
    

end;


steady(solve_algo=2);
resid(1);
check;

stoch_simul(dr_algo=0, ar=0, nocorr, order=1,  nograph, drop=0);
forecast(periods=130);



