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 T>0, but not before then.

For t=0,,T1, the money supply, price level, and interest-bearing government debt vary along a transition path that ends at t=T.

During this transition, the ratio of the real balances mt+1pt to indexed one-period government bonds R~Bt1 maturing at time t decreases each period.

This has consequences for the gross-of-interest government deficit that must be financed by printing money for times tT.

The critical money-to-bonds ratio stabilizes only at time T and afterwards.

And the larger is T, the higher is the gross-of-interest government deficit that must be financed by printing money at times tT.

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 t1, real balances evolve according to

mt+1ptmtpt1pt1pt=g

or

(30.1)#btbt1Rt1=g

where

  • bt=mt+1pt is real balances at the end of period t

  • Rt1=pt1pt is the gross rate of return on real balances held from t1 to t

The demand for real balances is

(30.2)#bt=γ1γ2Rt1.

where γ1>γ2>0.

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 R~>1 be a time-invariant gross real rate of return on government one-period inflation-indexed bonds.

With this additional source of funds, the government’s budget constraint at time t0 is now

Bt+mt+1pt=R~Bt1+mtpt+g

Just before the beginning of time 0, the public owns mˇ0 units of currency (measured in dollars) and R~Bˇ1 units of one-period indexed bonds (measured in time 0 goods); these two quantities are initial conditions set outside the model.

Notice that mˇ0 is a nominal quantity, being measured in dollars, while R~Bˇ1 is a real quantity, being measured in time 0 goods.

30.3.1. Open market operations#

At time 0, government can rearrange its portfolio of debts subject to the following constraint (on open-market operations):

R~B1+m0p0=R~Bˇ1+mˇ0p0

or

(30.3)#B1Bˇ1=1p0R~(mˇ0m0)

This equation says that the government (e.g., the central bank) can decrease m0 relative to mˇ0 by increasing B1 relative to Bˇ1.

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 t=0#

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 g.

Just before time 0, the government chooses (m0,B1) subject to constraint (30.3).

For t=0,1,,T1,

Bt=R~Bt1+gmt+1=m0

while for tT,

Bt=BT1mt+1=mt+ptg

where

(30.4)#g=[(R~1)BT1+g]

We want to compute an equilibrium {pt,mt,bt,Rt}t=0 sequence under this scheme for running monetary and fiscal policies.

Here, by fiscal policy we mean the collection of actions that determine a sequence of net-of-interest government deficits {gt}t=0 that must be financed by issuing to the public either money or interest bearing bonds.

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 t=T and first compute pT,Ru associated with the low-inflation, low-inflation-tax-rate stationary equilibrium in Inflation Rate Laffer Curves.

To start our description of our algorithm, it is useful to recall that a stationary rate of return on currency R¯ solves the quadratic equation

(30.5)#γ2+(γ1+γ2g)R¯γ1R¯2=0

Quadratic equation (30.5) has two roots, Rl<Ru<1.

For reasons described at the end of Money Financed Government Deficits and Price Levels, we select the larger root Ru.

Next, we compute

(30.6)#RT=RubT=γ1γ2Ru1pT=m0γ1gγ2Ru1

We can compute continuation sequences {Rt,bt}t=T+1 of rates of return and real balances that are associated with an equilibrium by solving equation (30.1) and (30.2) sequentially for t1:

bt=bt1Rt1+gRt1=γ1γ2γ21btpt=Rtpt1mt=bt1pt

30.6. Before time T#

Define

λγ2γ1.

Our restrictions that γ1>γ2>0 imply that λ[0,1).

We want to compute

p0=γ11[j=0λjmj]=γ11[j=0T1λjm0+j=Tλjm1+j]

Thus,

(30.7)#p0=γ11m0{1λT1λ+λTRuλ}p1=γ11m0{1λT11λ+λT1Ruλ}pT1=γ11m0{1λ1λ+λRuλ}pT=γ11m0{1Ruλ}

We can implement the preceding formulas by iterating on

pt=γ11m0+λpt+1,t=T1,T2,,0

starting from

(30.8)#pT=m0γ1gγ2Ru1=γ11m0{1Ruλ}

Remark 30.1

We can verify the equivalence of the two formulas on the right sides of (30.8) by recalling that Ru is a root of the quadratic equation (30.5) that determines steady state rates of return on currency.

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 g,mˇ0,Bˇ1,R~>1,T.

We define a mapping from p0 to p^0 as follows.

  • Set m0 and then compute B1 to satisfy the constraint on time 0 open market operations

B1Bˇ1=R~p0(mˇ0m0)
  • Compute BT1 from

BT1=R~TB1+(1R~T1R~)g
  • Compute

g=g+[R~1]BT1
  • Compute Ru,pT from formulas (30.5) and (30.6) above

  • Compute a new estimate of p0, call it p^0, from equation (30.7) above

  • Note that the preceding steps define a mapping

p^0=S(p0)
  • We seek a fixed point of S, i.e., a solution of p0=S(p0).

  • Compute a fixed point by iterating to convergence on the relaxation algorithm

p0,j+1=(1θ)S(p0,j)+θp0,j,

where θ[0,1) is a relaxation parameter.

30.8. Example Calculations#

We’ll set parameters of the model so that the steady state after time T is initially the same as in Inflation Rate Laffer Curves

In particular, we set γ1=100,γ2=50,g=3.0. We set m0=100 in that lecture, but now the counterpart will be MT, which is endogenous.

As for new parameters, we’ll set R~=1.01,Bˇ1=0,mˇ0=105,T=5.

We’ll study a “small” open market operation by setting m0=100.

These parameter settings mean that just before time 0, the “central bank” sells the public bonds in exchange for mˇ0m0=5 units of currency.

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 0 will be driven downward.

But that is not the end of the story, because this open market operation at time 0 has consequences for future settings of mt+1 and the gross-of-interest government deficit g¯t.

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 p0 in the stationary Ru equilibrium depends on the initial money supply m0.

Notice that the slope of p0 as a function of m0 is constant.

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()
_images/9d2bce651396ab3443ee5844e5859e40ed7a456f44abb1748d85bb30fccf6ef4.png

Now let’s write and implement code that lets us experiment with the time 0 open market operation described earlier.

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)
_images/fae5f6e37760399546ef4b3e1d69ed9395b48569f0543ada870d3475d0061120.png

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 t=0 reduces the price level at time t=0

  • The lower is the post-open-market-operation money supply at time 0, lower is the price level at time 0.

  • An open market operation that reduces the post open market operation money supply at time 0 also lowers the rate of return on money Ru at times tT 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 tT.

  • R is important in the context of maintaining monetary stability and addressing the consequences of increased inflation due to government deficits. Thus, a larger R might be chosen to mitigate the negative impacts on the real rate of return caused by inflation.