var g z c h iv la mc output pai ptil  u w x1 x2 s k r  rb l taud tau Rf d  ;
 
varexo e_g e_z e_r;
 
parameters DELTA SIGMA GAMA BETTA THETA ALFA ETA CHI GBAR RHOG RHOZ ALFA_PAI ALFA_Y ALFA_R RBAR PAIBAR OUTPUTBAR  TAUBAR phi_N phi_b;


DELTA = .025; 
SIGMA = 0.5;  
GAMA = 0.6; 
BETTA = .99; 
THETA = 0.36; 
ALFA = 0.8; 
ETA = 5;  
CHI = 0.21;  
GBAR = .1712; 
RHOG = 0.87; 
RHOZ = 0.8556;  
ALFA_R = .84; 
ALFA_PAI = 1.9; 
ALFA_Y = .02; 
PAIBAR = 1.00278;
RBAR = PAIBAR/BETTA; 
OUTPUTBAR = 1.58456;
TAUBAR = 0.185088;
phi_N=1.0; % Percentage of nominal bonds
phi_b = 0.0; % % Percentage of  bonds linked to the economy’s basic interest rate  


model;
 
//cpo

 
- (k) + (iv)  + (k(-1))*(1 - DELTA )=0; 
1/((c)^SIGMA*(1 - (h))^(GAMA*(SIGMA - 1))) + (-1)*(la)=0;
(w)*(1 - taud) + (GAMA*(c))/((h) - 1)=0; % Ok
- (la) - BETTA*(la(+1))*((u(+1))*(- 1 + taud(+1)) +(DELTA - 1)+ DELTA*(-1)*taud(+1))=0; % Ok
(w)*(-1) - (mc)*(z)*((k(-1))/(h))^THETA*(THETA - 1)=0;
THETA * (mc)*(z)*((k(-1))/(h))^(THETA - 1) - (u)=0;
ALFA*(pai)^(ETA - 1) - (ptil)^(1 - ETA)*(ALFA - 1) - 1=0;%9
(x1) - ((mc)*(output))/(ptil)^(ETA + 1) - (ALFA*BETTA*(la(+1))*(x1(+1))*(pai(+1))^ETA)/((la)*((ptil)/(ptil(+1)))^(ETA + 1))=0;%10
(output)/(ptil)^ETA - (x2) + (ALFA*BETTA*(la(+1))*(x2(+1))*(pai(+1))^(ETA - 1))/((la)*((ptil)/(ptil(+1)))^ETA)=0;%11
(x2) - (ETA*(x1))/(ETA - 1)=0;
(z)*(h)^(1 - THETA)*(k(-1))^THETA - (output)*(s) - CHI=0; 
(output) - (g) - (iv) - (c)=0;
(s) + (ALFA - 1)/(ptil)^ETA - ALFA*(s(-1))*(pai)^ETA=0;%15 Arruma SS
tau = taud*output;
0=phi_N*(-l+(r/pai)*l(-1)+(r)*(g-tau))+ (1 - phi_N - phi_b)*(-l+rb/(1  - 0.10*pai)*l(-1) +(rb)*(g-tau))+ phi_b*(-l+(Rf/pai(-1))*l(-1)+(Rf)*(g-tau));
(tau - TAUBAR)=0.21*(l(-1)-STEADY_STATE(l));%17
(BETTA*(la(+1)*rb)) -(la)*(1 - 0.10*pai(+1)) = 0;
(BETTA*(la(+1))*((r))/(pai(+1))) -(la)=0;
(BETTA*(la(+1))*((Rf))/(pai)) -(la)=0;
-(1 + d) + pai/pai(+1) = 0;


// shocks exogenous 
log(g/GBAR) - RHOG*log(g(-1)/GBAR) - e_g =0;
log(z) - RHOZ*log(z(-1)) - e_z =0;


//taylor
log(r/RBAR) = ALFA_R * log(r(-1)/RBAR) + ALFA_PAI * log(pai/PAIBAR) + ALFA_Y * log(output/OUTPUTBAR)+ e_r;

end;  

write_latex_dynamic_model;

initval;
l=1.3915; 
taud=0.1168;  
r = RBAR;
u = .0364; 
pai = PAIBAR; 
ptil = 1.01148; 
s = 1.00042; 
g = .1712;  
mc = .800145;
w = 1.6384;
h = .56109; 
c = 1.0585;
k = 14.1921;
iv = 0.354803; 
la = 0.75; 
output = 1.5845;  
x1 = 6.01177;
x2 = 7.5147; 
z = 1; 
rb=1/BETTA;
Rf = PAIBAR/BETTA; 
d = 0;
tau = TAUBAR;


end;


resid;
steady;

phi_Ns = [0 0.33 0.66 1];
for j=1:length(phi_Ns);
phi_N = phi_Ns(j);


check;
 
shocks;
var e_g =0.02;
var e_z =0.0;
var e_r =0;
end;
 
  
stoch_simul (nograph,noprint,nomoments,hp_filter=1600,periods=2100,irf=20);

%stoch_simul (noprint,nomoments, order=2,irf=20);


hold on
%plot(oo_.irfs.l_e_g(1,1:20),'DisplayName','oo_.irfs.l_e_g(1,1:20)','YDataSource','oo_.irfs.l_e_g(1,1:40)');figure(gcf) % Esse é o comando que faz como que só o gráfico de "l" está mostrando as outras composições.


%oo_.irfs.l_STD_EPSG
%/*



irfsyg(1:20,j)=oo_.irfs.output_e_g;
irfscg(1:20,j)=oo_.irfs.c_e_g;
irfsig(1:20,j)=oo_.irfs.iv_e_g;
irfspaig(1:20,j)=oo_.irfs.pai_e_g;
irfsrg(1:20,j)=oo_.irfs.r_e_g; % Taxa de Juros da economia é o "r"
irfsrfg(1:20)=oo_.irfs.Rf_e_g; // nova
irfskg(1:20,j)=oo_.irfs.k_e_g;
irfslg(1:20,j)=oo_.irfs.l_e_g;
irfstaudg(1:20,j)=oo_.irfs.taud_e_g; 
irfsrbg(1:20,j)=oo_.irfs.rb_e_g;
irfswg(1:20,j)=oo_.irfs.w_e_g;
irfsgg(1:20,j)=oo_.irfs.g_e_g;
irfstaug(1:20)=oo_.irfs.tau_e_g; // nova 
irfsdg(1:20)=oo_.irfs.d_e_g; // nova
/*

irfsyz(1:20,j)=oo_.irfs.output_e_z;
irfscz(1:20,j)=oo_.irfs.c_e_z;
irfsiz(1:20,j)=oo_.irfs.iv_e_z;
irfspaiz(1:20,j)=oo_.irfs.pai_e_z;
irfsrz(1:20,j)=oo_.irfs.r_e_z;
irfsrfz(1:20,j)=oo_.irfs.Rf_e_z; // nova
irfskz(1:20,j)=oo_.irfs.k_e_z;
irfslz(1:20,j)=oo_.irfs.l_e_z;
irfstaudz(1:20,j)=oo_.irfs.taud_e_z;
irfszz(1:20,j)=oo_.irfs.z_e_z;
irfstauz(1:20,j)=oo_.irfs.tau_e_z; // nova 
irfsdz(1:20,j)=oo_.irfs.d_e_z; // nova 



irfsyr(1:20,j)=oo_.irfs.output_e_r;
irfscr(1:20,j)=oo_.irfs.c_e_r;
irfsir(1:20,j)=oo_.irfs.iv_e_r;
irfspair(1:20,j)=oo_.irfs.pai_e_r;
irfsrr(1:20,j)=oo_.irfs.r_e_r;
irfsrfr(1:20,j)=oo_.irfs.Rf_e_r; // nova
irfskr(1:20,j)=oo_.irfs.k_e_r;
irfslr(1:20,j)=oo_.irfs.l_e_r;
irfstaudr(1:20,j)=oo_.irfs.taud_e_r;
irfstaur(1:20,j)=oo_.irfs.tau_e_r; // nova 
irfsdr(1:20,j)=oo_.irfs.d_e_r; // nova 

*/

end;
figure('Name','Fiscal Chock','NumberTitle','off')

subplot(3,3,1),plot(irfsyg,'DisplayName','irfscg','YDataSource','irfscg'),title('Output');
subplot(3,3,2),plot(irfscg,'DisplayName','irfscg','YDataSource','irfscg'),title('Consumption');
subplot(3,3,3),plot(irfsig,'DisplayName','irfscg','YDataSource','irfscg'),title('Investiment');
subplot(3,3,4),plot(irfspaig,'DisplayName','irfscg','YDataSource','irfscg'),title('Inflation');
subplot(3,3,5),plot(irfsrg,'DisplayName','irfscg','YDataSource','irfscg'),title('Interest Rate');
subplot(3,3,6),plot(irfskg,'DisplayName','irfscg','YDataSource','irfscg'),title('Capital');
subplot(3,3,7),plot(irfslg,'DisplayName','irfscg','YDataSource','irfscg'),title('Debt');
subplot(3,3,8),plot(irfstaudg,'DisplayName','irfscg','YDataSource','irfscg'),title('Tax');
subplot(3,3,9),plot(irfsgg,'DisplayName','irfscg','YDataSource','irfscg'),title('Fiscal Chock');

legend('Indexed to Inflation','33% Nom','66% Nom','Nominal')




