1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
var labobs robs pinfobs dy dc dinve dw eta_w_ma eta_p_ma zcapf rkf kf pkf cf invef yf labf wf rrf mc zcap rk k_s q c i y l pinf w r eps_a eps_b eps_g eps_i eps_r eps_p eps_w kpf k;
varexo eta_a eta_b eta_g eta_i eta_r eta_p eta_w;
parameters curv_w rho_ga curv_p l_bar pi_bar beta_const Mu_w Mu_p alpha psi phi delta sigma_c lambda phi_p iota_w xi_w iota_p xi_p sigma_l phi_w r_pi r_dy r_y rho
rho_a rho_b rho_g rho_i rho_r rho_p rho_w gamma_bar G;
delta = 0.025;
phi_w = 1.5;
G = 0.18;
curv_p = 10;
curv_w = 10;
phi = 6.3325;
sigma_c = 1.2312;
lambda = 0.7205;
xi_w = 0.7937;
sigma_l = 2.8401;
xi_p = 0.7813;
iota_w = 0.4425;
iota_p = 0.3291;
psi = 0.2648;
phi_p = 1.4672;
r_pi = 1.7985;
rho = 0.8258;
r_y = 0.0893;
r_dy = 0.2239;
pi_bar = 0.7;
beta_const = 0.7420;
l_bar = 1.2918;
gamma_bar = 0.3982;
alpha = 0.24;
rho_a = .9676;
rho_b = .2703;
rho_g = .9930;
rho_i = .5724;
rho_r = .3;
rho_p = .8692;
rho_w = .9546;
Mu_p = .7652;
Mu_w = .8936;
rho_ga = 0.05;
model;
# PI_star = 1 + pi_bar/100;
# gamma = 1 + gamma_bar/100 ;
# beta = 1/(1 + beta_const/100);
# beta_bar = beta*gamma^(-sigma_c);
# Rk = (beta^(-1)) * (gamma^sigma_c) - (1-delta);
# W = (alpha^alpha*(1-alpha)^(1-alpha)/(phi_p*Rk^alpha))^(1/(1-alpha));
# I_K_bar = (1-(1-delta)/gamma);
# I_K = (1-(1-delta)/gamma)*gamma;
# L_K = ((1-alpha)/alpha)*(Rk/W);
# K_Y = phi_p*(L_K)^(alpha-1);
# I_Y = I_K * K_Y;
# C_Y = 1 - G - I_K*K_Y;
# Z_Y = Rk*K_Y;
# WL_C = (1/phi_w)*(1-alpha)/alpha*Rk*K_Y/C_Y;
# r_bar=((PI_star/(beta*gamma^(-sigma_c)))-1)*100;
eps_a = alpha * rkf + (1-alpha)*wf;
zcapf = (1/(psi/(1-psi))) * rkf;
rkf = (wf)+labf-kf;
kf = kpf(-1) + zcapf;
invef = (1/(1+beta_bar*gamma))*(invef(-1) + beta_bar*gamma*invef(1)+(1/(gamma^2*phi))*pkf) + eps_i;
pkf = ((1-delta)/(Rk+(1-delta))) * pkf(+1) + (Rk/(Rk+(1-delta))) * rkf(+1) + (-rrf) + (1/((1-lambda/gamma)/(sigma_c*(1+lambda/gamma)))) * eps_b ;
cf = (lambda/gamma)/(1+lambda/gamma)*cf(-1) + (1/(1+lambda/gamma))*cf(+1) +((sigma_c-1)*WL_C/(sigma_c*(1+lambda/gamma)))*(labf-labf(+1)) - (1-lambda/gamma)/(sigma_c*(1+lambda/gamma))*(rrf+0*eps_b) + eps_b ;
yf = C_Y*cf+I_Y*invef+eps_g + Z_Y*zcapf;
yf = phi_p*( alpha*kf+(1-alpha)*labf +eps_a );
wf = sigma_l*labf +(1/(1-lambda/gamma))*cf - (lambda/gamma)/(1-lambda/gamma)*cf(-1) ;
kpf = (1-I_K_bar)*kpf(-1)+(I_K_bar)*invef + (I_K_bar)*(gamma^2*phi)*eps_i ;
mc = alpha*rk + (1-alpha)*w - eps_a;
zcap = ((1 - psi)/psi) * rk;
rk = w + l - k_s;
k_s = k(-1) + zcap;
i = (1/(1 + beta_bar*gamma)) * (i(-1) + (beta_bar * gamma) * i(1) + (1/(gamma^2*phi)) * q) + eps_i;
q = ((1-delta)/(Rk+(1-delta)))*q(1) + (Rk/(Rk+(1-delta))) * rk(1) - r + pinf(+1) + (1/((1-lambda/gamma)/(sigma_c*(1+lambda/gamma)))) * eps_b ;
c = (lambda/gamma)/(1+lambda/gamma) * c(-1) + (1/(1+lambda/gamma)) * c(+1) + ((sigma_c-1)*WL_C/(sigma_c*(1+lambda/gamma))) * (l - l(+1)) - (1-lambda/gamma)/(sigma_c*(1+lambda/gamma)) * (r - pinf(+1)) + eps_b;
y = C_Y * c + I_Y * i + eps_g + Z_Y * zcap;
y = phi_p * (alpha * k_s + (1-alpha) * l + eps_a);
pinf = (1/(1+beta_bar*gamma*iota_p)) * (beta_bar*gamma*pinf(+1) + iota_p * pinf(-1) + ((1-xi_p)*(1-beta_bar*gamma*xi_p)/xi_p)/((phi_p-1)*curv_p+1) * mc) + eps_p ;
w = (1/(1+beta_bar*gamma))*w(-1)
+(beta_bar*gamma/(1+beta_bar*gamma))*w(1)
+(iota_w/(1+beta_bar*gamma))*pinf(-1)
-(1+beta_bar*gamma*iota_w)/(1+beta_bar*gamma)*pinf
+(beta_bar*gamma)/(1+beta_bar*gamma)*pinf(1)
+(1-xi_w)*(1-beta_bar*gamma*xi_w)/((1+beta_bar*gamma)*xi_w)*(1/((phi_w-1)*curv_w+1))*
(sigma_l*l + (1/(1-lambda/gamma))*c - ((lambda/gamma)/(1-lambda/gamma))*c(-1) -w)
+ 1*eps_w ;
r = r_pi * (1-rho) * pinf + r_y * (1-rho) * (y-yf) + r_dy * ( y - yf - (y(-1) - yf(-1))) + rho * r(-1) + eps_r;
eps_a = rho_a * eps_a(-1) + eta_a;
eps_b = rho_b * eps_b(-1) + eta_b;
eps_g = rho_g * eps_g(-1) + eta_g + rho_ga * eta_a;
eps_i = rho_i * eps_i(-1) + eta_i;
eps_r = rho_r * eps_r(-1) + eta_r;
eps_p = rho_p * eps_p(-1) + eta_p_ma - Mu_p * eta_p_ma(-1);
eta_p_ma = eta_p;
eps_w = rho_w * eps_w(-1) + eta_w_ma - Mu_w * eta_w_ma(-1);
eta_w_ma = eta_w;
k = (1-I_K_bar) * k(-1) + I_K_bar * i + I_K_bar*gamma^2*phi*eps_i;
dy = y - y(-1) + gamma_bar;
dc = c - c(-1) + gamma_bar;
dinve = i - i(-1) + gamma_bar;
dw = w - w(-1) + gamma_bar;
pinfobs = pinf + pi_bar;
robs = r + r_bar;
labobs = l + l_bar;
end;
shocks;
var eta_a;
periods 100;
values -.5;
end;
steady;
check;
perfect_foresight_setup(periods=300);
perfect_foresight_solver;
endo_simul_0 = oo_.endo_simul;
if ~oo_.deterministic_simulation.status
error('Perfect foresight simulation failed')
end
perfect_foresight_setup(periods=300);
perfect_foresight_solver(linear_approximation, stack_solve_algo=7);
endo_simul_1 = oo_.endo_simul;
if ~oo_.deterministic_simulation.status
error('Perfect foresight simulation failed')
end
if max(abs(endo_simul_0(:)-endo_simul_1(:)))>.01*options_.dynatol.f
error('Something is wrong!')
end
// Test stack_solve_algo=0+linear_approximation, which uses a different codepath than stack_solve_algo=7
perfect_foresight_setup(periods=300);
perfect_foresight_solver(linear_approximation, stack_solve_algo=0);
endo_simul_2 = oo_.endo_simul;
if ~oo_.deterministic_simulation.status
error('Perfect foresight simulation failed')
end
if max(abs(endo_simul_0(:)-endo_simul_2(:)))>.01*options_.dynatol.f
error('Something is wrong!')
end
|