5. Information and Consumption Smoothing#

In addition to what’s in Anaconda, this lecture employs the following libraries:

!pip install --upgrade quantecon

Hide code cell output

Requirement already satisfied: quantecon in /home/runner/miniconda3/envs/quantecon/lib/python3.12/site-packages (0.8.2)
Requirement already satisfied: numba>=0.49.0 in /home/runner/miniconda3/envs/quantecon/lib/python3.12/site-packages (from quantecon) (0.60.0)
Requirement already satisfied: numpy>=1.17.0 in /home/runner/miniconda3/envs/quantecon/lib/python3.12/site-packages (from quantecon) (1.26.4)
Requirement already satisfied: requests in /home/runner/miniconda3/envs/quantecon/lib/python3.12/site-packages (from quantecon) (2.32.3)
Requirement already satisfied: scipy>=1.5.0 in /home/runner/miniconda3/envs/quantecon/lib/python3.12/site-packages (from quantecon) (1.13.1)
Requirement already satisfied: sympy in /home/runner/miniconda3/envs/quantecon/lib/python3.12/site-packages (from quantecon) (1.13.2)
Requirement already satisfied: llvmlite<0.44,>=0.43.0dev0 in /home/runner/miniconda3/envs/quantecon/lib/python3.12/site-packages (from numba>=0.49.0->quantecon) (0.43.0)
Requirement already satisfied: charset-normalizer<4,>=2 in /home/runner/miniconda3/envs/quantecon/lib/python3.12/site-packages (from requests->quantecon) (3.3.2)
Requirement already satisfied: idna<4,>=2.5 in /home/runner/miniconda3/envs/quantecon/lib/python3.12/site-packages (from requests->quantecon) (3.7)
Requirement already satisfied: urllib3<3,>=1.21.1 in /home/runner/miniconda3/envs/quantecon/lib/python3.12/site-packages (from requests->quantecon) (2.2.3)
Requirement already satisfied: certifi>=2017.4.17 in /home/runner/miniconda3/envs/quantecon/lib/python3.12/site-packages (from requests->quantecon) (2024.8.30)
Requirement already satisfied: mpmath<1.4,>=1.1.0 in /home/runner/miniconda3/envs/quantecon/lib/python3.12/site-packages (from sympy->quantecon) (1.3.0)

5.1. Overview#

In the linear-quadratic permanent income of consumption smoothing model described in this quantecon lecture, a scalar parameter β(0,1) plays two roles:

  • it is a discount factor that the consumer applies to future utilities from consumption

  • it is the reciprocal of the gross interest rate on risk-free one-period loans

That β plays these two roles is essential in delivering the outcome that, regardless of the stochastic process that describes his non-financial income, the consumer chooses to make consumption follow a random walk (see [Hall, 1978]).

In this lecture, we assign a third role to β:

  • it describes a first-order moving average process for the growth in non-financial income

5.1.1. Same non-financial incomes, different information#

We study two consumers who have exactly the same nonfinancial income process and who both conform to the linear-quadratic permanent income of consumption smoothing model described here.

The two consumers have different information about their future nonfinancial incomes.

A better informed consumer each period receives news in the form of a shock that simultaneously affects both today’s nonfinancial income and the present value of future nonfinancial incomes in a particular way.

A less informed consumer each period receives a shock that equals the part of today’s nonfinancial income that could not be forecast from past values of nonfinancial income.

Even though they receive exactly the same nonfinancial incomes each period, our two consumers behave differently because they have different information about their future nonfinancial incomes.

The second consumer receives less information about future nonfinancial incomes in a sense that we shall make precise.

This difference in their information sets manifests itself in their responding differently to what they regard as time t information shocks.

Thus, although at each date they receive exactly the same histories of nonfinancial income, our two consumers receive different shocks or news about their future nonfinancial incomes.

We use the different behaviors of our consumers as a way to learn about

  • operating characteristics of a linear-quadratic permanent income model

  • how the Kalman filter introduced in this lecture and/or another representation of the theory of optimal forecasting introduced in this lecture embody lessons that can be applied to the news and noise literature

  • ways of representing and computing optimal decision rules in the linear-quadratic permanent income model

  • a Ricardian equivalence outcome that describes effects on optimal consumption of a tax cut at time t accompanied by a foreseen permanent increases in taxes that is just sufficient to cover the interest payments used to service the risk-free government bonds that are issued to finance the tax cut

  • a simple application of alternative ways to factor a covariance generating function along lines described in this lecture

This lecture can be regarded as an introduction to invertibility issues that take center stage in the analysis of fiscal foresight by Eric Leeper, Todd Walker, and Susan Yang [Leeper et al., 2013], as well as in chapter 4 of [Sargent et al., 1991].

5.2. Two Representations of One Nonfinancial Income Process#

We study consequences of endowing a consumer with one of two alternative representations for the change in the consumer’s nonfinancial income yt+1yt.

For both types of consumer, a parameter β(0,1) plays three roles.

It appears

  • as a discount factor applied to future expected one-period utilities,

  • as the reciprocal of a gross interest rate on one-period loans, and

  • as a parameter in a first-order moving average that equals the increment in a consumer’s non-financial income

The first representation, which we shall sometimes refer to as the more informative representation, is

(5.1)#yt+1yt=εt+1β1εt

where {εt} is an i.i.d. normally distributed scalar process with means of zero and contemporaneous variances σε2.

This representation of the process is used by a consumer who at time t knows both yt and the shock εt and can use both of them to forecast future yt+j’s.

As we’ll see below, representation (5.1) has the peculiar property that a positive shock εt+1 leaves the discounted present value of the consumer’s financial income at time t+1 unaltered.

The second representation of the same {yt} process is

(5.2)#yt+1yt=at+1βat

where {at} is another i.i.d. normally distributed scalar process, with means of zero and now variances σa2>σε2.

The i.i.d. shock variances are related by

σa2=β2σε2>σε2

so that the variance of the innovation exceeds the variance of the original shock by a multiplicative factor β2.

Representation (5.2) is the innovations representation of equation (5.1) associated with Kalman filtering theory.

To see how this works, note that equating representations (5.1) and (5.2) for yt+1yt implies εt+1β1εt=at+1βat, which in turn implies

at+1=βat+εt+1β1εt.

Solving this difference equation backwards for at+1 gives, after a few lines of algebra,

(5.3)#at+1=εt+1+(ββ1)j=0βjεtj

which we can also write as

at+1=j=0hjεt+1jh(L)εt+1

where L is the one-period lag operator, h(L)=j=0hjLj, I is the identity operator, and

h(L)=Iβ1LIβL

Let gjEztztj be the jth autocovariance of the {ytyt1} process.

Using calculations in the quantecon lecture, where zC is a complex variable, the covariance generating function g(z)=j=gjzj of the {ytyt1} process equals

g(z)=σε2h(z)h(z1)=β2σε2>σε2,

which confirms that {at} is a serially uncorrelated process with variance

σa2=β1σε2.

To verify these claims, just notice that g(z)=β2σε2 implies that

  • g0=β2σε2, and

  • gj=0 for j0.

Alternatively, if you are uncomfortable with covariance generating functions, note that we can directly calculate σa2 from formula (5.3) according to

σa2=σε2+[1+(ββ1)2j=0β2j]=β1σε2.

5.3. Application of Kalman filter#

We can also use the the Kalman filter to obtain representation (5.2) from representation (5.1).

Thus, from equations associated with the Kalman filter, it can be verified that the steady-state Kalman gain K=β2 and the steady state conditional covariance

Σ=E[(εtε^t)2|yt1,yt2,]=(1β2)σε2

In a little more detail, let zt=ytyt1 and form the state-space representation

εt+1=0εt+εt+1zt+1=β1εt+εt+1

and assume that σε=1 for convenience

Let’s compute the steady-state Kalman filter for this system.

Let K be the steady-state gain and at+1 the one-step ahead innovation.

The steady-state innovations representation is

ε^t+1=0ε^t+Kat+1zt+1=βat+at+1

By applying formulas for the steady-state Kalman filter, by hand it is possible to verify that K=β2,σa2=β2σε2=β2, and Σ=(1β2)σε2.

Alternatively, we can obtain these formulas via the classical filtering theory described in this lecture.

5.4. News Shocks and Less Informative Shocks#

Representation (5.1) is cast in terms of a news shock εt+1 that represents a shock to nonfinancial income coming from taxes, transfers, and other random sources of income changes known to a well-informed person who perhaps has all sorts of information about the income process.

Representation (5.2) for the same income process is driven by shocks at that contain less information than the news shock εt.

Representation (5.2) is called the innovations representation for the {ytyt1} process.

It is cast in terms of what time series statisticians call the innovation or fundamental shock that emerges from applying the theory of optimally predicting nonfinancial income based solely on the information in past levels of growth in nonfinancial income.

Fundamental for the yt process means that the shock at can be expressed as a square-summable linear combination of yt,yt1,.

The shock εt is not fundamental because it has more information about the future of the {ytyt1} process than is contained in at.

Representation (5.3) reveals the important fact that the original shock εt contains more information about future y’s than is contained in the semi-infinite history yt=[yt,yt1,].

Staring at representation (5.3) for at+1 shows that it consists both of new news εt+1 as well as a long moving average (ββ1)j=0βjεtj of old news.

The more information representation (5.1) asserts that a shock εt results in an impulse response to nonfinancial income of εt times the sequence

1,1β1,1β1,

so that a shock that increases nonfinancial income yt by εt at time t is followed by a change in future y of εt times 1β1<0 in all subsequent periods.

Because 1β1<0, this means that a positive shock of εt today raises income at time t by εt and then permanently decreases all future incomes by (β11)εt.

This pattern precisely describes the following mental experiment:

  • The consumer receives a government transfer of εt at time t.

  • The government finances the transfer by issuing a one-period bond on which it pays a gross one-period risk-free interest rate equal to β1.

  • In each future period, the government rolls over the one-period bond and so continues to borrow εt forever.

  • The government imposes a lump-sum tax on the consumer in order to pay just the current interest on the original bond and its rolled over successors.

  • Thus, in periods t+1,t+2,, the government levies a lump-sum tax on the consumer of β11 that is just enough to pay the interest on the bond.

The present value of the impulse response or moving average coefficients equals dε(L)=01β=0, a fact that we’ll see again below.

Representation (5.2), i.e., the innovations representation, asserts that a shock at results in an impulse response to nonfinancial income of at times

1,1β,1β,

so that a shock that increases income yt by at at time t can be expected to be followed by an increase in yt+j of at times 1β>0 in all future periods j=1,2,.

The present value of the impulse response or moving average coefficients for representation (5.2) is da(β)=1β21β=(1+β), another fact that will be important below.

5.5. Representation of εt Shock in Terms of Future yt#

Notice that reprentation (5.1), namely, yt+1yt=β1εt+εt+1 implies the linear difference equation

εt=βεt+1β(yt+1yt).

Solving forward we obtain

εt=β(yt(1β)j=0βjyt+j+1)

This equation shows that εt equals β times the one-step-backwards error in optimally backcasting yt based on the semi-infinite future y+t[yt+1,yt+2,] via the optimal backcasting formula

E[yt|y+t]=(1β)j=0βjyt+j+1

Thus, εt exactly reveals the gap between yt and E[yt|y+t].

5.6. Representation in Terms of at Shocks#

Next notice that representation (5.2), namely, yt+1yt=βat+at+1 implies the linear difference equation

at+1=βat+(yt+1yt)

Solving this equation backward establishes that the one-step-prediction error at+1 is

at+1=yt+1(1β)j=0βjytj.

Here the information set is yt=[yt,yt1,] and a one step-ahead optimal prediction is

E[yt+1|yt]=(1β)j=0βjytj

5.7. Permanent Income Consumption-Smoothing Model#

When we computed optimal consumption-saving policies for our two representations (5.1) and (5.2) by using formulas obtained with the difference equation approach described in quantecon lecture, we obtained:

for a consumer having the information assumed in the news representation (5.1):

ct+1ct=0bt+1bt=β1εt

for a consumer having the more limited information associated with the innovations representation (5.2):

ct+1ct=(1β2)at+1bt+1bt=βat

These formulas agree with outcomes from Python programs below that deploy state-space representations and dynamic programming.

Evidently, although they receive exactly the same histories of nonfinancial incomethe two consumers behave differently.

The better informed consumer who has the information sets associated with representation (5.1) responds to each shock εt+1 by leaving his consumption unaltered and saving all of εt+1 in anticipation of the permanently increased taxes that he will bear in order to service the permanent interest payments on the risk-free bonds that the government has presumably issued to pay for the one-time addition εt+1 to his time t+1 nonfinancial income.

The less well informed consumer who has information sets associated with representation (5.2) responds to a shock at+1 by increasing his consumption by what he perceives to be the permanent part of the increase in consumption and by increasing his saving by what he perceives to be the temporary part.

The behavior of the better informed consumer sharply illustrates the behavior predicted in a classic Ricardian equivalence experiment.

5.8. State Space Representations#

We now cast our representations (5.1) and (5.2), respectively, in terms of the following two state space systems:

(5.4)#[yt+1εt+1]=[1β100][ytεt]+[σεσε]vt+1yt=[10][ytεt]

and

(5.5)#[yt+1at+1]=[1β00][ytat]+[σaσa]ut+1yt=[10][ytat]

where {vt} and {ut} are both i.i.d. sequences of univariate standardized normal random variables.

These two alternative income processes are ready to be used in the framework presented in the section “Comparison with the Difference Equation Approach” in thid quantecon lecture.

All the code that we shall use below is presented in that lecture.

5.9. Computations#

We shall use Python to form two state-space representations (5.4) and (5.5).

We set the following parameter values σε=1,σa=β1σε=β1 where β is the same value as the discount factor in the household’s problem in the LQ savings problem in the lecture.

For these two representations, we use the code in this lecture to

  • compute optimal decision rules for ct,bt for the two types of consumers associated with our two representations of nonfinancial income

  • use the value function objects P,d returned by the code to compute optimal values for the two representations when evaluated at the initial condition

x0=[100]

for each representation.

  • create instances of the LinearStateSpace class for the two representations of the {yt} process and use them to obtain impulse response functions of ct and bt to the respective shocks εt and at for the two representations.

  • run simulations of {yt,ct,bt} of length T under both of the representations

We formulae the problem:

min t=0βt(ctγ)2

subject to a sequence of constraints

ct+bt=11+rbt+1+yt,t0

where yt follows one of the representations defined above.

Define the control as utctγ.

(For simplicity we can assume γ=0 below because γ has no effect on the impulse response functions that interest us.)

The state transition equations under our two representations for the nonfinancial income process {yt} can be written as

[yt+1εt+1bt+1]=[1β10000(1+r)01+r]A1[ytεtbt]+[001+r]B1[ct]+[σεσε0]C1νt+1,

and

[yt+1at+1bt+1]=[1β0000(1+r)01+r]A2[ytatbt]+[001+r]B2[ct]+[σaσa0]C2ut+1.

As usual, we start by importing packages.

import numpy as np
import quantecon as qe
import matplotlib.pyplot as plt
# Set parameters
β, σϵ = 0.95, 1
σa = σϵ / β

R = 1 / β

# Payoff matrices are the same for two representations
RLQ = np.array([[0, 0, 0],
                [0, 0, 0],
                [0, 0, 1e-12]]) # put penalty on debt
QLQ = np.array([1.])
# More informative representation state transition matrices
ALQ1 = np.array([[1, -R, 0],
                 [0, 0, 0],
                 [-R, 0, R]])
BLQ1 = np.array([[0, 0, R]]).T
CLQ1 = np.array([[σϵ, σϵ, 0]]).T

# Construct and solve the LQ problem
LQ1 = qe.LQ(QLQ, RLQ, ALQ1, BLQ1, C=CLQ1, beta=β)
P1, F1, d1 = LQ1.stationary_values()
# The optimal decision rule for c
-F1
array([[ 1.  , -1.  , -0.05]])

Evidently, optimal consumption and debt decision rules for the consumer having news representation (5.1) are

ct=ytεt(1β)bt,bt+1=β1ct+β1btβ1yt=β1ytβ1εt(β11)bt+β1btβ1yt=btβ1εt.
# Innovations representation
ALQ2 = np.array([[1, -β, 0],
                 [0,  0, 0],
                 [-R, 0, R]])
BLQ2 = np.array([[0, 0, R]]).T
CLQ2 = np.array([[σa, σa, 0]]).T

LQ2 = qe.LQ(QLQ, RLQ, ALQ2, BLQ2, C=CLQ2, beta=β)
P2, F2, d2 = LQ2.stationary_values()
-F2
array([[ 1.    , -0.9025, -0.05  ]])

For a consumer having access only to the information associated with the innovations representation (5.2), the optimal decision rules are

ct=ytβ2at(1β)bt,bt+1=β1ct+β1btβ1yt=β1ytβat(β11)bt+β1btβ1yt=btβat.

Now we construct two Linear State Space models that emerge from using optimal policies of the form ut=Fxt.

Take the more informative original representation (5.1) as an example:

[yt+1εt+1bt+1]=(A1B1F1)[ytεtbt]+C1νt+1
[ctbt]=[F1Sb][ytεtbt]

To have the Linear State Space model be of an innovations representation form (5.2), we can simply replace the corresponding matrices.

# Construct two Linear State Space models
Sb = np.array([0, 0, 1])

ABF1 = ALQ1 - BLQ1 @ F1
G1 = np.vstack([-F1, Sb])
LSS1 = qe.LinearStateSpace(ABF1, CLQ1, G1)

ABF2 = ALQ2 - BLQ2 @ F2
G2 = np.vstack([-F2, Sb])
LSS2 = qe.LinearStateSpace(ABF2, CLQ2, G2)

The following code computes impulse response functions of ct and bt.

J = 5 # Number of coefficients that we want

x_res1, y_res1 = LSS1.impulse_response(j=J)
b_res1 = np.array([x_res1[i][2, 0] for i in range(J)])
c_res1 = np.array([y_res1[i][0, 0] for i in range(J)])

x_res2, y_res2 = LSS2.impulse_response(j=J)
b_res2 = np.array([x_res2[i][2, 0] for i in range(J)])
c_res2 = np.array([y_res2[i][0, 0] for i in range(J)])
c_res1 / σϵ, b_res1 / σϵ
(array([1.99998906e-11, 1.89473923e-11, 1.78947621e-11, 1.68421319e-11,
        1.57895017e-11]),
 array([ 0.        , -1.05263158, -1.05263158, -1.05263158, -1.05263158]))
plt.title("more informative representation")
plt.plot(range(J), c_res1 / σϵ, label="c impulse response function")
plt.plot(range(J), b_res1 / σϵ, label="b impulse response function")
plt.legend()
<matplotlib.legend.Legend at 0x7fcb4e6d7d40>
_images/154ffd32a5baafd7b615432a38303fe5bd75d23e98cc5628d66438ffc55cec63.png

The above two impulse response functions show that when the consumer has the information assumed in the more informative representation (5.1), his response to receiving a positive shock of εt is to leave his consumption unchanged and to save the entire amount of his extra income and then forever roll over the extra bonds that he holds.

To see this notice, that starting from next period on, his debt permanently decreases by β1

c_res2 / σa, b_res2 / σa
(array([0.0975, 0.0975, 0.0975, 0.0975, 0.0975]),
 array([ 0.  , -0.95, -0.95, -0.95, -0.95]))
plt.title("innovations representation")
plt.plot(range(J), c_res2 / σa, label="c impulse response function")
plt.plot(range(J), b_res2 / σa, label="b impulse response function")
plt.plot([0, J-1], [0, 0], '--', color='k')
plt.legend()
<matplotlib.legend.Legend at 0x7fcb973d8560>
_images/82908cba96f2ec8c493bb562de566e0dbe3953263708e36448b98a04f0209d07.png

The above impulse responses show that when the consumer has only the information that is assumed to be available under the innovations representation (5.2) for {ytyt1}, he responds to a positive at by permanently increasing his consumption.

He accomplishes this by consuming a fraction (1β2) of the increment at to his nonfinancial income and saving the rest, thereby lowering bt+1 in order to finance the permanent increment in his consumption.

The preceding computations confirm what we had derived earlier using paper and pencil.

Now let’s simulate some paths of consumption and debt for our two types of consumers while always presenting both types with the same {yt} path.

# Set time length for simulation
T = 100
x1, y1 = LSS1.simulate(ts_length=T)
plt.plot(range(T), y1[0, :], label="c")
plt.plot(range(T), x1[2, :], label="b")
plt.plot(range(T), x1[0, :], label="y")
plt.title("more informative representation")
plt.legend()
<matplotlib.legend.Legend at 0x7fcb4e6d6e40>
_images/76ef40c08613bba3a09091f8a56258d9bce60ef0f9409a69ff29e7d203b1106f.png
x2, y2 = LSS2.simulate(ts_length=T)
plt.plot(range(T), y2[0, :], label="c")
plt.plot(range(T), x2[2, :], label="b")
plt.plot(range(T), x2[0, :], label="y")
plt.title("innovations representation")
plt.legend()
<matplotlib.legend.Legend at 0x7fcb4dfd96a0>
_images/93b201a60d008f489e8a76a398ab87617994b5d62b8d5f1a02edf0100b91f7d2.png

5.10. Simulating Income Process and Two Associated Shock Processes#

We now form a single {yt}t=0T realization that we will use to simulate decisions associated with our two types of consumer.

We accomplish this in the following steps.

  1. We form a {yt,εt} realization by drawing a long simulation of {εt}t=0T, where T is a big integer, εt=σεvt, vt is a standard normal scalar, y0=100, and

    yt+1yt=β1εt+εt+1.
  2. We take the {yt} realization generated in step 1 and form an innovation process {at} from the formulas

    a0=0at=j=0t1βj(ytjytj1)+βta0,t1
  3. We throw away the first S observations and form a sample {yt,εt,at}S+1T as the realization that we’ll use in the following steps.

  4. We use the step 3 realization to evaluate and simulate the decision rules for ct,bt that Python has computed for us above.

The above steps implement the experiment of comparing decisions made by two consumers having identical incomes at each date but at each date having different information about their future incomes.

5.11. Calculating Innovations in Another Way#

Here we use formula (5.3) above to compute at+1 as a function of the history εt+1,εt,εt1,

Thus, we compute

at+1=βat+εt+1β1εt=β(βat1+εtβ1εt1)+εt+1β1εt=β2at1+β(εtβ1εt1)+εt+1β1εt==βt+1a0+j=0tβj(εt+1jβ1εtj)=βt+1a0+εt+1+(ββ1)j=0t1βjεtjβt1ε0.

We can verify that we recover the same {at} sequence computed earlier.

5.12. Another Invertibility Issue#

This quantecon lecture contains another example of a shock-invertibility issue that is endemic to the LQ permanent income or consumption smoothing model.

The technical issue discussed there is ultimately the source of the shock-invertibility issues discussed by Eric Leeper, Todd Walker, and Susan Yang [Leeper et al., 2013] in their analysis of fiscal foresight.