HARK.ConsumptionSaving.TractableBufferStockModel

Defines and solves the Tractable Buffer Stock model described in lecture notes for “A Tractable Model of Buffer Stock Saving” (henceforth, TBS) available at http://econ.jhu.edu/people/ccarroll/public/lecturenotes/consumption/TractableBufferStock The model concerns an agent with constant relative risk aversion utility making decisions over consumption and saving. He is subject to only a very particular sort of risk: the possibility that he will become permanently unemployed until the day he dies; barring this, his income is certain and grows at a constant rate.

The model has an infinite horizon, but is not solved by backward iteration in a traditional sense. Because of the very specific assumptions about risk, it is possible to find the agent’s steady state or target level of market resources when employed, as well as information about the optimal consumption rule at this target level. The full consumption function can then be constructed by “back- shooting”, inverting the Euler equation to find what consumption must have been in the previous period. The consumption function is thus constructed by repeat- edly adding “stable arm” points to either end of a growing list until specified bounds are exceeded.

Despite the non-standard solution method, the iterative process can be embedded in the HARK framework, as shown below.

class HARK.ConsumptionSaving.TractableBufferStockModel.TractableConsumerSolution(mNrm_list=[], cNrm_list=[], MPC_list=[], cFunc_U=<class 'HARK.utilities.NullFunc'>, cFunc=<class 'HARK.utilities.NullFunc'>)

A class representing the solution to a tractable buffer saving problem. Attributes include a list of money points mNrm_list, a list of consumption points cNrm_list, a list of MPCs MPC_list, a perfect foresight consumption function while employed, and a perfect foresight consumption function while unemployed. The solution includes a consumption function constructed from the lists.

HARK.ConsumptionSaving.TractableBufferStockModel.addToStableArmPoints(solution_next, DiscFac, Rfree, CRRA, PermGroFacCmp, UnempPrb, PFMPC, Rnrm, Beth, mLowerBnd, mUpperBnd)

Adds a one point to the bottom and top of the list of stable arm points if the bounding levels of mLowerBnd (lower) and mUpperBnd (upper) have not yet been met by a stable arm point in mNrm_list. This acts as the “one period solver” / solveOnePeriod in the tractable buffer stock model.

Parameters:
  • solution_next (TractableConsumerSolution) – The solution object from the previous iteration of the backshooting procedure. Not the “next period” solution per se.
  • DiscFac (float) – Intertemporal discount factor on future utility.
  • Rfree (float) – Risk free interest factor on end-of-period assets.
  • CRRA (float) – Coefficient of relative risk aversion.
  • PermGroFacCmp (float) – Permanent income growth factor, compensated for the possibility of permanent unemployment.
  • UnempPrb (float) – Probability of becoming permanently unemployed.
  • PFMPC (float) – The perfect foresight MPC; also the MPC when permanently unemployed.
  • Rnrm (float) – Interest factor normalized by compensated permanent income growth factor.
  • Beth (float) – Damned if I know.
  • mLowerBnd (float) – Lower bound on market resources for the backshooting process. If min(solution_next.mNrm_list) < mLowerBnd, no new bottom point is found.
  • mUpperBnd (float) – Upper bound on market resources for the backshooting process. If max(solution_next.mNrm_list) > mUpperBnd, no new top point is found.
  • Returns
  • ---------
  • solution_now (TractableConsumerSolution) – A new solution object with new points added to the top and bottom. If no new points were added, then the backshooting process is about to end.
HARK.ConsumptionSaving.TractableBufferStockModel.findNextPoint(DiscFac, Rfree, CRRA, PermGroFacCmp, UnempPrb, Rnrm, Beth, cNext, mNext, MPCnext, PFMPC)

Calculates what consumption, market resources, and the marginal propensity to consume must have been in the previous period given model parameters and values of market resources, consumption, and MPC today.

Parameters:
  • DiscFac (float) – Intertemporal discount factor on future utility.
  • Rfree (float) – Risk free interest factor on end-of-period assets.
  • PermGroFacCmp (float) – Permanent income growth factor, compensated for the possibility of permanent unemployment.
  • UnempPrb (float) – Probability of becoming permanently unemployed.
  • Rnrm (float) – Interest factor normalized by compensated permanent income growth factor.
  • Beth (float) – Composite effective discount factor for reverse shooting solution; defined in appendix “Numerical Solution/The Consumption Function” in TBS lecture notes
  • cNext (float) – Normalized consumption in the succeeding period.
  • mNext (float) – Normalized market resources in the succeeding period.
  • MPCnext (float) – The marginal propensity to consume in the succeeding period.
  • PFMPC (float) – The perfect foresight MPC; also the MPC when permanently unemployed.
Returns:

  • mNow (float) – Normalized market resources this period.
  • cNow (float) – Normalized consumption this period.
  • MPCnow (float) – Marginal propensity to consume this period.