Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Micro- and Macroeconomic Implications of Very Impatient Households

Generator: QuARK-make/notebooks_byname

IntroductionΒΆ

Buffer stock saving models of the kind implemented in π™²πš˜πš—πšœπ™Έπš—πšπš‚πš‘πš˜πšŒπš”πšƒπš’πš™πšŽ say that, if a standard β€˜Growth Impatience Condition’, holds:

((𝖱β)1/ρ𝔼[Οˆβˆ’1]Ξ“)<1

then the ratio of asets 𝐚 to permanent income 𝐩, a=𝐚/𝐩, has a target value aΛ‡ that depends on the consumer’s preferences (relative risk aversion ρ, time preference Ξ²) and circumstances (interest factor 𝖱, growth factor Ξ“, uncertainty about permanent income shocks ΟƒΟˆ2).

If everyone had identical preferences and everyone were at their target aΛ‡, then inequality in the level of 𝐚 would be exactly the same as inequality in 𝐩.

β€œThe Distribution of Wealth and the Marginal Propensity to Consume” (Carroll, Slacalek, Tokuoka, and White 2017; hereafter: β€œcstwMPC”) shows that, when such a model is simulated and agents draw their idiosyncratic shocks (so, agents are ex post heterogeneous -- see the definition in Intro-To-HARK) -- asset inequality is indeed close to 𝐩 inequality even though everyone is not always at exactly their target a.

But a large body of evidence shows that actual inequality in assets is much greater than actual inequality in permanent income. Thus, to make a model that qualifies as what cstwMPC call a β€˜serious’ microfounded macro model of consumption (one that matches the key facts theory says should be first-order important), the model must be modified to incorporate some form of ex ante heterogeneity: That is, there must be differences across people in Ξ² or 𝖱 or ρ or Ξ“ or ΟƒΟˆ2.

The most transparent and simplest of these to change is the time preference factor Ξ². So that is what the paper does. The main results are:

  1. The distribution of Ξ² need not be particularly wide to match the extreme concentration of wealth: roughly 0.91 to 0.98 (annual); that is, the most impatient person discounts the future about 6 percentage points more per year than the most patient agent agent

  2. With such a distribution of Ξ², simulated agents’ (annual) marginal propensity to consume (MPC) from transitory income shocks to income matches large body of microeconomic evidence that typically finds evidence of MPC’s in the range of 0.2 to 0.6. This is much better than RA macro models that typically yield MPC’s in the range of 0.01 to 0.05.

While the most impatient agents in the cstwMPC model have fairly high MPCs (~0.6 annual), there is microeconomic evidence that a significant fraction of households have even higher MPCs than the model predicts, especially at the quarterly frequency. This group of households is commonly referred to as β€œhand-to-mouth” -- they consume most of their transitory shocks to income not too long after they receive them (mostly within a quarter). There are several reasons why a household could be hand-to-mouth, but one plausible explanation is that these households are even more impatient than estimated by cstwMPC for the most impatient agent.

Calibrating a Basic Version of cstwMPCΒΆ

To get started, let’s reproduce a simplified version of the main results from cstwMPC.

In cstwMPC, the authors calibrated nearly all of the model parameters-- risk aversion, income shock process, etc-- to commonly used or previously estimated values. The only parameter to be estimated is the distribution of Ξ². cstwMPC assumed that Ξ² is uniformly distributed on [Ξ²`βˆ’βˆ‡,Ξ²`+βˆ‡], approximated by a seven point distribution.

Their estimation procedure seeks the values of Ξ²` and βˆ‡ that generate a simulated distribution of wealth that best matches empirical U.S. data. Their definition of β€œbest match” has two aspects:

  1. The simulated aggregate capital-to-income ratio matches the true U.S. value.

  2. The sum of squared distances between the simulated and empirical Lorenz curves (at the 20th, 40th, 60th, and 80th percentiles) is minimized (conditional on item 1).

cstwMPC’s target empirical moments are a capital-to-income ratio of 10.26 and cumulative wealth shares as given in the table below. Yes, you are reading the table correctly: The β€œpoorest” 80 percent of households own 17.5 percent of wealth.

Net worth percentileCumulative wealth share
20th-0.2%
40th1.0%
60th5.5%
80th17.5%

To reproduce their basic results, we must import an π™°πšπšŽπš—πšπšƒπš’πš™πšŽ subclass and define a dictionary with calibrated parameters identical to those in the paper.

  • Start with importing the predefined dictionaries for agent types from the HARK toolkit. Then only show the parameters that are actually different from the imported dictionary.

Creating an ex-ante distribution of heterogeneous agentsΒΆ

Now let’s make several instances of our class of agents and give them different values of Ξ², following cstwMPC’s estimated distribution. In our specification of interest, we will use Ξ²`=0.9855583 and βˆ‡=0.0085.

NB: Reported parameter estimates in cstwMPC use a model with aggregate shocks and wage and interest rates determined dynamically (a heterogeneous agents DSGE model); this is the π™°πšπšπš‚πš‘πš˜πšŒπš”π™²πš˜πš—πšœπšžπš–πšŽπš›πšƒπš’πš™πšŽ in HARK. The estimated parameters are slightly different in this exercise, as we are ignoring general equilibrium aspects and only using the π™Έπš—πšπš‚πš‘πš˜πšŒπš”π™²πš˜πš—πšœπšžπš–πšŽπš›πšƒπš’πš™πšŽ

Method 1: β€œBrute force” approachΒΆ

There are two methods for accomplishing this. The first is a more β€œbrute force” approach: We specify a uniform distribution and discretize it for the number of household types we would like to see in the model. From there, We place each of the household types with a different time preference factor in a list. Finally, a for-loop is used to compute the solution for each household’s optimization problem.

Method 2: The new AgentPopulation classΒΆ

The second approach incorporates a new class defined in the HARK toolkit: AgentPopulation. This class will create a new iterable object AgentPopulation, which takes two arguments. The first is the dictionary which defines the AgentType. The second is a distribution over the parameter value for which the user would like to see ex-ante heterogeneity in. From there, the approx_distributions method is called on the object to discretize the distribution given the specified number of discrete points. Finally, the create_distributed_agents method is called to create the distribution of agents, for which the standard solution method calls can be used to solve each agents problem.

Solving and Simulating the Baseline AgentsΒΆ

Now let’s solve and simulate each of our types of agents. If you look in the parameter dictionary (or at any of the agent objects themselves), you will see that each one has an π™°πšπšŽπš—πšπ™²πš˜πšžπš—πš attribute of 10000. That is, these seven ex ante heterogeneous types each represent ten thousand individual agents that will experience ex post heterogeneity when they draw different income (and mortality) shocks over time.

In the code block below, fill in the contents of the loop to solve and simulate each agent type for many periods. To do this, you should invoke the methods πšœπš˜πš•πšŸπšŽ, πš’πš—πš’πšπš’πšŠπš•πš’πš£πšŽ_πšœπš’πš–, and πšœπš’πš–πšžπš•πšŠπšπšŽ in that order. Simulating for 1200 quarters (300 years) will approximate the long run distribution of wealth in the population.

After solving the model, we will check that the aggregate level of capital (total assets held by all households) to income ratio equals what we expected it would be. This will serve as a verification that the code is written correctly. To do this, we combine the asset holdings of all types, take the mean, and compare it to the desired capital to income ratio of 10.26.

NB: Because there is no permanent income growth in this model, all shocks are mean one and idiosyncratic, and we have many agents, aggregate or average income is 1.0.

1. Solution for the β€œbrute force” approachΒΆ

Here is the output for the solution to the first approach to the problem, as well as a computation of the mean level of assets across the agent types. As you can see, the model does a good job of matching the aggregate capital-to-output ratio found in the data, as cited by Carroll et al. (2017).

100%|β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 7/7 [00:31<00:00,  4.46s/it]
The ratio of aggregate capital to permanent income is 10.33

2. Solution using the AgentPopulation classΒΆ

We now conduct the same exercise for the new tool implemented in HARK. As you can see, both the out for the solution and the mean level of assets are nearly identical to the output when using the β€œbrute force” approach.

Note: As an aside, the working theory for why these two approaches give nearly-but-not-perfectly-identical solution outputs is that, the β€œbrute force” approach requires the user to specify the random seed when creating the discretized distribution of agents. The approach using AgentPopulation, on the other hand, specifies the random seed for the user during the implementation of the code. As you may know from the basics of programming in Python, the random seed’s main function is for reproducibility of results when using random number generators. In order for this theory to be tested, the AgentPopulation tool in HARK must be updated to allow for users to fix the random seed in this way.

The ratio of aggregate capital to permanent income is 10.26

Plotting the Lorenz CurveΒΆ

Next, we conduct the exercise of matching the inequality in the observable distribution of wealth using the distribution of assets that arises from the model we’ve constructed with ex-ante heterogeneity in the time preference factor. As you can see from the plots below, the matching exercise is again nearly identical from the two approaches.

<Figure size 640x480 with 2 Axes>

Calculating the Lorenz Distance at TargetsΒΆ

Now we want to construct a function that calculates the Euclidean distance between simulated and actual Lorenz curves at the four percentiles of interest: 20, 40, 60, and 80.

NB: For some reason, this step is not completed in the code. We leave this cell here, as this exercise should probably be performed as well.

The Distribution Of the Marginal Propensity to ConsumeΒΆ

For many macroeconomic purposes, the distribution of the MPC ΞΊ is more important than the distribution of wealth. Ours is a quarterly model, and MPC’s are typically reported on an annual basis; we can compute a (very) approximate annual MPC from the quraterly ones as ΞΊYβ‰ˆ1.0βˆ’(1.0βˆ’ΞΊQ)4

In the cell below, we retrieve the MPCs from our simulated consumers and show that the 10th percentile in the MPC distribution is only about 6 percent, while at the 90th percentile it is almost 0.5

1. MPC distribution from the β€œbrute force” approachΒΆ

Again, we first show the computation from the β€œbrute force approach”. This is done in the following code block.

The MPC at the 10th percentile of the distribution is 0.06
The MPC at the 50th percentile of the distribution is 0.19
The MPC at the 90th percentile of the distribution is 0.51

2. MPC distribution from the AgentPopulation approachΒΆ

Next, we compare this distribution of marginal propensities to consume with the one from the analogous computation when the AgentPopulation class is used. Notably, the distribution of MPCs in this case is nearly identical, with the only difference being at the 90th percentile.

The MPC at the 10th percentile of the distribution is 0.06
The MPC at the 50th percentile of the distribution is 0.19
The MPC at the 90th percentile of the distribution is 0.51

Adding Very Impatient HouseholdsΒΆ

Now that we have some tools for examining both microeconomic (the MPC across the population) and macroeconomic (the distribution and overall level of wealth) outcomes from our model, we are all set to conduct our experiment.

In this exercise, we are going to add very impatient households to the economy in a very direct way: by replacing the most impatient consumer type with an even more impatient type. Specifically, we will have these agents have a discount factor of Ξ²=0.80 at a quarterly frequency, which corresponds to Ξ²β‰ˆ0.41 annual.

In the code block below, we:

  1. Replicate the list of agents using πšπšŽπšŽπš™πšŒπš˜πš™πš’.

  2. Set the Ξ² of the most impatient type to 0.80 (for the copied set of agents).

  3. Solve and simulate the most impatient type (for the copied set of agents).

We conduct this exercise for both approaches again. The code is essentially identical, other than the naming conventions used for variables in each case. Notice that the output from each of the final two code blocks are exactly identical!

The MPC at the 10th percentile of the distribution is 0.06
The MPC at the 50th percentile of the distribution is 0.19
The MPC at the 90th percentile of the distribution is 0.97
The MPC at the 10th percentile of the distribution is 0.06
The MPC at the 50th percentile of the distribution is 0.19
The MPC at the 90th percentile of the distribution is 0.97