52. Asset Pricing II: The Lucas Asset Pricing Model#
Contents
52.1. Overview#
As stated in an earlier lecture, an asset is a claim on a stream of prospective payments.
What is the correct price to pay for such a claim?
The elegant asset pricing model of Lucas [Luc78] attempts to answer this question in an equilibrium setting with risk averse agents.
While we mentioned some consequences of Lucas’ model earlier, it is now time to work through the model more carefully, and try to understand where the fundamental asset pricing equation comes from.
A side benefit of studying Lucas’ model is that it provides a beautiful illustration of model building in general and equilibrium pricing in competitive models in particular.
Another difference to our first asset pricing lecture is that the state space and shock will be continous rather than discrete.
52.2. The Lucas Model#
Lucas studied a pure exchange economy with a representative consumer (or household), where
Pure exchange means that all endowments are exogenous.
Representative consumer means that either
there is a single consumer (sometimes also referred to as a household), or
all consumers have identical endowments and preferences
Either way, the assumption of a representative agent means that prices adjust to eradicate desires to trade.
This makes it very easy to compute competitive equilibrium prices.
52.2.1. Basic Setup#
Let’s review the set up.
52.2.1.1. Assets#
There is a single “productive unit” that costlessly generates a sequence of consumption goods
Another way to view
We will assume that this endowment is Markovian, following the exogenous process
Here
An asset is a claim on all or part of this endowment stream.
The consumption goods
For the purposes of intuition, it’s common to think of the productive unit as a “tree” that produces fruit.
Based on this idea, a “Lucas tree” is a claim on the consumption endowment.
52.2.1.2. Consumers#
A representative consumer ranks consumption streams
Here
is a fixed discount factor is a strictly increasing, strictly concave, continuously differentiable period utility function is a mathematical expectation
52.2.2. Pricing a Lucas Tree#
What is an appropriate price for a claim on the consumption endowment?
We’ll price an ex dividend claim, meaning that
the seller retains this period’s dividend
the buyer pays
today to purchase a claim on andthe right to sell the claim tomorrow at price
Since this is a competitive model, the first step is to pin down consumer behavior, taking prices as given.
Next we’ll impose equilibrium constraints and try to back out prices.
In the consumer problem, the consumer’s control variable is the share
Thus, the consumer problem is to maximize (52.1) subject to
along with
The decision to hold share
But this value is inherited as a state variable at time
52.2.2.1. The dynamic program#
We can write the consumer problem as a dynamic programming problem.
Our first observation is that prices depend on current information, and current information is really just the endowment process up until the current period.
In fact the endowment process is Markovian, so that the only relevant
information is the current state
This leads us to guess an equilibrium where price is a function
Remarks on the solution method
Since this is a competitive (read: price taking) model, the consumer will take this function
as .In this way we determine consumer behavior given
and then use equilibrium conditions to recover .This is the standard way to solve competitive equilibrum models.
Using the assumption that price is a given function
subject to
We can invoke the fact that utility is increasing to claim equality in (52.2) and hence eliminate the constraint, obtaining
The solution to this dynamic programming problem is an optimal policy expressing either
Each one determines the other, since
.
52.2.2.2. Next steps#
What we need to do now is determine equilibrium prices.
It seems that to obtain these, we will have to
Solve this two dimensional dynamic programming problem for the optimal policy.
Impose equilibrium constraints.
Solve out for the price function
directly.
However, as Lucas showed, there is a related but more straightforward way to do this.
52.2.2.3. Equilibrium constraints#
Since the consumption good is not storable, in equilibrium we must have
In addition, since there is one representative consumer (alternatively, since all consumers are identical), there should be no trade in equilibrium.
In particular, the representative consumer owns the whole tree in every period, so
Prices must adjust to satisfy these two constraints.
52.2.2.4. The equilibrium price function#
Now observe that the first order condition for (52.3) can be written as
where
To obtain
Next we impose the equilibrium constraints while combining the last two equations to get
In sequential rather than functional notation, we can also write this as
This is the famous consumption-based asset pricing equation.
Before discussing it further we want to solve out for prices.
52.2.3. Solving the Model#
Equation (52.4) is a functional equation in the unknown function
The solution is an equilibrium price function
Let’s look at how to obtain it.
52.2.3.1. Setting up the problem#
Instead of solving for it directly we’ll follow Lucas’ indirect approach, first setting
so that (52.4) becomes
Here
Equation (52.7) is a functional equation in
The plan is to solve out for
To solve (52.7) we’ll use a standard method: convert it to a fixed point problem.
First we introduce the operator
The reason we do this is that a solution to (52.7) now corresponds to a
function
In other words, a solution is a fixed point of
This means that we can use fixed point theory to obtain and compute the solution.
52.2.3.2. A little fixed point theory#
Let
We now show that
has exactly one fixed point in .For any
, the sequence converges uniformly to .
(Note: If you find the mathematics heavy going you can take 1–2 as given and skip to the next section)
Recall the Banach contraction mapping theorem.
It tells us that the previous statements will be true if we can find an
Here
To see that (52.9) is valid, pick any
Observe that, since integrals get larger when absolute values are moved to the inside,
Since the right hand side is an upper bound, taking the sup over all
52.2.4. Computation – An Example#
The preceding discussion tells that we can compute
The equilibrium price function
Let’s try this when
Utility will take the isoelastic form
Some code to implement the iterative computational procedure can be found below:
using LinearAlgebra, Statistics, Random
using Distributions, Interpolations, LaTeXStrings, Plots, NLsolve
function LucasTree(; gamma = 2.0,
beta = 0.95,
alpha = 0.9,
sigma = 0.1,
grid_size = 100,
num_z = 500)
phi = LogNormal(0.0, sigma)
z = rand(phi, num_z)
# build a grid with mass around stationary distribution
ssd = sigma / sqrt(1 - alpha^2)
grid_min = exp(-4 * ssd)
grid_max = exp(4 * ssd)
grid = range(grid_min, grid_max, length = grid_size)
# set h(y) = beta * int u'(G(y,z)) G(y,z) phi(dz)
h = similar(grid)
for (i, y) in enumerate(grid)
h[i] = beta * mean((y^alpha .* z) .^ (1 - gamma))
end
return (; gamma, beta, alpha, sigma, phi, grid, z, h)
end
# get equilibrium price for Lucas tree
function solve_lucas_model(lt; ftol = 1e-8, iterations = 500)
(; grid, gamma, alpha, beta, h, z) = lt
# approximate Lucas operator, which returns the updated function Tf on the grid
function T(f)
Af = linear_interpolation(grid, f, extrapolation_bc = Line())
# Using z for monte-carlo integration
Tf = [h[i] + beta * mean(Af.(grid[i]^alpha .* z))
for i in 1:length(grid)]
return Tf
end
sol = fixedpoint(T, zero(grid); ftol, iterations)
converged(sol) || error("Failed to converge in $(sol.iterations) iter")
f = sol.zero
price = f .* grid .^ gamma # f(y)*y^gamma
return price
end
solve_lucas_model (generic function with 1 method)
An example of usage is given in the docstring and repeated here
Random.seed!(42) # For reproducible results.
tree = LucasTree(; gamma = 2.0, beta = 0.95, alpha = 0.90, sigma = 0.1)
price_vals = solve_lucas_model(tree);
Here’s the resulting price function
plot(tree.grid, price_vals, lw = 2, label = L"p^*(y)")
plot!(xlabel = L"y", ylabel = "price", legend = :topleft)
The price is increasing, even if we remove all serial correlation from the endowment process.
The reason is that a larger current endowment reduces current marginal utility.
The price must therefore rise to induce the household to consume the entire endowment (and hence satisfy the resource constraint).
What happens with a more patient consumer?
Here the orange line corresponds to the previous parameters and the green line is price when
We see that when consumers are more patient the asset becomes more valuable, and the price of the Lucas tree shifts up.
Exercise 1 asks you to replicate this figure.
52.3. Exercises#
52.3.1. Exercise 1#
Replicate the figure to show how discount rates affect prices.
52.4. Solutions#
plot()
for beta in (0.95, 0.98)
tree = LucasTree(; beta)
grid = tree.grid
price_vals = solve_lucas_model(tree)
plot!(grid, price_vals, lw = 2, label = L"\beta = %$beta")
end
plot!(xlabel = L"y", ylabel = "price", legend = :topleft)