-
Notifications
You must be signed in to change notification settings - Fork 386
/
Copy pathGali_2010.mod
266 lines (226 loc) · 12 KB
/
Gali_2010.mod
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
/*
* This file implements the baseline sticky wage model of Jordi Galí (2010): Monetary Policy and Unemployment,
* Handbook of Monetary Economics, Volume 3A, Chapter 10, pp. 487-546
*
* Special thanks go to Jordi Gali for providing his original codes, which allowed to clarify important calibration questions.
*
* Notes:
* 1. While the figures in the paper can be replicated, they are strictly speaking not consistent with the stated calibration
* targets:
* a) p. 516 states that Theta=0.0014. But Theta is in principle chosen to satisfy the calibration targets given
* - labor share S_n=2/3
* - share of hiring costs to wage (W_div_PG)^-1=0.045
* Taking the formula at face value, Theta would need to satisfy
* Theta=delta*N*G/Y=delta*W/P/(W/P)*N/Y*G=delta*(W/(PG))^-1*S_n=0.12*0.045*2/3=0.0036
* The present mod-file uses Theta=0.0014.
* b) The calibration treats the labor share S_n as a free parameter in Theta, while it is endogenous to the
* model calibration as S_n=W/P*N/Y. But the above expansion of Theta relies on the actual labor share.
* Thus, when continuing the model calibration under the false pretense that in the model W/P*N/Y is
* actually equal to S_n=2/3, the resulting ratio of hiring costs to GDP in the model
* is 0.018 instead of 0.045.
* 2. On page 510, Upsilon is defined as the coefficient in front of the MRS and is used that
* way when defining the slope of the New Keynesian Phillips Curve lambda_w. But in the Appendix on p. 542,
* (1-Upsilon) instead of Upsilon denotes the coefficient on the MRS. For consistency, the formulation in
* the main text is used.
* 3. Equation (38) should have big Phi instead of phi after (1-Upsilon)
* 4. The definition of the unemployment rate on p. 541
* urhat=fhat-nhat;
* involves an approximation error. The unemployment rate is defined as UR_t=U_t/F_t=(F_t-N_t)/U_t
* A first order Taylor approximation and expanding the RHS variables by their steady state yields
* ur_t=U/F*u_hat_t-U/F*f_hat_t
* where ur_t is the absolute deviation of the unemployment rate from its steady state and therefore
* in percentage points. Using the definition of the loglinearized labor force we have
* U/F*u_hat_t=f_hat_t-N/F*n_hat_t
* this can be written as
* ur_t=f_hat_t-N/F*n_hat_t-U/F*f_hat_t=N/F*f_hat_t-N/F*n_hat_t
* As N/F is very close to 1, this is approximately
* urhat=uhat-fhat
* which is the equation used in Gali. Here, we use full
* ur_t=U/F*u_hat_t-U/F*f_hat_t
* 5. p. 516: in the definition of delta, it should be x/(1-x)*U/N, i.e. the brackets are missing
*
* THIS MOD-FILE REQUIRES DYNARE 4.6 OR HIGHER
*
* This implementation was written by Lahcen Bounader and Johannes Pfeifer. In case you spot mistakes,
* email Johannes Pfeifer at jpfeifer@gmx.de
*
* Please note that the following copyright notice only applies to this Dynare
* implementation of the model.
*/
/*
* Copyright (C) 2016 Lahcen Bounader and Johannes Pfeifer
*
* This is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* It is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a copy of the GNU General Public License,
* see <http://www.gnu.org/licenses/>.
*/
%--------------------------------------------------------------------------
% Endogenous Varibales
%--------------------------------------------------------------------------
@#define low_psi_calibration=0
var y_gap ${\hat y}$ (long_name='output')
chat ${\hat c}$ (long_name='consumption')
rhat ${\hat r}$ (long_name='real interest rate')
ihat ${\hat i}$ (long_name='nominal interest rate')
nhat ${\hat n}$ (long_name='employment')
lhat ${\hat l}$ (long_name='labor effort')
fhat ${\hat f}$ (long_name='labor force')
uhat ${\hat u}$ (long_name='unemployment')
uhat_0 ${\hat u^0}$ (long_name='unemployment in the begining of the period')
urhat ${\hat {ur}}$ (long_name='unemployment rate')
urhat_Gali ${\hat {ur_{gali}}}$ (long_name='unemployment rate')
xhat ${\hat x}$ (long_name='job finding rate')
ghat ${\hat g}$ (long_name='cost of hiring')
hhat ${\hat h}$ (long_name='new hiring')
mu_hat ${\hat \mu^p}$ (long_name='markup')
hatw_real ${\hat \omega}$ (long_name='real wage')
bhat ${\hat b}$ (long_name='composite auxiliary variable')
hatw_tar ${\hat \omega^{tar}}$ (long_name='targeted wage (wage under Nash bargaining without rigidities)')
a ${a}$ (long_name='technology shock process')
pi_w ${\pi^w}$ (long_name='wage inflation')
pi_p ${\pi^p}$ (long_name='price inflation')
nu ${\nu}$ (long_name='monetary policy shock')
;
%--------------------------------------------------------------------------
% Exogenous Variables
%--------------------------------------------------------------------------
varexo eps_a ${\varepsilon_a}$ (long_name='technology shock')
eps_nu ${\varepsilon_\nu}$ (long_name='monetary policy shock')
;
%--------------------------------------------------------------------------
% Declaration of Parameters
%--------------------------------------------------------------------------
parameters
alfa ${\alpha}$ (long_name='exponent of labor in the production function')
delta ${\delta}$ (long_name='separation rate')
gammma ${\gamma}$ (long_name='coefficient of hiring cost function')
psi ${\psi}$ (long_name='coefficient of unemployment in the labor market effort')
betta ${\beta}$ (long_name='discount rate')
rho_a ${\rho_a}$ (long_name='autocorrelation technology shock')
rho_nu ${\rho_\nu}$ (long_name='autocorrelation technology shock')
varphi ${\varphi}$ (long_name='Frisch elasticity of labor effort')
xi ${\xi}$ (long_name='bargaining power of workers/firms coeff')
theta_w ${\theta_w}$ (long_name='wage rigidities')
theta_p ${\theta_p}$ (long_name='price rigidities')
phi_pi ${\phi_{\pi}}$ (long_name='Taylor rule coeff of inflation')
phi_y ${\phi_y}$ (long_name='Taylor rule coeff of output gap')
Gamma ${\Gamma}$ (long_name='proportionality coefficient hiring cost, p. 499 bottom')
Theta ${\Theta}$ (long_name='share of hiring costs to GDP, p.516')
Upsilon ${\Upsilon}$ (long_name='Composite parameter, eq. (35), p.510')
Phi ${\Phi}$ (long_name='share of hiring costs to hiring costs plus wage, eq. (13)')
Xi ${\Xi}$ (long_name='Coefficient optimal participation condition, bottom p. 541')
chi ${\chi}$ (long_name='labor disutility parameter')
N ${N}$ (long_name='employment rate')
U ${U}$ (long_name='unemployment rate')
F ${F}$ (long_name='definition labor force, p. 516')
L ${L}$ (long_name='labor in utility function, eq. (52)')
x ${x}$ (long_name='steady state job finding rate')
;
%--------------------------------------------------------------------------
%PARAMETRIZATION
%--------------------------------------------------------------------------
N=0.59; %p. 515
U=0.03; %p. 515
F=0; %set in steady state file to be consistent with N and U
x=0.7;
alfa=1/3; %p. 515
betta=0.99; %p. 515
varphi=5; %p. 515
theta_w=0.75; %p. 515
theta_p=0.75; %p. 515
gammma=1; %p. 515
Theta=0.0014; %p. 515; in principle set to satisfy calibration target, see Header
@#if low_psi_calibration==0
xi=0.5; %p. 515
psi=0; %set in steady state file to satisfy calibration target
chi=0; %set in steady state file to satisfy calibration target
@#else
xi=0.05; %p. 515
psi=0; %set in steady state file to satisfy calibration target
chi=0; %set in steady state file to satisfy calibration target
@#endif
phi_pi=1.5; %p. 521
phi_y=0.5/4; %p. 516
rho_a=0.9; %p. 517
rho_nu=0.5; %p. 517
Upsilon=0; %set in steady state file to satisfy calibration target
Phi=0; %set in steady state file to satisfy calibration target
Xi=0; %set in steady state file to satisfy calibration target
%--------------------------------------------------------------------------
%MODEL
%--------------------------------------------------------------------------
model;
//Slope of PC, p. 498 below equation (9)
#lambda_p=(1-theta_p)*(1-betta*theta_p)/theta_p;
//Slope of Wage PC, p. 511 below equation (40)
#lambda_w=(1-betta*(1-delta)*theta_w)*(1-theta_w)/(theta_w*(1-(1-Upsilon)*(1-Phi)));
[name='1. Goods Market Clearing Equations']
y_gap=(1-Theta)*chat+Theta*(ghat+hhat);
[name='2. Aggregate production function']
y_gap=a+(1-alfa)*nhat;
[name='3. Aggregate hiring and employment']
delta*hhat=nhat-(1-delta)*nhat(-1);
[name='4. Hiring Cost']
ghat=gammma*xhat;
[name='5. Job finding rate']
xhat=hhat-uhat_0;
[name='6. Effective market effort']
lhat=(N/L)*nhat+(psi*U/L)*uhat;
[name='7. Labor Force']
fhat=(N/F)*nhat+(U/F)*uhat;
[name='8. Unemployment']
uhat=uhat_0-(x/(1-x))*xhat;
[name='9. Unemployment rate']
urhat=U/F*uhat-U/F*fhat;
urhat_Gali=fhat-nhat;
[name='10. Euler equation']
chat=chat(+1)-rhat;
[name='11. Fisherian equation']
rhat=ihat-pi_p(+1);
[name='12. Inflation equation']
pi_p=betta*pi_p(+1)-lambda_p*mu_hat;
[name='13. Optimal Hiring Condition 1']
alfa*nhat=a-((1-Phi)*hatw_real+Phi*bhat)-mu_hat;
[name='14. defintion of bhat']
bhat=(1/(1-betta*(1-delta)))*ghat-(betta*(1-delta)/(1-betta*(1-delta)))*(ghat(+1)-rhat);
[name='15. Optimal participation condition']
chat+varphi*lhat=(1/(1-x))*xhat+ghat-Xi*pi_w;
[name='16. Evolution real wage']
hatw_real=hatw_real(-1)+pi_w-pi_p;
[name='17. Wage Phillips Curve']
pi_w=betta*(1-delta)*pi_w(+1)-lambda_w*(hatw_real-hatw_tar);
[name='18. Target inflation']
hatw_tar=Upsilon*(chat+varphi*lhat)+(1-Upsilon)*(-mu_hat+a-alfa*nhat);
[name='19. Interest rate rule']
ihat=phi_pi*pi_p+phi_y*y_gap+nu;
[name='19. Monetary policy shock']
nu=rho_nu*nu(-1)+eps_nu;
[name='20. Definition of technology process']
a=rho_a*a(-1)+eps_a;
% 21. 22. Efficiency Conditions']
%log(a)-alfa*nhat=(1-Omega)*(chat+varphi*lhat)+Omega*bhat;
%chat+varphi*lhat=(1/(1-0.7))*xhat+ghat;
end;
resid;
check;
shocks;
var eps_nu=0.25^2; //1 standard deviation shock of 25 basis points, i.e. 1 percentage point annualized
var eps_a= 1^2;
end;
write_latex_parameter_table;
write_latex_dynamic_model;
write_latex_definitions;
collect_latex_files;
%----------------------------------------------------------------
% generate IRFs for monetary policy shock, replicates Figures 2A+B/3A+B
%----------------------------------------------------------------
stoch_simul(order = 1,irf=12) y_gap urhat nhat fhat pi_p hatw_real;