30. Some Unpleasant Monetarist Arithmetic#
30.1. Overview#
This lecture builds on concepts and issues introduced in Money Financed Government Deficits and Price Levels.
That lecture describes stationary equilibria that reveal a Laffer curve in the inflation tax rate and the associated stationary rate of return on currency.
In this lecture we study a situation in which a stationary equilibrium prevails after date
For
During this transition, the ratio of the real balances
This has consequences for the gross-of-interest government deficit that must be financed by printing money for times
The critical money-to-bonds ratio stabilizes only at time
And the larger is
These outcomes are the essential finding of Sargent and Wallace’s “unpleasant monetarist arithmetic” [Sargent and Wallace, 1981].
That lecture described supplies and demands for money that appear in lecture.
It also characterized the steady state equilibrium from which we work backwards in this lecture.
In addition to learning about “unpleasant monetarist arithmetic”, in this lecture we’ll learn how to implement a fixed point algorithm for computing an initial price level.
30.2. Setup#
Let’s start with quick reminders of the model’s components set out in Money Financed Government Deficits and Price Levels.
Please consult that lecture for more details and Python code that we’ll also use in this lecture.
For
or
where
is real balances at the end of period is the gross rate of return on real balances held from to
The demand for real balances is
where
30.3. Monetary-Fiscal Policy#
To the basic model of Money Financed Government Deficits and Price Levels, we add inflation-indexed one-period government bonds as an additional way for the government to finance government expenditures.
Let
With this additional source of funds, the government’s budget constraint at time
Just before the beginning of time
Notice that
30.3.1. Open market operations#
At time
or
This equation says that the government (e.g., the central bank) can decrease
This is a version of a standard constraint on a central bank’s open market operations in which it expands the stock of money by buying government bonds from the public.
30.4. An open market operation at #
Following Sargent and Wallace [Sargent and Wallace, 1981], we analyze consequences of a central bank policy that
uses an open market operation to lower the price level in the face of a persistent fiscal
deficit that takes the form of a positive
Just before time
For
while for
where
We want to compute an equilibrium
Here, by fiscal policy we mean the collection of actions that determine a sequence of net-of-interest government deficits
By monetary policy or debt-management policy, we mean the collection of actions that determine how the government divides its portfolio of debts to the public between interest-bearing parts (government bonds) and non-interest-bearing parts (money).
By an open market operation, we mean a government monetary policy action in which the government (or its delegate, say, a central bank) either buys government bonds from the public for newly issued money, or sells bonds to the public and withdraws the money it receives from public circulation.
30.5. Algorithm (basic idea)#
We work backwards from
To start our description of our algorithm, it is useful to recall that a stationary rate of return
on currency
Quadratic equation (30.5) has two roots,
For reasons described at the end of Money Financed Government Deficits and Price Levels, we select the larger root
Next, we compute
We can compute continuation sequences
30.6. Before time #
Define
Our restrictions that
We want to compute
Thus,
We can implement the preceding formulas by iterating on
starting from
30.7. Algorithm (pseudo code)#
Now let’s describe a computational algorithm in more detail in the form of a description that constitutes pseudo code because it approaches a set of instructions we could provide to a Python coder.
To compute an equilibrium, we deploy the following algorithm.
Algorithm 30.1
Given parameters include
We define a mapping from
Set
and then compute to satisfy the constraint on time open market operations
Compute
from
Compute
Compute a new estimate of
, call it , from equation (30.7) aboveNote that the preceding steps define a mapping
We seek a fixed point of
, i.e., a solution of .Compute a fixed point by iterating to convergence on the relaxation algorithm
where
30.8. Example Calculations#
We’ll set parameters of the model so that the steady state after time
In particular, we set
As for new parameters, we’ll set
We’ll study a “small” open market operation by setting
These parameter settings mean that just before time
That leaves the public with less currency but more government interest-bearing bonds.
Since the public has less currency (its supply has diminished) it is plausible to anticipate that the price level at time
But that is not the end of the story, because this open market operation at time
Let’s start with some imports:
import numpy as np
import matplotlib.pyplot as plt
from collections import namedtuple
Now let’s dive in and implement our pseudo code in Python.
# Create a namedtuple that contains parameters
MoneySupplyModel = namedtuple("MoneySupplyModel",
["γ1", "γ2", "g",
"R_tilde", "m0_check", "Bm1_check",
"T"])
def create_model(γ1=100, γ2=50, g=3.0,
R_tilde=1.01,
Bm1_check=0, m0_check=105,
T=5):
return MoneySupplyModel(γ1=γ1, γ2=γ2, g=g,
R_tilde=R_tilde,
m0_check=m0_check, Bm1_check=Bm1_check,
T=T)
msm = create_model()
def S(p0, m0, model):
# unpack parameters
γ1, γ2, g = model.γ1, model.γ2, model.g
R_tilde = model.R_tilde
m0_check, Bm1_check = model.m0_check, model.Bm1_check
T = model.T
# open market operation
Bm1 = 1 / (p0 * R_tilde) * (m0_check - m0) + Bm1_check
# compute B_{T-1}
BTm1 = R_tilde ** T * Bm1 + ((1 - R_tilde ** T) / (1 - R_tilde)) * g
# compute g bar
g_bar = g + (R_tilde - 1) * BTm1
# solve the quadratic equation
Ru = np.roots((-γ1, γ1 + γ2 - g_bar, -γ2)).max()
# compute p0
λ = γ2 / γ1
p0_new = (1 / γ1) * m0 * ((1 - λ ** T) / (1 - λ) + λ ** T / (Ru - λ))
return p0_new
def compute_fixed_point(m0, p0_guess, model, θ=0.5, tol=1e-6):
p0 = p0_guess
error = tol + 1
while error > tol:
p0_next = (1 - θ) * S(p0, m0, model) + θ * p0
error = np.abs(p0_next - p0)
p0 = p0_next
return p0
Let’s look at how price level
Notice that the slope of
This outcome indicates that our model verifies a quantity theory of money outcome, something that Sargent and Wallace [Sargent and Wallace, 1981] purposefully built into their model to justify the adjective monetarist in their title.
m0_arr = np.arange(10, 110, 10)
plt.plot(m0_arr, [compute_fixed_point(m0, 1, msm) for m0 in m0_arr])
plt.ylabel('$p_0$')
plt.xlabel('$m_0$')
plt.show()
Now let’s write and implement code that lets us experiment with the time
def simulate(m0, model, length=15, p0_guess=1):
# unpack parameters
γ1, γ2, g = model.γ1, model.γ2, model.g
R_tilde = model.R_tilde
m0_check, Bm1_check = model.m0_check, model.Bm1_check
T = model.T
# (pt, mt, bt, Rt)
paths = np.empty((4, length))
# open market operation
p0 = compute_fixed_point(m0, 1, model)
Bm1 = 1 / (p0 * R_tilde) * (m0_check - m0) + Bm1_check
BTm1 = R_tilde ** T * Bm1 + ((1 - R_tilde ** T) / (1 - R_tilde)) * g
g_bar = g + (R_tilde - 1) * BTm1
Ru = np.roots((-γ1, γ1 + γ2 - g_bar, -γ2)).max()
λ = γ2 / γ1
# t = 0
paths[0, 0] = p0
paths[1, 0] = m0
# 1 <= t <= T
for t in range(1, T+1, 1):
paths[0, t] = (1 / γ1) * m0 * \
((1 - λ ** (T - t)) / (1 - λ)
+ (λ ** (T - t) / (Ru - λ)))
paths[1, t] = m0
# t > T
for t in range(T+1, length):
paths[0, t] = paths[0, t-1] / Ru
paths[1, t] = paths[1, t-1] + paths[0, t] * g_bar
# Rt = pt / pt+1
paths[3, :T] = paths[0, :T] / paths[0, 1:T+1]
paths[3, T:] = Ru
# bt = γ1 - γ2 / Rt
paths[2, :] = γ1 - γ2 / paths[3, :]
return paths
def plot_path(m0_arr, model, length=15):
fig, axs = plt.subplots(2, 2, figsize=(8, 5))
titles = ['$p_t$', '$m_t$', '$b_t$', '$R_t$']
for m0 in m0_arr:
paths = simulate(m0, model, length=length)
for i, ax in enumerate(axs.flat):
ax.plot(paths[i])
ax.set_title(titles[i])
axs[0, 1].hlines(model.m0_check, 0, length, color='r', linestyle='--')
axs[0, 1].text(length * 0.8, model.m0_check * 0.9, r'$\check{m}_0$')
plt.show()
plot_path([80, 100], msm)

Fig. 30.1 Unpleasant Arithmetic#
Fig. 30.1 summarizes outcomes of two experiments that convey messages of Sargent and Wallace [Sargent and Wallace, 1981].
An open market operation that reduces the supply of money at time
reduces the price level at timeThe lower is the post-open-market-operation money supply at time
, lower is the price level at time .An open market operation that reduces the post open market operation money supply at time
also lowers the rate of return on money at times because it brings a higher gross of interest government deficit that must be financed by printing money (i.e., levying an inflation tax) at time . is important in the context of maintaining monetary stability and addressing the consequences of increased inflation due to government deficits. Thus, a larger might be chosen to mitigate the negative impacts on the real rate of return caused by inflation.