def test_infinite_horizon(self): baseEx_inf = IndShockConsumerType(**self.base_params) baseEx_inf.assign_parameters(cycles=0) baseEx_inf.solve() baseEx_inf.unpack("cFunc") m1 = np.linspace( 1, baseEx_inf.solution[0].mNrmStE, 50 ) # m1 defines the plot range on the left of target m value (e.g. m <= target m) c_m1 = baseEx_inf.cFunc[0](m1) self.assertAlmostEqual(c_m1[0], 0.8527887545025995) self.assertAlmostEqual(c_m1[-1], 1.0036279936408656) x1 = np.linspace(0, 25, 1000) cfunc_m = baseEx_inf.cFunc[0](x1) self.assertAlmostEqual(cfunc_m[500], 1.8902146173138235) self.assertAlmostEqual(cfunc_m[700], 2.1591451850267176) m = np.linspace(0.001, 8, 1000) # Use the HARK method derivative to get the derivative of cFunc, and the values are just the MPC MPC = baseEx_inf.cFunc[0].derivative(m) self.assertAlmostEqual(MPC[500], 0.08415000641504392) self.assertAlmostEqual(MPC[700], 0.07173144137912524)
def test_IndShock_stable_points(self): # Test for the target and individual steady state of the infinite # horizon solution using the parametrization in the "Buffer Stock # Theory" paper. # Create and solve the agent baseAgent_Inf = IndShockConsumerType(verbose=0, **bst_params) baseAgent_Inf.assign_parameters(cycles=0) baseAgent_Inf.solve() # Extract stable points mNrmStE = baseAgent_Inf.solution[0].mNrmStE mNrmTrg = baseAgent_Inf.solution[0].mNrmTrg # Check against pre-computed values decimalPlacesTo = 10 self.assertAlmostEqual(mNrmStE, 1.37731133865, decimalPlacesTo) self.assertAlmostEqual(mNrmTrg, 1.39101653806, decimalPlacesTo)
def test_infinite_horizon(self): IndShockExample = IndShockConsumerType(**IdiosyncDict) IndShockExample.assign_parameters( cycles=0) # Make this type have an infinite horizon IndShockExample.solve() self.assertAlmostEqual(IndShockExample.solution[0].mNrmStE, 1.5488165705077026) self.assertAlmostEqual( IndShockExample.solution[0].cFunc.functions[0].x_list[0], -0.25017509) IndShockExample.track_vars = ['aNrm', "mNrm", "cNrm", 'pLvl'] IndShockExample.initialize_sim() IndShockExample.simulate() self.assertAlmostEqual(IndShockExample.history["mNrm"][0][0], 1.0170176090252379)