% RBC model - log linearized: sub out w & r
% J. Cross, 2016 

close all; clc;

%----------------------------------------------------------------
% 1. Preamble
%----------------------------------------------------------------
var Y C I K L Z eps_A;
predetermined_variables K;
varexo u;
parameters beta sigmaL delta alpha rho sigma_A
           Yss Css Iss Kss Lss Zss;

%----------------------------------------------------------------
% 2. Calibration
%----------------------------------------------------------------

% Parameters
beta = 0.99;
sigmaL = 1.75;
delta = 0.02;
alpha = 0.33;
sigma_A = 1;
rho = 0.95;

% Steady state
Lss = 0.3;
Kss	= Lss*(alpha/(1/beta - 1 + delta))^(1/(1-alpha));
Yss = Kss^alpha * Lss^(1-alpha);
Iss = delta*Kss;
Css = Yss - Iss;
Zss = 1 - Lss;

%----------------------------------------------------------------
% 3. Model
%----------------------------------------------------------------

model(linear); 
%% Resource constraints
    % 2 sector economy
    Yss*Y = Css*C + Iss*I;
    % Time
    Lss*L + Zss*Z = 0;
%% Household Equations:
    % Euler consumption
    C = C(+1) - beta*(1/beta - 1 + delta)*(eps_A(+1) + (alpha-1)*K(+1) + (1-alpha)*L(+1) + 1);
    % Labor Supply
    Z = C - eps_A - alpha*K + alpha*L;
    % capital accumulation
    K(+1) = (1-delta)*K + delta*I;

%% Firms
    % Cobb-Douglas Production
    Y = eps_A + alpha*K + (1-alpha)*L;

%% Shocks
eps_A = rho*eps_A(-1) + u;

end;

initval;
K = Kss;
C = Css;
L = Lss;
I = Iss;
Z = Zss;
eps_A = 0;
end;

check;
steady;

%----------------------------------------------------------------
% 4. Shocks
%----------------------------------------------------------------
shocks;
var u = sigma_A^2;
end;

%----------------------------------------------------------------
% 5. Computation
%----------------------------------------------------------------
stoch_simul(order=1,irf=100) Y C I K L Z; 