From ee28b3079a4fae8918f4a99e607e95a373836e1a Mon Sep 17 00:00:00 2001
From: Johannes Pfeifer <jpfeifer@gmx.de>
Date: Fri, 15 Oct 2021 11:34:53 +0200
Subject: [PATCH] testsuite: expand Ramsey tests to check for consistency of
 utility and welfare

Also increase variance to make tests more challenging

(cherry picked from commit 45772571c308228aaa798d6c8c3dd143210716ea)
---
 tests/optimal_policy/neo_growth_common.inc        | 2 +-
 tests/optimal_policy/neo_growth_ramsey.mod        | 9 +++++++++
 tests/optimal_policy/neo_growth_ramsey_common.inc | 6 ++++--
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/tests/optimal_policy/neo_growth_common.inc b/tests/optimal_policy/neo_growth_common.inc
index 0d5d1d6b32..e9ef8f0cc1 100644
--- a/tests/optimal_policy/neo_growth_common.inc
+++ b/tests/optimal_policy/neo_growth_common.inc
@@ -9,7 +9,7 @@ gamma = 1;
 delta = 0.012;
 alpha = 0.4;
 rho = 0.95;
-s = 0.007;
+s = 0.07; % increased by a factor of 10 from 0.007 to increase risk correction
 
 model;
 c^(-gamma)=beta*c(+1)^(-gamma)*(alpha*exp(z(+1))*k^(alpha-1)+1-delta);
diff --git a/tests/optimal_policy/neo_growth_ramsey.mod b/tests/optimal_policy/neo_growth_ramsey.mod
index 09ef3b9e46..6201589b9a 100644
--- a/tests/optimal_policy/neo_growth_ramsey.mod
+++ b/tests/optimal_policy/neo_growth_ramsey.mod
@@ -54,6 +54,15 @@ if abs(cond_W_hand_L_SS - planner_objective_value.conditional.steady_initial_mul
    error('Inaccurate conditional welfare with Lagrange multiplier set to its steady-state value');
 end;
 
+if abs(oo_.mean(strmatch('U',M_.endo_names,'exact'))-oo1.oo_.mean(strmatch('U',M1.M_.endo_names,'exact')))>1e-6
+    error('Utility inconsistent');
+end
+
+if abs(planner_objective_value.unconditional-oo_.mean(strmatch('U',M_.endo_names,'exact'))/(1-beta)) > 1e-6;
+   error('Unconditional welfare assessment does not match utility');
+end;
+
+
 initial_condition_states = zeros(M1.M_.endo_nbr,M1.M_.maximum_lag);
 initial_condition_states(1:M1.M_.orig_endo_nbr,:) = repmat(oo1.oo_.dr.ys(1:M1.M_.orig_endo_nbr),1,M1.M_.maximum_lag);
 shock_matrix = zeros(1,M1.M_.exo_nbr);
diff --git a/tests/optimal_policy/neo_growth_ramsey_common.inc b/tests/optimal_policy/neo_growth_ramsey_common.inc
index 01e4a6d39a..dd08a47621 100644
--- a/tests/optimal_policy/neo_growth_ramsey_common.inc
+++ b/tests/optimal_policy/neo_growth_ramsey_common.inc
@@ -1,4 +1,4 @@
-var k z c;
+var k z c U;
 
 varexo e;
 
@@ -9,15 +9,17 @@ gamma = 1;
 delta = 0.012;
 alpha = 0.4;
 rho = 0.95;
-s = 0.007;
+s = 0.07; % increased by a factor of 10 from 0.007 to increase risk correction
 
 model;
 k=exp(z)*k(-1)^(alpha)-c+(1-delta)*k(-1);
 z=rho*z(-1)+s*e;
+U=ln(c);
 end;
 
 steady_state_model;
 z = 0;
+U=ln(c);
 end;
 
 planner_objective ln(c);
-- 
GitLab