Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
dynare
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Stéphane Adjemian
dynare
Commits
068a3e4b
Commit
068a3e4b
authored
5 years ago
by
Johannes Pfeifer
Browse files
Options
Downloads
Patches
Plain Diff
testsuite: add integration test for estimation with Ramsey
[skip ci]
parent
82cc6a91
Branches
Branches containing commit
Tags
Tags containing commit
Loading
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
tests/Makefile.am
+1
-0
1 addition, 0 deletions
tests/Makefile.am
tests/optimal_policy/Ramsey/Ramsey_Example_estimation.mod
+249
-0
249 additions, 0 deletions
tests/optimal_policy/Ramsey/Ramsey_Example_estimation.mod
with
250 additions
and
0 deletions
tests/Makefile.am
+
1
−
0
View file @
068a3e4b
...
...
@@ -99,6 +99,7 @@ MODFILES = \
optimal_policy/Ramsey/ramsey_histval.mod
\
optimal_policy/Ramsey/Gali_commitment.mod
\
optimal_policy/RamseyConstraints/test1.mod
\
optimal_policy/Ramsey/Ramsey_Example_estimation.mod
\
discretionary_policy/dennis_1.mod
\
discretionary_policy/Gali_discretion.mod
\
initval_file/ramst_initval_file.mod
\
...
...
This diff is collapsed.
Click to expand it.
tests/optimal_policy/Ramsey/Ramsey_Example_estimation.mod
0 → 100644
+
249
−
0
View file @
068a3e4b
/*
* This file replicates the model studied in:
* Lawrence J. Christiano, Roberto Motto and Massimo Rostagno (2007):
* "Notes on Ramsey-Optimal Monetary Policy", Section 2
* The paper is available at http://faculty.wcas.northwestern.edu/~lchrist/d16/d1606/ramsey.pdf
*
* Notes:
* - This mod-files allows to simulate a simple New Keynesian Model with Rotemberg price
* adjustment costs under three different monetary policy arrangements:
* 1. a Taylor rule with a fixed inflation feedback coefficient alpha
* -> set the Optimal_policy switch to 0
* 2. a Taylor rule where the inflation feedback coefficient alpha is chosen
* optimally to minimize a quadratic loss function (optimal simple rule (OSR))
* -> set the Optimal_policy switch to 1 and the Ramsey switch to 0
* 3. fully optimal monetary under commitment (Ramsey)
* -> set the Optimal_policy switch to 1 and the Ramsey switch to 1
*
* - The Efficent_steady_state switch can be used to switch from an distorted steady state
* due to a monopolistic distortion to one where a labor subsidy counteracts this
* distortion. Note that the purely quadratic loss function in the OSR case does not capture
* the full welfare losses with a distorted steady state as there would be a linear term
* appearing.
*
* - This files shows how to use a conditional steady state file in the Ramsey case. It takes
* the value of the defined instrument R as given and then computes the rest of the steady
* state, including the steady state inflation rate, based on this value. The initial value
* of the instrument for steady state search must then be defined in an initval-block.
*
* - The optim_weights in the OSR case are based on a second order approximation to the welfare function
* as in Gali (2015). The relative weight between inflation and output gap volatility is essentially
* given by the slope of the New Keynesian Phillips Curve. Note that the linear terms that would be
* present in case of a distorted steady state need to be dropped for OSR.
*
* - Due to divine coincidence, the first best policy involves fully stabilizing inflation
* and thereby the output gap. As a consequence, the optimal inflation feedback coefficient
* in a Taylor rule would be infinity. The OSR command therefore estimates it to be at the
* upper bound defined via osr_params_bounds.
*
* - The mod-file also allows to conduct estimation under Ramsey policy by setting the
* Estimation_under_Ramsey switch to 1.
*
* This implementation was written by Johannes Pfeifer.
*
* If you spot mistakes, email me at jpfeifer@gmx.de
*
* Please note that the following copyright notice only applies to this Dynare
* implementation of the model.
*/
/*
* Copyright (C) 2019 Dynare Team
*
* 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/>.
*/
//**********Define which monetary policy setup to use ***********
@#ifndef Optimal_policy
@#define Optimal_policy=1
@#ifndef Ramsey
@#define Ramsey=1
@#endif
@#endif
//**********Define whether to use distorted steady state***********
@#ifndef Efficent_steady_state
@#define Efficent_steady_state=0
@#endif
@#ifndef Estimation_under_Ramsey
@#define Estimation_under_Ramsey=1
@#endif
var C $C$ (long_name='Consumption')
pi $\pi$ (long_name='Gross inflation')
h $h$ (long_name='hours worked')
Z $Z$ (long_name='TFP')
R $R$ (long_name='Net nominal interest rate')
log_C ${\ln C}$ (long_name='Log Consumption')
log_h ${\ln h}$ (long_name='Log hours worked')
pi_ann ${\pi^{ann}}$ (long_name='Annualized net inflation')
R_ann ${R^{ann}}$ (long_name='Annualized net nominal interest rate')
r_real ${r^{ann,real}}$ (long_name='Annualized net real interest rate')
y_nat ${y^{nat}}$ (long_name='Natural (flex price) output')
y_gap ${r^{gap}}$ (long_name='Output gap')
;
varexo epsilon ${\varepsilon}$ (long_name='TFP shock')
;
parameters beta ${\beta}$ (long_name='discount factor')
theta ${\theta}$ (long_name='substitution elasticity')
tau ${\tau}$ (long_name='labor subsidy')
chi ${\chi}$ (long_name='labor disutility')
phi ${\phi}$ (long_name='price adjustment costs')
rho ${\rho}$ (long_name='TFP autocorrelation')
@# if !defined(Ramsey) || Ramsey==0
pi_star ${\pi^*}$ (long_name='steady state inflation')
alpha ${\alpha}$ (long_name='inflation feedback Taylor rule')
@# endif
;
beta=0.99;
theta=5;
phi=100;
rho=0.9;
@# if !defined(Ramsey) || Ramsey==0
alpha=1.5;
pi_star=1;
@# endif
@# if Efficent_steady_state
tau=1/(theta-1);
@# else
tau=0;
@# endif
chi=1;
model;
[name='Euler equation']
1/(1+R)=beta*C/(C(+1)*pi(+1));
[name='Firm FOC']
(tau-1/(theta-1))*(1-theta)+theta*(chi*h*C/(exp(Z))-1)=phi*(pi-1)*pi-beta*phi*(pi(+1)-1)*pi(+1);
[name='Resource constraint']
C*(1+phi/2*(pi-1)^2)=exp(Z)*h;
[name='TFP process']
Z=rho*Z(-1)+epsilon;
@#if !defined(Ramsey) || Ramsey==0
[name='Taylor rule']
R=pi_star/beta-1+alpha*(pi-pi_star);
@#endif
[name='Definition log consumption']
log_C=log(C);
[name='Definition log hours worked']
log_h=log(h);
[name='Definition annualized inflation rate']
pi_ann=4*log(pi);
[name='Definition annualized nominal interest rate']
R_ann=4*R;
[name='Definition annualized real interest rate']
r_real=4*log((1+R)/pi(+1));
[name='Definition natural output']
y_nat=exp(Z)*sqrt((theta-1)/theta*(1+tau)/chi);
[name='output gap']
y_gap=log_C-log(y_nat);
end;
steady_state_model;
Z=0;
@# if !defined(Ramsey) || Ramsey==0
R=pi_star/beta-1; %only set this if not conditional steady state file for Ramsey
@# endif
pi=(R+1)*beta;
C=sqrt((1+1/theta*((1-beta)*(pi-1)*pi-(tau-1/(theta-1))*(1-theta)))/(chi*(1+phi/2*(pi-1)^2)));
h=C*(1+phi/2*(pi-1)^2);
log_C=log(C);
log_h=log(h);
pi_ann=4*log(pi);
R_ann=4*R;
r_real=4*log((1+R)/pi);
y_nat=sqrt((theta-1)/theta*(1+tau)/chi);
y_gap=log_C-log(y_nat);
end;
@# if defined(Ramsey) && Ramsey==1
//define initial value of instrument for Ramsey
initval;
R=1/beta-1;
end;
@# endif
shocks;
var epsilon = 0.01^2;
end;
@#if Optimal_policy==0
//use Taylor rule
stoch_simul(order=2) pi_ann log_h R_ann log_C Z r_real y_nat;
@#else
@# if !defined(Ramsey) || Ramsey==0
//use OSR Taylor rule
//set weights on (co-)variances for OSR
optim_weights;
pi theta/((theta-1)/phi);
y_gap 1;
end;
//define OSR parameters to be optimized
osr_params alpha;
//starting value for OSR parameter
alpha = 1.5;
//define bounds for OSR during optimization
osr_params_bounds;
alpha, 0, 100;
end;
//compute OSR and provide output
osr(opt_algo=9) pi_ann log_h R_ann log_C Z r_real;
@# else
//use Ramsey optimal policy
//define planner objective, which corresponds to utility function of agents
planner_objective log(C)-chi/2*h^2;
//set up Ramsey optimal policy problem with interest rate R as the instrument,...
// defining the discount factor in the planner objective to be the one of private agents
ramsey_model(instruments=(R),planner_discount=beta,planner_discount_latex_name=$\beta$);
//conduct stochastic simulations of the Ramsey problem
stoch_simul(order=1,irf=20,periods=500) pi_ann log_h R_ann log_C Z r_real;
evaluate_planner_objective;
@# if Estimation_under_Ramsey==1
datatomfile('ramsey_simulation',{'log_C'})
estimated_params;
rho,0.5,uniform_pdf, , ,0,1;
end;
varobs log_C;
estimation(datafile=ramsey_simulation,mode_compute=5,mh_nblocks=1,mh_replic=0);
@# endif
@# endif
@# endif
write_latex_static_model(write_equation_tags);
write_latex_dynamic_model(write_equation_tags);
write_latex_original_model(write_equation_tags);
write_latex_steady_state_model;
collect_latex_files;
if system(['pdflatex -halt-on-error -interaction=batchmode ' M_.fname '_TeX_binder.tex'])
error('TeX-File did not compile.')
end
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment