%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Econometrics 2
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% This code estimates the Euler equation of Hansen and Singelton using IV.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
clc
% Load the data.
load data % c is c(t)/c(t-1), re is the value weighted average return,
% rf is the T-bill rate.
T = size(c,1); % Number of observations.
x = [ones(T-1,1) rf(2:T)];
y = c(2:T);
z = [ones(T-1,1) c(1:T-1) re(1:T-1)]; % Instrument matrix.
pz = z*inv(z'*z)*z';
% IV Estimation.
b_iv = inv(x'*pz*x)*x'*pz*y;
u = y - x*b_iv;
s2 = (u'*u)/(T-size(x,2));
vcmat = s2*inv(x'*pz*x);
se = sqrt(diag(vcmat));
% Display the results.
fprintf('--------------------------------------------------------------\n')
fprintf('IV estimates. \n')
fprintf('--------------------------------------------------------------\n')
fprintf('\n')
fprintf(' b SE \n')
fprintf('b0 %0.4f %0.4f \n', b_iv(1), se(1))
fprintf('b1 %0.4f %0.4f \n', b_iv(2), se(2))