% Modelo RMB 2014 - doutorado, v. 1.0
%
% Raphael M Barcelos
% Junho, 2014
% 
% Modelo base:
% Gali 2008, capítulo 3


%----------------------------------------------------------------
% 0. Preparativos
%----------------------------------------------------------------
%clear all;
close all;

%----------------------------------------------------------------
% 1. Definindo variáveis 
%----------------------------------------------------------------

var y 						% Produto da economia
	c						% Consumo das famílias
	n						% Horas trabalhadas	
   	w						% Salário nominal                       X
	p						% Preço                                 X
	i 						% Taxa de juro nominal
	pi						% Razão pt/pt+1
	a 						% PTF
	pstar					% Preço ótimo                           X
	m						% Demanda por moeda nominal
	yn 						% Produto natural
	rn						% Taxa natural de juro real
    v                       % Ruido regra de juros
    ytil                    % Desvio do produto natural
    rreal                   % Taxa real
;

varexo 
    epsilona
    epsilonv
;
parameters 
    sigma 
    phi 
    eta 
    alpha 
    theta 
    beta 
    phipi 
    phiy 
    rhoa 
    rhov
    eps
    rho
    thetao 
    lambda
    nuny 
    psinya
    kappa
    mizao
    mi
;



%----------------------------------------------------------------
% 2. Calibração
%----------------------------------------------------------------


sigma = 1.0;                        % Utilidade - consumo
phi = 1.0;                          % Utilidade - trabalho
eta = 4.0;                          % Demanda por moedda
alpha = 1/3;                        % Participação do trabalho na fç produção
theta = 2/3;                        % Prob de não reajustar
beta = 0.99;                        % Fator de desconto intertemporal
phipi = 1.5;                        % Peso a inflação
phiy = 0.5/4;                       % Peso ao produto
rhoa = 0.9;                         % Tecnologia
rhov = 0.5;                         % Política monetária
eps = 6;                            % Mark-up
mizao = eps/(eps - 1);
mi = log(mizao);
rho = - log(beta);                  % Euler
thetao = (1 - alpha)/(1 - alpha + alpha*eps);
lambda = (((1-theta)*(1-beta*theta))/theta)*thetao;
nuny = - ((1 - alpha)*(mi - log(1 - alpha)))/(sigma*(1-alpha) + phi + alpha);
psinya = (1 + phi)/(sigma*(1 - alpha) + phi + alpha);
kappa = lambda*(sigma+(phi+alpha)/(1 - alpha));

%----------------------------------------------------------------
% 3. Model
%----------------------------------------------------------------

model(linear);
% Processos envolvendo ruidos-brancos
a = rhoa*a(-1) + epsilona;                          % Processo AR1 de a
v = rhov*v(-1) + epsilonv;                          % Processo AR1 de v

% Familias
w - p = sigma*c + phi*n;                            % Oferta de trabalho    X
m - p = y - eta*i;

% Firmas
y = a + (1 - alpha)*n;                              % Função de produção	
pi = (1 - theta)*(pstar - p(-1));                   % Formação de preços  X

% Autoridade monetária
i = rho + phipi*pi + phiy*ytil + v;                 % Regra de juros

% Equilibrio
y = c;                                              % Oferta igual a demanda X
yn = psinya*a + nuny;                               % Produto natural
pi = beta*pi(+1) + kappa*ytil;                      % Curva de Phillips
ytil = - (1/sigma)*(i - pi(+1) - rn) + ytil(+1);    % Curva IS
rn = rho + sigma*psinya*(a(+1)-a);                   % Taxa de juros natural
ytil = y - yn;                                      % Desvio do produto natural


% Eqs auxiliares
rreal = i - pi(+1);                                  % Taxa de juros real
pi = p(+1) - p;                                     % Taxa de inflação





end;

%----------------------------------------------------------------
% 4. Valores iniciais ou estado estacionário
%----------------------------------------------------------------

initval;
    y = nuny;						
	c = nuny;						
	n = y/(1 - alpha);					
   	w = 1 + sigma*nuny + phi*n;						
	p = 1;
	i = rho; 						
	pi = 0;						
	a = 0;						
	pstar = 1;					
	m = 1 + nuny - eta*rho;						
	yn = nuny;						
	rn = rho;						
    v = 0;                      
    ytil = 0;
    rreal = rho;

end;

%----------------------------------------------------------------
% 5. Choques
%----------------------------------------------------------------

shocks;
    var epsilonv = (0.25/4);
end;

%----------------------------------------------------------------
% 6. Computação
%----------------------------------------------------------------
steady;
check;
stoch_simul(order=1, periods=500, irf=100);

