% this file has insuccess in (spurious) convergence problems.
% I add government and technology shocks with news structure,
% and monetary policy without foresight.

var y c I g z u n k v pi pi_calvo A D w mc R lambda mu q
% variables generated by the government spending shock:
ep_g4_1 ep_g4_2 ep_g4_3 ep_g4_4 ep_g8_1 ep_g8_2 ep_g8_3 ep_g8_4 ep_g8_5 ep_g8_6 ep_g8_7 ep_g8_8 
% variables generated by the neutral productivity shock:
ep_z4_1 ep_z4_2 ep_z4_3 ep_z4_4 ep_z8_1 ep_z8_2 ep_z8_3 ep_z8_4 ep_z8_5 ep_z8_6 ep_z8_7 ep_z8_8
% variables generated by the monetary policy shock;
ii;
varexo u_ii u_g v_g4 v_g8 u_z v_z4 v_z8;

parameters alpha delta_0 delta_1 delta_2 epsilon phi_c pi_star beta phi omega tau
y_star c_star I_star g_star z_star k_star n_star u_star v_star pi_calvo_optimal A_star D_star mc_star w_star R_star lambda_star mu_star ii_star q_star
rho_g sigma_u_g sigma_v_g4 sigma_v_g8
rho_ii phi_pi phi_y sigma_u_ii
rho_z sigma_u_z sigma_v_z4 sigma_v_z8;

alpha=0.33;
delta_0=0.025;
delta_1=0.05;
delta_2=0.05;
epsilon=6;
phi_c=0.75;
pi_star=0.005;
beta=0.99;
phi=0.8;
omega=0.2;
tau=0.5;
%%%%%%%%%% steady state
n_star=1/3;
u_star=1;
mc_star = ((epsilon-1)/epsilon)*(((1+pi_star)^(1/(1-epsilon))-phi)/(1-phi))^(1/(1-epsilon));
R_star = delta_1;
k_star =(alpha*mc_star/R_star)^(1/(1-alpha));
pi_calvo_optimal =(((1+pi_star)^(1-epsilon)-phi)/(1-phi))^(1/(1-epsilon));
v_star=(1-phi)*(1+pi_star)^epsilon*(1+pi_calvo_optimal)^(-epsilon)/(1-phi*(1+pi_star)^epsilon);
c_star= ((1-omega)/v_star)*(k_star/n_star)^alpha*n_star-delta_0*k_star;
y_star = (c_star+delta_0*k_star)/(1-omega);
I_star = 0.8*y_star-c_star;
g_star = omega*y_star;
z_star = 1;
lambda_star =(1-beta*phi_c)/(c_star*(1-phi_c));
mu_star =lambda_star;
A_star =lambda_star*y_star*mc_star/(1-phi*beta*(1+pi_star)^epsilon);
D_star =lambda_star*y_star/(1-phi*beta*(1+pi_star)^(epsilon-1));
w_star =mc_star*(1-alpha)*(k_star/n_star)^alpha;
ii_star = (1+pi_star)/beta-1;
q_star=1;
% parameters for the shocks
rho_g=0.85;
sigma_u_g=0.1;
sigma_v_g4=0.1;
sigma_v_g8=0.1;
rho_ii=0.85;
phi_pi=1.5;
phi_y=0.5;
sigma_u_ii=0.1;
rho_z=0.5;
sigma_u_z=0.1;
sigma_v_z4=0.1;
sigma_v_z8=0.1;

model;
% (1) aggregate accunting identity;
y=c+I+g;
% (2) aggregate production function;
y=z*(u*k)^alpha*n^(1-alpha)/v;
% (3) aggregate price dispersion;
pi=((1-phi)*pi_calvo^(1-epsilon)+phi)^(1/(1-epsilon));
% (4) evolution of aggregate inflation;
v=(1-phi)*(pi_calvo)^(-epsilon)*pi^epsilon + phi*pi^epsilon*v(-1);
% (5) equation for reset price inflation;
pi_calvo=pi*(epsilon/(epsilon-1))*A/D;
% (6) from (5)
A = lambda*y*mc+phi*beta*(pi(+1)^epsilon)*A(+1);
% (7) from (5)
D = lambda*y+phi*beta*pi(+1)^(epsilon-1)*D(+1);
% (8) labor demand curve
w = mc*(1-alpha)*(u*k/n)^alpha;
% (9) capital demand curve
R = mc*alpha*(u*k/n)^(alpha-1);
% (10) F.O.C to c
lambda=(1/(c-phi_c*c(-1)))-(beta*phi_c/(c(+1)-phi_c*c));
% (11) F.O.C to n
lambda*n=(1-n)^(-epsilon);
% (12) F.O.C to u
lambda*R=mu*(delta_1+delta_2*(u-1));
% (13) F.O.C to B(+1)
lambda=beta*lambda(+1)*(1+ii(+1))/pi(+1);
% (14) F.O.C to k(+1)
mu=beta*(lambda(+1)*R(+1)*u(+1)+mu(+1)*(1-delta_0-delta_1*(u(+1)-1)-delta_2*(u(+1)-1)^2/2));
% (15) F.O.C to I
lambda=mu*(1-tau*(I/I(-1)-1)^2/2-tau*I*(I/I(-1)-1)/I(-1))+ beta*u(+1)*tau*(I(+1)/I-1)*(I(+1)/I)^2;
% (16) law of motion
k(+1)=(1-tau*(I/I(-1)-1)^2/2)*I + (1-delta_0-delta_1*(u-1)-delta_2*(u-1)^2/2)*k;
% (17)
q = mu/lambda;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Definition of shocks:
%  technology
z = rho_z*z(-1)+ u_z + ep_z4_1 +ep_z8_1;
% -- 4 lags;
ep_z4_1=ep_z4_2(-1);
ep_z4_2=ep_z4_3(-1);
ep_z4_3=ep_z4_4(-1);
ep_z4_4=v_z4;
% -- 8 lags;
ep_z8_1=ep_z8_2(-1);
ep_z8_2=ep_z8_3(-1);
ep_z8_3=ep_z8_4(-1);
ep_z8_4=ep_z8_5(-1);
ep_z8_5=ep_z8_6(-1);
ep_z8_6=ep_z8_7(-1);
ep_z8_7=ep_z8_8(-1);
ep_z8_8=v_z8;

% government spending:
g = (omega*y_star)+rho_g*g(-1)+ u_g + ep_g4_1 + ep_g8_1;
% if the codfficients are (1-rho_g), the process will be a random walk with drift.
% thus cancel the '1-rho_g' before (omega*y_star).
% -- 4 lags;
ep_g4_1=ep_g4_2(-1);
ep_g4_2=ep_g4_3(-1);
ep_g4_3=ep_g4_4(-1);
ep_g4_4=v_g4;
% -- 8 lags;
ep_g8_1=ep_g8_2(-1);
ep_g8_2=ep_g8_3(-1);
ep_g8_3=ep_g8_4(-1);
ep_g8_4=ep_g8_5(-1);
ep_g8_5=ep_g8_6(-1);
ep_g8_6=ep_g8_7(-1);
ep_g8_7=ep_g8_8(-1);
ep_g8_8=v_g8;

% monetary policy shock:
ii(+1)=rho_ii*ii+(1-rho_ii)*phi_pi*(pi-pi_star)+(1-rho_ii)*phi_y*(y/y(-1)-1)+u_ii;
end;

initval;
y=y_star;
c=c_star;
I=I_star;
g=g_star;
z=1;
u=1;
n=1/3;
k=k_star;
v=v_star;
pi=0.005;
pi_calvo=pi_calvo_optimal;
A=A_star;
D=D_star;
w=w_star;
mc=mc_star;
R=R_star;
lambda=0.0007;
mu=0.0007;
q=1;

% variables generated by the government spending shock:
g=0; u_g=0; ep_g4_1=0; ep_g4_2=0; ep_g4_3=0; ep_g4_4=0; ep_g8_1=0; ep_g8_2=0; ep_g8_3=0; ep_g8_4=0; ep_g8_5=0; ep_g8_6=0; ep_g8_7=0; ep_g8_8=0; 
% variables generated by the monetary policy shock;
ii=0;  
% variables generated by the neutral productivity shock:
z=0; u_z=0; ep_z4_1=0; ep_z4_2=0; ep_z4_3=0; ep_z4_4=0; ep_z8_1=0; ep_z8_2=0; ep_z8_3=0; ep_z8_4=0; ep_z8_5=0; ep_z8_6=0; ep_z8_7=0; ep_z8_8=0;
end;

resid;
steady;

shocks;
% government spending;
var u_g = sigma_u_g^2;
var v_g4 = sigma_v_g4^2;
var v_g8 = sigma_v_g8^2;
% monetary shock:
var u_ii = sigma_u_ii^2;
% neutral tech shock:
var u_z = sigma_u_z^2;
var v_z4 = sigma_v_z4^2;
var v_z8 = sigma_v_z8^2;
end;

check;

stoch_simul(periods=1000,irf=20);
