# The Paradox of Thrift

Why saving isn't always a virtue

Posted on 05 June 2016 by Andrew Berkeley

In the last model we simply watched money circulate around our economy. Because the same amount of money was spent in each time period, income was constant and there was nothing in the model to change this status quo. In this model, we'll allow our citizens an additional freedom. Instead of spending every pound they earn, they will have two options for how to use their income: they can save some part of it, and spend the rest.

We need a new consumption function. In the last model we defined consumption as simply being exactly equal to income (\(C = Y\)). We can generalise this by stating that consumption spending is equal to some fraction, \(\alpha\), of income:

\[C = \alpha Y \hspace{1cm} (1)\]

where \(0 \lt \alpha \lt 1\). Our previous model, which implied complete, 100% spending of income with no savings, can now be seen as a special case in which \(\alpha = 1\). But if, for example, citizens in our economy decide to spend (on average) only 95% of their income (saving 5%), then we'd have \(\alpha = 0.95\) and spending would equal \(0.95Y\).

Like before, all spending becomes income, simply by the identity which links buyers with sellers. So we continue with the income equation:

\[Y = C \hspace{1cm} (2)\]

But we have a third unknown in our economy now. The money that is not spent has to go somewhere. It cannot simply vanish. So we must define a variable to keep track of it. Effectively, we are considering unspent money to represent savings, and so we'll keep track of how much is saved. We'll label the accumulated savings of the economy \(H\). We need an equation which describes how \(H\) is calculcated during our model run.

If we know how much of income is being *spent* at any given moment (equation 1), then we can easily work out how much is being *saved* at any moment. It is simply \((1 - \alpha) Y\). If 95% is being spent then 5% is being saved, for example. And if we know how much is *being saved* at any instant, then we don't necessarily how much total savings we have accumulated, but we *do* know how much that amount is *changing*. The standard way of notating a *change in a quantity* is to use the Greek "delta" character \(\Delta\). So our third equation will be:

\[\Delta H = (1 - \alpha)Y \hspace{1cm} (3)\]

Equation 3 simply tells us by how much the accumulated wealth of the economy changes in relation to current income. Okay, we have 3 unknowns (\(C\), \(Y\), \(H\)) and 3 equations. We can code these up now and see what happens.

## A model in Python¶

Again, we'll iterate through some number of time steps and solve our equations as we go. Each variable needs to be updated at each time step so that we can understand the path of our economy. As before, we need to *discretize* our equations, that is, convert them into *difference equations* which can be computed across discrete time steps.

Calculating \(C\) in each time step is straightforward. As before, it is related to the income from the previous time step, but with a twist - only a fraction (\(\alpha\)) of the income from the previous time step is spent:

\[C_t = \alpha Y_{t-1}\]

As before, spending is still immediately equated with income, and so we retain

\[Y_t = C_t\]

And finally we need to calculate the stock of savings. From equation (3) we know how savings change on each time step. So it is fairly trivial to calculate what the total amount of accumulated savings are at any given time step by simply adding the current change in savings to the existing savings from the previous time step:

\[H_t = H_{t-1} + (1 - \alpha) Y_{t-1}\]

Great, we've discretized our model. Now we can code it.

As before, we first import our libraries,

```
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
```

then set the number of time intervals to simulate:

```
N = 100
```

Next, we create some arrays to hold the values of our unknown variables in each time step. We want 3 arrays for the 3 unknowns we have, and each needs to be the same length as the number of time steps (`N`

).

```
C = np.zeros(N) # consumption
Y = np.zeros(N) # income
H = np.zeros(N) # stock of accumulated savings
```

This model has a parameter, \(\alpha\), which describes the *propensity to consume* (out of income). This needs to be set. We'll go with a value of 90%, i.e. 90% of income is used for consumption spending. In decimal fraction notation this is `0.90`

.

```
alpha = 0.90
```

And as in the last model, we need to set some initial conditions in order to kickstart our economy. We'll go with the same initial spending spree of 100 pounds. This immediately equates to 100 pounds of income at the outset. So we'll set these initial conditions for `C`

and `Y`

. `H`

does not need an initial condition to be explicitly set. The `H`

array is already filled with zeros and therefore the initial state of accumulated wealth (the first value) is already simply zero. In other words, we're already set up to start off with zero savings. That is fine. We could give it some other starting value but there is not much to be gained by doing so.

```
C[0] = 100
Y[0] = 100
```

Okay, we can iterate through time using our difference equations.

```
for t in range(1, N):
C[t] = alpha * Y[t-1] # calculate spending based on earlier income (with some saving)
Y[t] = C[t] # calculcate income earned in this time period
H[t] = H[t-1] + (1 - alpha) * Y[t-1] # calculate increase in accumulated savings
```

Done. As before, we'll just plot the history of our economy and take a look. We'll create 3 plots this time, to represent our 3 unknown variables (\(C\), \(Y\), \(H\)).

```
# create a figure
fig = plt.figure(figsize=(12, 4))
# create a subplot for consumption
consumption_plot = fig.add_subplot(131)
# plot consumption (C) versus time step (N)
consumption_plot.plot(range(N), C, lw=3)
# add gridlines
consumption_plot.grid()
# ensure a zero origin for the y axis
consumption_plot.set_ylim([0, np.max(C)])
# label axes
plt.xlabel('time')
plt.ylabel('consumption')
# create a second subplot for income
income_plot = fig.add_subplot(132)
# plot income (Y) versus time step (N)
income_plot.plot(range(N), Y, lw=3)
# add gridlines
income_plot.grid()
# ensure a zero origin for the y axis
income_plot.set_ylim([0, np.max(Y)])
# label axes
plt.xlabel('time')
plt.ylabel('income')
# create a third subplot for private wealth
savings_plot = fig.add_subplot(133)
# plot savings (H) versus time step (N)
savings_plot.plot(range(N), H, lw=3)
# add gridlines
savings_plot.grid()
# ensure a zero origin for the y axis
savings_plot.set_ylim([0, 100])
# label axes
plt.xlabel('time')
plt.ylabel('accumulated savings')
# space subplots neatly
plt.tight_layout()
```

Our disciplined citizens have manged to save enough money to have accumulated 100 pounds of savings by the end of the model run. Maybe they should feel very proud of themselves. But look what's happened to their incomes! Incomes have dropped from 100 pounds per time step at the start to 0 at the end of the simulation. This is a recession of catastrophic proportions. Let's walk through what happened.

time step | consumption | income | saving | accumulated savings |
---|---|---|---|---|

1 | 100.00 | 100.00 | - | - |

2 | 90.00 | 90.00 | 10.00 | 10.00 |

3 | 81.50 | 81.50 | 8.50 | 18.50 |

4 | 74.28 | 74.28 | 7.22 | 25.72 |

... | ... | ... | ... | ... |

100 | 0.00 | 0.00 | 0.00 | 100.00 |

In the first time step, 100 pounds was spent and immediately earned as income. In the next time step, 90 pounds were spent - 90% of the earned income from previously - and 10 pounds were added to the savings account. These 90 pounds were immediately earned as income for spending in the next time step. In the 3rd time step, 90% of that 90 pounds of income was spent on and the other 10% saved. That's 81.50 pounds of spending (and, therefore, concurrent income) and 8.50 pounds of saving taking the savings account to 18.50 pounds. In the 4th time step, 90% of the 81.50 pounds earned from the previous time step (74.28 pounds) was spent, with 7.22 being added to savings. And so on.

Because of the intention to accumulate savings, the income available for spending on each time step is smaller than the time step before. This results in a feedback cycle of less income begeting less future spending which begets yet less income and even lower subsequent spending. As the accumulated savings in the economy grows, the amount of money cycling round the economy - supporting spending and incomes - becomes smaller and smaller. Eventually, the entire money stock is held as savings and there is no money circulating at all. This is a completely unstable economy.

The problem highlighted in this model was called *The Paradox of Thrift* by John Maynard Keynes. The paradox refers to the fact that the attempt of private individuals (and/or businesses) to collectively save causes aggregate incomes to drop. The fall in incomes has at least two effects. If it occurs equally across all individuals then it means that living standards decline: everyone has less purchasing power. More likely, however, is that it will not affect all individuals equally and will instead result in some people becoming unemployed. A more subtle effect of the fall in incomes, however, is simply that it means that less can be saved in future. In these ways, the attempt to save *en masse* can be considered self-defeating.

## Reacting to the recession¶

The model economy simulated above is an extreme scenario and unlikely to occur in practice. The reason is that some amount of spending is utterly necessary, to provide for, well, the necessities in life: food, shelter, energy, etc. It is highly unlikely that individuals would forgo such necessities because of their intention to save. At some point during the decline in incomes it is more likely that folk will start to spend some of the savings that they have accumulated in order to replace some of the lost income. Let's try a new model which reflects this behaviour.

What we want is for some spending out of the stock of savings to occur. And what would seem intuitively consistent with the scenario postulated above is that more is spent out of savings when incomes are lower and less when incomes are higher. Put another way, more is spent out of savings when the accumulated savings are larger. A simple way to achieve this is if a fixed proportion of accumulated savings is spent at any given time.

So, our consumption function now needs two parameters: the fraction of *income* that is spent at any given point in time, and the fraction of *savings* that are spent at the same time. We'll continue to use the \(\alpha\) character, but will distinguish between the propensity to consume out of income, \(\alpha_Y\), and the propensity to consume out of savings, \(\alpha_H\). So now total consumption is the sum of spending out of both income and savings:

\[C = \alpha_Y Y + \alpha_H H \hspace{1cm} (4)\]

This also means that there is an additional flow *out* of savings at any given point in time - the quantity of savings which are used for spending. So we need to update our savings adjustment equation:

\[\Delta H = (1 - \alpha_Y)Y - \alpha_H H \hspace{1cm} (5)\]

We assume that the spending out of savings in any given time period is a fraction of the total accumulated savings in the *previous* time step. Thereby the discretized forms of these equations become:

\[C_t = \alpha_Y Y_{t-1} + \alpha_H H_{t-1}\]

\[H_t = H_{t-1} + (1 - \alpha_Y) Y_{t-1} - \alpha_H H_{t-1}\]

Okay, code. We'll reset the unknown variable arrays:

```
C = np.zeros(N) # consumption
Y = np.zeros(N) # income
H = np.zeros(N) # private wealth
```

and define our differentiated \(\alpha\) parameters:

```
alpha_y = 0.90
alpha_h = 0.05
```

set the initial conditions again:

```
C[0] = 100
Y[0] = 100
```

and run the model:

```
for t in range(1, N):
C[t] = alpha_y * Y[t-1] + alpha_h * H[t-1] # calculate spending based on earlier income (with some saving)
Y[t] = C[t] # calculcate income earned in this time period
H[t] = H[t-1] + (1 - alpha_y) * Y[t-1] - alpha_h * H[t-1] # calculate change in wealth from saving and spending
```

Plot the results:

```
# create a figure
fig = plt.figure(figsize=(12, 4))
# create a subplot for consumption
consumption_plot = fig.add_subplot(131)
# plot consumption (C) versus time step (N)
consumption_plot.plot(range(N), C, lw=3)
# add gridlines
consumption_plot.grid()
# ensure a zero origin for the y axis
consumption_plot.set_ylim([0, np.max(C)])
# label axes
plt.xlabel('time')
plt.ylabel('consumption')
# create a second subplot for income
income_plot = fig.add_subplot(132)
# plot income (Y) versus time step (N)
income_plot.plot(range(N), Y, lw=3)
# add gridlines
income_plot.grid()
# ensure a zero origin for the y axis
income_plot.set_ylim([0, np.max(Y)])
# label axes
plt.xlabel('time')
plt.ylabel('income')
# create a third subplot for private wealth
wealth_plot = fig.add_subplot(133)
# plot wealth (H) versus time step (N)
wealth_plot.plot(range(N), H, lw=3)
# add gridlines
wealth_plot.grid()
# ensure a zero origin for the y axis
wealth_plot.set_ylim([0, 100])
# label axes
plt.xlabel('time')
plt.ylabel('wealth')
# space subplots neatly
plt.tight_layout()
```

Like the last model, incomes initially decreased as savings begin to grow. The reason, like the last model, is that the attempt to accumulate savings reduces the stock of money circulating as spending. The difference in this model, however, is that this process is ultimately limited: incomes eventually reach a minimum level at which they remain. At the same time, the growth of savings slows down and eventually stops and the stock of accumulated savings reaches a maximum value at which it remains thereafter. We can think of our economy as comprising two distinct phases: an initial phase in which the economy is undergoing change; and an eventual non-changing phase. The latter is commonly described using the term *steady-state*.

So our citizens have responded to their decreasing incomes by raiding their stock of savings. As incomes dropped (*because* of the growth in accumulated savings), so the amount spent out of savings rose. At some point, the amount of money being saved out of income matched the amount of money being spent out of savings resulting in no change to the stock of accumulated savings and no further drain of money out of the spending cycle. In comparison to the last model, where the attempt to save continued *ad absurdum*, this economy has been saved from catastophe. But the steady-state balance attained in the economy represents a lower level of income than in the case where no saving is attempted. So the price (!) of saving (in this economy) is less spending and lower incomes.

In the last model saw that the paradox of thrift caused an uncontrollable, downward spiral into catastrophic recession. In this model we see the paradox of thrift in a slightly more nuanced form. The catastrophe of the previous model was averted only because the extent of saving was limited. Citizens, in their collective attempt to save, were forced to (partially) abandon that attempt in a bid to retain their incomes. Although some saving was acheived and some level of income was retained, the ability of the economy to save in aggregate in this model is intrisically limited by the cost it imposes on incomes.

## The steady-state¶

The level at which the economy settles down can be understood in terms of the spending behaviour of our citizens - the extent to which they prioritise saving over income. In order to dig in to this, we can study the steady-state phase of our model specifically. The fact that things are not changing in the steady-state phase (by definition) is a feature we can exploit to deduce some new relationships between our variables. First, we'll identify the steady-state values of our variables by using the \(^*\) superscript. So we have \(C^*\), \(Y^*\) and \(H^*\), which, although variable in general, are constant values in the steady-state phase. This notation helps us to remember that we are looking at a particular phase of our results. Next, let's look at the equation which determined the change in savings in our model:

\[\Delta H = (1 - \alpha_Y)Y - \alpha_H H\]

At steady-state, using our \(^*\) notation, this equation becomes:

\[\Delta H^* = (1 - \alpha_Y)Y^* - \alpha_H H^*\]

But under steady-state conditions we also know that \(H^*\) is actually not changing at all, and therefore we can equate \(\Delta H^*\) with \(0\):

\[0 = (1 - \alpha_Y)Y^* - \alpha_H H^*\]

and rearranging:

\[(1 - \alpha_Y)Y^* = \alpha_H H^*\]

This equation simply states mathematically what we articulated earlier: that, at steady-state, the rate of saving out of income is equal to the rate of spending out of savings. Rearranging this to solve for \(H^*\) we get:

\[H^* = \frac{(1 - \alpha_Y)}{\alpha_H}Y^* \hspace{1cm} (6)\]

So the steady-state quantity of accumulated savings is directly related to the steady-state level of income. In effect, we can consider the maximum level of accumulated savings as a kind of "wealth" target relative to income: when the economy reaches its wealth target it is content to stay at that level and save no more. Its worth pointing out that often it is useful to measure economic metrics relative to the income of the economy (e.g. debt relative to GDP)

The term \(\frac {(1 - \alpha_Y)}{\alpha_H}\) defines what this balance between wealth and income is. To make things a bit more intuitive we can think of the numerator term \((1 - \alpha_Y)\) as the propensity to *save* (out of income). This should be quite obvious - if we subtract the propensity to *consume* from 1, we get the propensity to *save*, simply because what is not spent is saved (in this model). So the numerator and denominator can be intuitively seen as flows *into* and *out of* savings respectively, which makes the implications of the equation a bit clearer. If the flow into savings (\(1 - \alpha_Y\)) is greater than the flow out of savings (\(\alpha_H\)), then saving will be prioritised: the ratio will be \(>1\) and the wealth target of the economy will therefore be greater than \(1 \times\) the steady-state income. If the spending out of savings exceeds the rate of saving from income, then the converse is true: spending will be prioritised and steady-state wealth will be less than \(1 \times\) steady-state income.

Let's examine these values in our model. Our value for \((1 - \alpha_Y)\) is:

```
print(1 - alpha_y)
```

This tells us that our economy saves 10% of income (since it spends 90%). Therefore the steady-state level of savings relative to income is:

```
print((1 - alpha_y)/alpha_h)
```

So we expect our steady-state savings to be double the value of steady-state income. Lets, see if that is true. We'll inspect the final values for income (\(Y\)) and savings (\(H\)) in our model results.

```
print(Y[-1])
print(H[-1])
```

Correct. Income at the end of our model was 33 pounds and total accumulated savings were double that, 66 pounds. We chose at the outset to assume that the economy saved 10% of its income (\(\alpha_Y = 0.90\)) and spent 5% of its savings. This dictated the balance between spending and saving, and resulted in the economy desiring a stock of savings which is twice the size of its income (\(10/5 = 2\)). If, for example, we'd set a saving out of income rate of 5% (\(\alpha_Y = 0.95\)), we'd have found that savings would level out at the same value as income (\(5/5 = 1\); in this model, 50 pounds each). So, without even having to run the model explicitly, equation 6 enables us to calculate the steady-state *balance* of savings and income based on the choice of parameter values (\(\alpha_Y\) and \(\alpha_H\)).

We can reach another insight if we substitute our expression for \(H^*\) from equation 6 into our consumption function:

\[C^* = \alpha_Y Y^* + \alpha_H \frac{(1 - \alpha_Y)}{\alpha_H}Y^*\]

cancelling out \(\alpha_H\):

\[C^* = \alpha_Y Y^* + (1 - \alpha_Y) Y^*\]

and factoring out \(Y^*\):

\[C^* = (\alpha_Y + 1 - \alpha_Y) Y^*\]

which simplifies to:

\[C^* = Y^*\]

So at steady state, spending (consumption) is equal to income. This resembles an economy without any saving at all(!): a constant, unchanging amount of money flowing through the spending cycle, simply being spent and earned, spent and earned, and leading to constant levels of income. But the difference in this scenario is two-fold. Firstly, there *is* saving happening in the steady-state phase of this economy, but just no *net* saving. The amount being saved out of income is exactly balanced with the amount being spent out of savings, so although there are flows in to and out of the stock of accumulated savings, there is no change in the size of that stock. This kind of balance is called *dynamic equilibrium*.

The second difference between this steady-state phase and the wholly non-saving model is that the stock of money which is ultimately circulating through the economy is now only a fraction of the whole available money stock. The ratio of savings to income shows how the total stock of money is split up. Some portion of it is held out of circulation as accumulated savings and the remainder is able to drive the circular flow of money which arises via spending. In our example, two-thirds of the money stock was eventually hoarded as accumulated savings, with the remaining one-third supporting a lower level of income. It is clear to see why, in this type of economy, saving causes a loss of incomes: there is a finite pot of money and if some is to be held aside then some must be lost from the spending cycle which produces incomes.

## Conclusion¶

We tried 2 types of saving behaviour and found that in both cases, saving ended up being, to some extent, self-defeating.

Saving caused a build up of wealth but a reduction in incomes. This is because saved money is held out of the circular flow of money which produces incomes. Saving cannot continue indefinitely, as this would result in entire money supply being held in wealth, with no economic activty at all. A more realistic scenario is that continued attempts to save result in consumption being funded out of savings. This inherently limits the amount which can be saved. If saving is desired, our economy had to choose a balance between saving and income.

These results need to be considered in the correct context. Firstly, it is worth stressing that we are looking at saving and incomes on an *economy-wide* level. It is *not* necessarily true to say that the more a single individual saves, the lower *their individual income* will become. Both the spending behaviour and incomes of individuals are likely to vary across any economy and there is no direct relationship between a person's spending behaviour and their personal income. The insight of this model is that the *aggregate* spending behaviour of the entire economy *does* affect the *aggregate* income of the entire economy.

Secondly, these results refer to an economy with a fixed money supply. It is specifically *because* there is no source of new money in our economy that accumulating savings necessarily means removing that money from the spending cycle. In general, saving can be considered to be a drain of money from the economy. In (the much more complex) real, modern economies, there are some mechanisms available to potentially compensate for this drainage of savings. But in a fixed money supply, greater savings necessarily cause lower aggregate incomes.

An obvious implication of this model is that if the propensity to save changes through time then the aggregate income of the economy will also change as the population seeks to spend (or save) more (or less). Recessions - which, by definition, represent a decrease in aggregate income - are often interpreted in these terms: a change in the spending and saving behaviour of individuals and businesses, which only reverts when "confidence" is restored and spending returns. This type of scenario can be easily accommodated in the models described above and will be described at another time.

This post was written using the iPython Notebook

The source can be found on Github or viewed in the iPython Notebook Viewer.

The Python code used in this post is also available in script form on Github here and here.