Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[cons_smooth] Update consumption smoothing lecture #376

Merged
merged 3 commits into from
Feb 21, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 25 additions & 32 deletions lectures/cons_smooth.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ kernelspec:
## Overview


In this lecture, we'll study a famous model of the "consumption function" that Milton Friedman {cite}`Friedman1956` and Robert Hall {cite}`Hall1978`) proposed to fit some empirical data patterns that the original Keynesian consumption function described in this quantecon lecture {doc}`geometric series <geom_series>` missed.
In this lecture, we'll study a famous model of the "consumption function" that Milton Friedman {cite}`Friedman1956` and Robert Hall {cite}`Hall1978`) proposed to fit some empirical data patterns that the original Keynesian consumption function described in this QuantEcon lecture {doc}`geometric series <geom_series>` missed.

In this lecture, we'll study what is often called the "consumption-smoothing model" using matrix multiplication and matrix inversion, the same tools that we used in this quantecon lecture {doc}`present values <pv>`.
In this lecture, we'll study what is often called the "consumption-smoothing model" using matrix multiplication and matrix inversion, the same tools that we used in this QuantEcon lecture {doc}`present values <pv>`.

Formulas presented in {doc}`present value formulas<pv>` are at the core of the consumption smoothing model because we shall use them to define a consumer's "human wealth".

Expand All @@ -29,7 +29,7 @@ and that standard asset-pricing formulas could be applied to compute a person's
''non-financial wealth'' that capitalizes the earnings stream.

```{note}
As we'll see in this quantecon lecture {doc}`equalizing difference model <equalizing_difference>`,
As we'll see in this QuantEcon lecture {doc}`equalizing difference model <equalizing_difference>`,
Milton Friedman had used this idea in his PhD thesis at Columbia University,
eventually published as {cite}`kuznets1939incomes` and {cite}`friedman1954incomes`.
```
Expand Down Expand Up @@ -58,21 +58,14 @@ The consumer faces a gross interest rate of $R >1$ that is constant over time, a

To set up the model, let

* $T \geq 2$ be a positive integer that constitutes a time-horizon

* $y = \{y_t\}_{t=0}^T$ be an exogenous sequence of non-negative non-financial incomes $y_t$

* $a = \{a_t\}_{t=0}^{T+1}$ be a sequence of financial wealth

* $c = \{c_t\}_{t=0}^T$ be a sequence of non-negative consumption rates

* $R \geq 1$ be a fixed gross one period rate of return on financial assets

* $\beta \in (0,1)$ be a fixed discount factor

* $T \geq 2$ be a positive integer that constitutes a time-horizon.
* $y = \{y_t\}_{t=0}^T$ be an exogenous sequence of non-negative non-financial incomes $y_t$.
* $a = \{a_t\}_{t=0}^{T+1}$ be a sequence of financial wealth.
* $c = \{c_t\}_{t=0}^T$ be a sequence of non-negative consumption rates.
* $R \geq 1$ be a fixed gross one period rate of return on financial assets.
* $\beta \in (0,1)$ be a fixed discount factor.
* $a_0$ be a given initial level of financial assets

* $a_{T+1} \geq 0$ be a terminal condition on final assets
* $a_{T+1} \geq 0$ be a terminal condition on final assets.

The sequence of financial wealth $a$ is to be determined by the model.

Expand All @@ -83,7 +76,7 @@ We require it to satisfy two **boundary conditions**:

The **terminal condition** $a_{T+1} \geq 0$ requires that the consumer not leave the model in debt.

(We'll soon see that a utility maximizing consumer won't **want** to die leaving positive assets, so she'll arrange her affairs to make
(We'll soon see that a utility maximizing consumer won't want to die leaving positive assets, so she'll arrange her affairs to make
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@longye-tian perhaps we can use a note admonition rather than brackets

```{note}
<text>
```

$a_{T+1} = 0$.)

The consumer faces a sequence of budget constraints that constrains sequences $(y, c, a)$
Expand All @@ -94,7 +87,7 @@ $$ (eq:a_t)

Equations {eq}`eq:a_t` constitute $T+1$ such budget constraints, one for each $t=0, 1, \ldots, T$.

Given a sequence $y$ of non-financial incomes, a large set of **pairs** $(a, c)$ of (financial wealth, consumption) sequences satisfy the sequence of budget constraints {eq}`eq:a_t`.
Given a sequence $y$ of non-financial incomes, a large set of pairs $(a, c)$ of (financial wealth, consumption) sequences satisfy the sequence of budget constraints {eq}`eq:a_t`.

Our model has the following logical flow.

Expand All @@ -116,7 +109,7 @@ with the exogenous non-financial income stream $y$, the initial financial asset

In general, there are **many** budget feasible consumption paths $c$.

Among all budget-feasible consumption paths, which one **should** a consumer want?
Among all budget-feasible consumption paths, which one should a consumer want?


To answer this question, we shall eventually evaluate alternative budget feasible consumption paths $c$ using the following utility functional or **welfare criterion**:
Expand All @@ -131,7 +124,7 @@ where $g_1 > 0, g_2 > 0$.

When $\beta R \approx 1$, the fact that the utility function $g_1 c_t - \frac{g_2}{2} c_t^2$ has diminishing marginal utility imparts a preference for consumption that is very smooth.

Indeed, we shall see that when $\beta R = 1$ (a condition assumed by Milton Friedman {cite}`Friedman1956` and Robert Hall {cite}`Hall1978`), criterion {eq}`welfare` assigns higher welfare to **smoother** consumption paths.
Indeed, we shall see that when $\beta R = 1$ (a condition assumed by Milton Friedman {cite}`Friedman1956` and Robert Hall {cite}`Hall1978`), criterion {eq}`welfare` assigns higher welfare to smoother consumption paths.

By **smoother** we mean as close as possible to being constant over time.

Expand All @@ -147,11 +140,11 @@ We create a Python **namedtuple** to store these parameters with default values.
ConsumptionSmoothing = namedtuple("ConsumptionSmoothing",
["R", "g1", "g2", "β_seq", "T"])

def creat_cs_model(R=1.05, g1=1, g2=1/2, T=65):
def create_consumption_smoothing_model(R=1.05, g1=1, g2=1/2, T=65):
Copy link
Contributor

@mmcky mmcky Feb 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks @longye-tian.

The build is failing and I suspect the calling location needs to be updated to this new function name as well.

NameError: name 'creat_cs_model' is not defined

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @mmcky !

I just changed the function name at the calling location. :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks @longye-tian -- you will see the preview is now generating. 👍

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So glad to contribute !!

β = 1/R
β_seq = np.array([β**i for i in range(T+1)])
return ConsumptionSmoothing(R=1.05, g1=1, g2=1/2,
β_seq=β_seq, T=65)
return ConsumptionSmoothing(R, g1, g2,
β_seq, T)
```


Expand All @@ -167,7 +160,7 @@ $$

Human or non-financial wealth at time $0$ is evidently just the present value of the consumer's non-financial income stream $y$.

Formally it very much resembles the asset price that we computed in this quantecon lecture {doc}`present values <pv>`.
Formally it very much resembles the asset price that we computed in this QuantEcon lecture {doc}`present values <pv>`.

Indeed, this is why Milton Friedman called it "human capital".

Expand All @@ -185,7 +178,7 @@ $$ (eq:budget_intertemp)

Equation {eq}`eq:budget_intertemp` says that the present value of the consumption stream equals the sum of finanical and non-financial (or human) wealth.

Robert Hall {cite}`Hall1978` showed that when $\beta R = 1$, a condition Milton Friedman had also assumed, it is "optimal" for a consumer to **smooth consumption** by setting
Robert Hall {cite}`Hall1978` showed that when $\beta R = 1$, a condition Milton Friedman had also assumed, it is "optimal" for a consumer to smooth consumption by setting

$$
c_t = c_0 \quad t =0, 1, \ldots, T
Expand Down Expand Up @@ -223,7 +216,7 @@ $$
Compute an time $0$ consumption $c_0 $ :

$$
c_t = c_0 = \left( \frac{1 - R^{-1}}{1 - R^{-(T+1)}} \right) (a_0 + \sum_{t=0}^T R^t y_t ) , \quad t = 0, 1, \ldots, T
c_t = c_0 = \left( \frac{1 - R^{-1}}{1 - R^{-(T+1)}} \right) (a_0 + \sum_{t=0}^T R^{-t} y_t ) , \quad t = 0, 1, \ldots, T
$$

### Step 3
Expand Down Expand Up @@ -305,7 +298,7 @@ a0 = -2 # such as "student debt"
# non-financial Income process
y_seq = np.concatenate([np.ones(46), np.zeros(20)])

cs_model = creat_cs_model()
cs_model = create_consumption_smoothing_model()
c_seq, a_seq, h0 = compute_optimal(cs_model, a0, y_seq)

print('check a_T+1=0:',
Expand Down Expand Up @@ -399,7 +392,7 @@ plot_cs(cs_model, a0, y_seq_neg)

#### Experiment 2: permanent wage gain/loss

Now we assume a **permanent** increase in income of $W$ in year 21 of the $y$-sequence.
Now we assume a permanent increase in income of $W$ in year 21 of the $y$-sequence.

Again we can study positive and negative cases

Expand Down Expand Up @@ -514,7 +507,7 @@ Let's compute that function.
We require

$$
\sum_{t=0}^T \left[ \xi_1 \phi^t - \xi_0 \right] = 0
\sum_{t=0}^T R^{-t}\left[ \xi_1 \phi^t - \xi_0 \right] = 0
$$

which implies that
Expand Down Expand Up @@ -543,7 +536,7 @@ where $v$ is a budget-feasible variation.
Given $R$, we thus have a two parameter class of budget feasible variations $v$ that we can use
to compute alternative consumption paths, then evaluate their welfare.

Now let's compute and plot consumption path variations variations
Now let's compute and plot consumption path variations

```{code-cell} ipython3
def compute_variation(model, ξ1, ϕ, a0, y_seq, verbose=1):
Expand Down Expand Up @@ -663,7 +656,7 @@ plt.show()
## Wrapping up the consumption-smoothing model

The consumption-smoothing model of Milton Friedman {cite}`Friedman1956` and Robert Hall {cite}`Hall1978`) is a cornerstone of modern macro that has important ramifications for the size of the Keynesian "fiscal policy multiplier" described briefly in
quantecon lecture {doc}`geometric series <geom_series>`.
QuantEcon lecture {doc}`geometric series <geom_series>`.

In particular, it **lowers** the government expenditure multiplier relative to one implied by
the original Keynesian consumption function presented in {doc}`geometric series <geom_series>`.
Expand Down
Loading