which is used to make the results in Devereux and Yetman (2014, JIMF), "Globalisation, pass-through and the optimal policy response to exchange rates".
More precisely, according to the paper, all results are obtained by the solution using the "optimal simple rules" routine in Dynare, and using the "Ramsey policy" routine.
In my understanding, the first routine solves with an linear quadratic objective function
that especially takes a form of the sum of variances of inflation, output growth and exchange rate changes (for small open economy).
And the second one solves with a specific welfare function, such as a welfare function.
Since the paper I mentioned above provides log linearized approximation conditions of the model in the appendix,
I decided to reproduce some results of the paper, especially results from using optimal simple routine.
However, unfortunately, the paper does not provides the form of quadratic objective function,
I simply takes the following objective function.
lambda1 * var(pi_t) + lambda2*var(dy_t) + lambda3*var(de_t)
where dy_t is output growth (dy_t = y_t - y_t-1) and de_t is exchange rate changes (de_t = e_t - e_t-1).
Also, following the parameterization of the paper, I coded to optimize three policy objectives, xii, xii_s, gammaa and chii.
where xi : coefficients on inflation in domestic country's Taylor rule
xii_s : coefficients on inflation in foreign country's Taylor rule
gammaa : coefficients on exchange rate changes in domestic country's Taylor rule.
chii : coefficients on exchange rate changes in domestic country's sterilization policy rule.
Therefore, the program is as follows.
- Code: Select all
// Version 4 : Risk Premium + Portfolio Adjustment Cost
// Endogenous Variables
var
y_t // % (1)
c_t // % (2)
c_st // % (3)
tau_t // % (4)
d_t // % (5)
y_st // % (6)
fr_t // % (7)
pih_t // % (8)
u_st // % (9)
a_t // % (10)
u_t // % (11)
pih_st // % (12)
a_st // % (13)
pif_t // % (14)
pif_st // % (15)
pif_tt // % (16)
pih_stt // % (17)
s_t // % (18)
ds_t // % (19)
pi_t // % (20)
dy_t // % (21)
;
// Exogenous variables
varexo
eps_a % technology shock
eps_as % monetary policy shock
eps_u % foreign inflation shock
eps_us % foreign interest shock
;
// Parameters
parameters
sigmaa
nuu
deltaa
lambdaa
chii
betaa
kappa
phii
xii
xii_s
gammaa
;
sigmaa = 2.0 ;
nuu = 1.5 ;
deltaa = 0.5 ;
lambdaa = 0 ;
betaa = 0.99 ;
kappa = 0.075 ;
phii = 1.0 ;
model(linear);
// (1)
y_t = (nuu/2)*c_t + (1-nuu/2)*c_st + nuu*(1 - nuu/2)*(tau_t + (1-deltaa)*d_t) ;
// (2)
y_st = (nuu/2)*c_st + (1-nuu/2)*c_t - nuu*(1 - nuu/2)*(tau_t + (1-deltaa)*d_t) ;
// (3)
lambdaa*(sigmaa*(c_t - c_st) - deltaa*d_t - (nuu - 1)*(tau_t + (1-deltaa)*d_t)) + (1-lambdaa)*(c_t + (1-nuu/2)*(tau_t + (1 - 2*deltaa)*d_t) - y_t + (fr_t - fr_t(-1))) = 0 ;
// (4)
pih_t = kappa*(sigmaa*c_t + phii*(y_t - a_t) - a_t + u_t + (1-nuu/2)*(tau_t + (1-deltaa)*d_t)) + u_t + betaa*pih_t(+1) ;
// (5)
pih_st = kappa*(sigmaa*c_t + phii*(y_t - a_t) - a_t + u_t + (1-nuu/2)*(tau_t + (1-deltaa)*d_t) - d_t) + u_t + betaa*pih_st(+1) ;
// (6)
pif_st = kappa*(sigmaa*c_st + phii*(y_st - a_st) - a_st + u_st - (1-nuu/2)*(tau_t + (1-deltaa)*d_t)) + u_st + betaa*pif_st(+1) ;
// (7)
pif_t = kappa*(sigmaa*c_st + phii*(y_st - a_st) - a_st + u_st - (1-nuu/2)*(tau_t + (1-deltaa)*d_t) + d_t) + u_st + betaa*pif_t(+1) ;
// (8)
pif_tt = pih_t + (tau_t - tau_t(-1) + (1-deltaa)*(d_t - d_t(-1))) ;
// (9)
pih_stt = pif_st - (tau_t - tau_t(-1) + (1-deltaa)*(d_t - d_t(-1))) ;
// (10)
gammaa*(d_t - d_t(-1) - (pif_st - pif_t)) + xii*((nuu/2)*pih_t + (1-nuu/2)*pif_tt) = ((nuu/2)*pih_t(+1) + (1-(nuu/2))*pif_tt(+1)) + sigmaa*(c_t(+1) - c_t) ;
// (11)
xii_s*((nuu/2)*pif_st + (1-nuu/2)*pih_stt) = (nuu/2)*pif_st(+1) + (1-nuu/2)*pih_stt(+1) + sigmaa*(c_st(+1) - c_st) ;
// (12)
tau_t - tau_t(-1) = kappa*(phii*(y_st - y_t) + sigmaa*(c_st - c_t) + (nuu-1)*(tau_t + (1-deltaa)*d_t) + deltaa*d_t - tau_t + (1+phii)*(a_t - a_st)) + betaa*(tau_t(+1) - tau_t) ;
// (13)
d_t - d_t(-1) - (pif_st - pif_t) = s_t - s_t(-1) ;
// (14)
fr_t - fr_t(-1) = chii*(s_t(-1) - s_t) ;
// (15)
ds_t = s_t - s_t(-1) ;
// (16)
pi_t = (nuu/2)*pih_t + (1- nuu/2)*pif_tt ;
// (17)
dy_t = y_t - y_t(-1) ;
// (18, 19 20, 21)
a_t = 0.9*a_t(-1) + eps_a ;
a_st = 0.9*a_st(-1) + eps_as ;
u_t = 0.9*u_t(-1) + eps_u ;
u_st = 0.9*u_st(-1) + eps_us ;
end;
shocks ;
var eps_a = 1^2 ;% monetary policy shock
//var eps_as = 1^2 ;% foreign inflation shock
//var eps_u = 1^2 ;% foreign interest shock
//var eps_us = 1^2 ;% foreign output shock
end ;
lambda1 = 1.5 ;
lambda2 = 1.5 ;
lambda3 = 1.5 ;
optim_weights;
pi_t lambda1;
dy_t lambda2 ;
ds_t lambda3;
end;
xii = 1.5 ;
xii_s = 1.5 ;
gammaa = 0.1 ;
chii = 0.1 ;
osr_params xii xii_s gammaa chii;
osr;
However, the resulting optimal value of the parameters are strange. They are too huge.
* Dynare results
==================================================
OPTIMAL VALUE OF THE PARAMETERS:
xii -3.77674
xii_s 99.0734
gammaa -51.4306
chii -26.4466
Objective function : 0.169062
==================================================
In addition, these optimal values differs depending on initial values of lambdas and parameters to be optimized.
Is there any problem in my code ? I also attached the mode file.
I would like to reproduce the IRFS in the Graph 7 in Devereux and Yetman (2014).
Thank you for spending your time.