Fix bug in sim1_linear
sim1_linear.m
seems to return wrong results. The following mod-file calls different solvers in sequence, using the previous result as the respective starting value.
//Endogenous variables
var piV rV yV rrstarV zV Rshock;
//Exogenous variables
varexo epsFG shock epsR;
//Parameters
parameters alpha beta eta phipi phiy rho sig lambda; //
//Initialization of parameter values
beta =0.99; //Discount factor (=inverse nominal interest rate)
alpha =0.033; //sensivity of inflation to output gap, parameter determining marginal cost,
eta =1; //sensivity of inflation to output gap, parameter determining price rigidity
phipi =1.5; //parameter determining monetary reaction to inflation
phiy =0.125; //parameter determining monetary reaction to output
rho =0.9; //AR(1) natural rate
sig =1; //intertemporal rate of substitution
lambda=0.25; // prob. of new info arrival
//model equations
model;
// z Variable
zV = alpha*(yV-yV(-1))+piV;//(pV-pV(-1));
piV= (lambda*alpha/ (1-lambda)) *yV
+lambda*EXPECTATION(-1)(zV)
+lambda*(1-lambda)*EXPECTATION(-2)(zV)
+lambda*(1-lambda)^2*EXPECTATION(-3)(zV)
+lambda*(1-lambda)^3*EXPECTATION(-4)(zV)
+lambda*(1-lambda)^4*EXPECTATION(-5)(zV)
+lambda*(1-lambda)^5*EXPECTATION(-6)(zV)
+lambda*(1-lambda)^6*EXPECTATION(-7)(zV)
+lambda*(1-lambda)^7*EXPECTATION(-8)(zV)
+lambda*(1-lambda)^8*EXPECTATION(-9)(zV)
; //marginal cost is proportional to gap, gap is driver of inflation
//piV=0.99*piV(+1)+0.033*yV;
//IS curve (Output Euler) from Kiley code
yV = yV(+1)-sig*(rV-piV(+1) - rrstarV);
//monetary policy' reaction function
rV = min((1-shock), phipi*(piV(+1) + phiy*yV + epsFG));
//rV = phipi*piV + phiy*yV+Rshock;
Rshock=0.5*Rshock(-1)+epsR;
//Natural real interest rate
rrstarV = rho*rrstarV(-1);
end;
initval;
rV=0;
yV=0;
rrstarV=0;
piV=0;
zV=0;
end;
steady;
check;
shocks;
var shock;
periods 1:15;
values 1;
var epsFG;
periods 16 ;
values -0.0117;
end;
perfect_foresight_setup(periods=30);
perfect_foresight_solver(solve_algo=0);
nonlinear=oo_.endo_simul;
options_.linear=1;
perfect_foresight_solver(solve_algo=0);
linear=oo_.endo_simul;
perfect_foresight_solver(solve_algo=0);
options_.linear=0;
perfect_foresight_solver(solve_algo=0);
perfect_foresight_solver(solve_algo=4);
But the result of the nonlinear solvers has non-zero residuals in the linear solver and vice versa, while the nonlinear solvers seem to have consistent results.