Research Notebook

Notes: Kristensen and Mele (2011)

February 21, 2012 by Alex

1. Introduction

In this post, I work through Adding and Subtracting Black Scholes, JFE (2011) by Antonio Mele and Dennis Kristensen. This paper develops a method for approximating the price of an asset where no closed form expression exists. In the analysis below, I focus my attention on pricing a European option on a stock when the stock price displays stochastic volatility.

In Section 2, I describe the approximation method which hinges on the wedge between the infinitesimal generator of the asset price under the true specification (e.g., with stochastic volatility) and a simpler reference specification (e.g., with constant volatility). Then, in Section 3 I conduct some simple numerical exercises to see how the approximation behaves in practice.

2. The Method

Consider a stock with a price X_t in units of \$‘s at time t in units of \mathtt{yr}‘s whose evolution under the risk neutral measure is described by the equations below:

(1)   \begin{align*} \mathtt{d} X_t &= r \cdot X_t \cdot \mathtt{d}t + V_t^{\scriptscriptstyle \frac{1}{2}} \cdot X_t \cdot \mathtt{d}B_{x,t} \\ \mathtt{d} V_t &= \kappa \cdot \left( \alpha - V_t \right) \cdot \mathtt{d}t + \omega \cdot | V_t |^\xi \cdot \mathtt{d}B_{v,t} \end{align*}

Here, r is the risk free rate in units of 1/\mathtt{yr}, V_t is the instantaneous variance of the stock price in units of 1/\mathtt{yr}, \kappa is the mean reversion rate of the variance of the stock price in units of 1/\mathtt{yr}, \alpha is the mean of the variance of the stock price in units of 1/\mathtt{yr} and both \omega and \xi are constants parameterizing the volatility of the variance of the stock price where \omega has units of \mathtt{yr}^{\xi - {\scriptscriptstyle \frac{3}{2}}} and \xi is unitless.

Variance and price of the underlying stock.

Let \phi(X) = \max\left\{ X - K,0 \right\} be the payout of a European option on this stock with strike price K (in \$). Then, define the price of this option P as follows:

(2)   \begin{align*} P(X,V;t) &= \mathtt{E} \left[ \ \phi(X_T) \ \middle| \ X_t, V_t \  \right] \end{align*}

As shown in Ait-Sahalia and Kimmel (2007), when \xi \neq 1/2 there is no closed form solution for P. The authors approximate P(X,V;t) by computing the difference between the infinitesimal generators of P(X,V;t) and \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t) where \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t) is the price of a European option on a stock whose volatility is constant and set to \sigma.

Definition (Infinitesimal Generator): Let \{Y_t\} be a time homogeneous Ito diffusion in \mathcal{R}^N. The infinitesimal generator \mathtt{A} of Y_t is defined as:

(3)   \begin{align*} \mathtt{A}[f(y)] &= \lim_{t \searrow 0} \left\{ \frac{\mathtt{E}[f(Y_t)] - f(y)}{t} \right\} \end{align*}

Source: Oksendal (2003)

The infinitesimal generator characterizes how a stochastic process \{Y_t\} would look different if we peered an instant \mathtt{d}t into the future. The theorem below gives a method for computing the infinitesimal generator.

Theorem (Infinitesimal Generator of an Ito Process): Let \{Y_t\} be the Ito diffusion in \mathcal{R}^N:

(4)   \begin{align*} \mathtt{d}Y_t &= m(Y_t) \cdot \mathtt{d}t + s(Y_t) \cdot \mathtt{d}B_t \end{align*}

If f \in \mathcal{C}^2 with a compact support then:

(5)   \begin{align*} \mathtt{A}[f(y)] &= \sum_{n=1}^N m_n(y) \cdot \partial_n[f(y)] + \frac{1}{2} \cdot \sum_{n=1}^N \sum_{n'=1}^N \left( s_n(y) s_{n'}(y)^{\top} \right) \cdot \partial_{n,n'}[f(y)] \end{align*}

Source: Oksendal (2003)

To tie this mathematical construction back into the financial application of options pricing, note that in a world with no financial frictions a la Black and Scholes (1973) the instantaneous change in the price of an asset must exactly equal the interest payment earned by depositing the current price of the asset in a bank for the next instant. Thus, in generator form the second order partial differential equation pinning down the price of a European option on a stock whose price has constant volatility can be written as follows:

(6)   \begin{align*} 0 &= \overset{\mathtt{\scriptscriptstyle BS}}{\mathtt{A}}[\overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t)] - r \cdot \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t) \end{align*}

where the generator can be characterized as:

Proposition (Infinitesimal Generator given Constant Variance): The generator for the price of a European option on a stock with constant volatility \sigma is given by:

(7)   \begin{align*} \overset{\mathtt{\scriptscriptstyle BS}}{\mathtt{A}} &= \partial_t + r \cdot X_t \cdot \partial_x + \frac{\sigma^2 \cdot X_t^2}{2} \cdot \partial_{x,x}  \end{align*}

Proof: If a stock price displays constant volatility \sigma, I can write dX_t as follows:

(8)   \begin{align*} \mathtt{d}X_t &= r \cdot X_t \cdot \mathtt{d}t + \sigma \cdot X_t \cdot \mathtt{d}B_{x,t} \end{align*}

where \sigma is the instantaneous volatility of the stock price in units of 1/\sqrt{\mathtt{yr}}. Plugging this differential equation into the formula above yield:

(9)   \begin{align*} m(X_t) &= r \cdot X_t \\ s(X_t) &= \sigma \cdot X_t \end{align*}

I can conduct a similar exercise to characterize the price of a European option on a stock with stochastic volatility. For this asset, I know that:

(10)   \begin{align*} 0 &= \mathtt{A}[P(X,V;t)] - r \cdot P(X,V;t) \end{align*}

What’s more, I can use the same theorem to characterize the infinitesimal generator as:

Proposition (Infinitesimal Generator given Stochastic Variance): The generator for the price of a European option on a stock with stochastic volatility V_t is given by:

(11)   \begin{align*} \mathtt{A} &= \partial_t + r \cdot X_t \cdot \partial_x + \frac{V_t \cdot X_t^2}{2} \cdot \partial_{x,x}  \\ &\qquad \qquad + \kappa \cdot \left( \alpha - V_t \right) \cdot \partial_v + \frac{\omega^2 \cdot V_t^{2 \cdot \xi}}{2} \cdot \partial_{v,v}  \\ &\qquad \qquad \qquad \qquad + \rho \cdot \omega \cdot V_t^{\xi + 1/2} \cdot X_t \cdot \partial_{x,v} \end{align*}

Proof: Applying Ito’s lemma to f(X,V;t) and defining y = (X,V,t) for shorthand yields an expression for \mathtt{d}f(y) as:

(12)   \begin{align*} \mathtt{d}f(y) &= \partial_t [f(y)] \cdot \mathtt{d}t + \partial_x [f(y)] \cdot \mathtt{d}X + \partial_v [f(y)] \cdot \mathtt{d}V  \\ &\qquad \qquad + \frac{1}{2} \cdot \left\{ \ \partial_{x,x} [f(y)] \cdot (\mathtt{d}X)^2 + \partial_{x,v} [f(y)] \cdot (\mathtt{d}X \cdot \mathtt{d}V) + \partial_{v,v}[f(y)] \cdot (\mathtt{d}V)^2 \ \right\} \\ &= \partial_t [f(y)] \cdot \mathtt{d}t + \partial_x [f(y)] \cdot \left\{ r \cdot X \cdot \mathtt{d}t + V^{\scriptscriptstyle \frac{1}{2}} \cdot X \cdot \mathtt{d}B_x \right\} \\ &\qquad + \partial_v [f(y)] \cdot \left\{ \kappa \cdot (\alpha - V) \cdot \mathtt{d}t + \omega \cdot |V|^\xi \cdot \mathtt{d}B_v \right\} \\ &\qquad \qquad + \frac{1}{2} \cdot \left\{ \ \partial_{x,x} [f(y)] \cdot \left( V \cdot X^2 \right) \cdot \mathtt{d}t \right. \\ &\qquad \qquad \qquad \left. + \partial_{x,v} [f(y)] \cdot \left( \rho \cdot \omega \cdot V^{\xi + {\scriptscriptstyle \frac{1}{2}}} \cdot X \right) \cdot \mathtt{d}t \right. \\ &\qquad \qquad \qquad \qquad \left. + \partial _{v,v} [f(y)] \cdot \left( \omega^2 \cdot V^{2 \cdot \xi} \right) \cdot \mathtt{d}t \ \right\} \\ &= \Big\{ \ \partial_t [f(y)] + \partial_x [f(y)] \cdot r \cdot X + \partial_v [f(y)] \cdot \kappa \cdot (\alpha - V) \\ &\qquad \qquad + \frac{1}{2} \cdot \left( \partial_{x,x} [f(y)] \cdot \left( V \cdot X^2 \right) \right. \\ &\qquad \qquad \qquad \left. + \partial_{x,v} [f(y)] \cdot \left( \rho \cdot \omega \cdot V^{\xi + {\scriptscriptstyle \frac{1}{2}}} \cdot X \right) \right. \\ &\qquad \qquad \qquad \qquad \left. + \partial _{v,v} [f(y)] \cdot \left( \omega^2 \cdot V^{2 \cdot \xi} \right) \right) \  \Big\} \cdot \mathtt{d}t \\ &\qquad \qquad + \left\{ \partial_x [f(y)] \cdot V^{\scriptscriptstyle \frac{1}{2}} \cdot X \right\} \cdot \mathtt{d}B_{x,t}  \\ &\qquad \qquad \qquad + \left\{ \partial_v [f(y)] \cdot \omega \cdot |V|^\xi \right\} \cdot \mathtt{d}B_{v,t} \end{align*}

Collecting terms yields expressions for m and s which given \mathtt{A}.

The authors’ key insight is that applying the infinitesimal generator \mathtt{A} to the difference P(X,V;t) - \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t) yields the expression:

(13)   \begin{align*} \delta(X,V,\sigma;t) &= \mathtt{A}\left[ P(X,V;t) - \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t) \right] - r \cdot \left(P(X,V;t) - \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t) \right) \\ &= \frac{(\sigma^2 - V_t) \cdot X_t^2}{2} \cdot \partial_{x,x}[ \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t)] \end{align*}

given the boundary condition that P(X,V;T) - \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;T) = 0 for all V and X. This wedge given by \delta(X,V,\sigma;t) has the natural interpretation of the hedging cost incurred by a trader continuously hedging the risk of the European option with stochastic volatility using the incorrect constant volatility model. Thus, we can write the true price as the Black and Scholes price plus an error correction term:

(14)   \begin{align*} P(X,V;t) &= \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t) + \mathtt{E}\left[ \ \int_t^T e^{-r \cdot (u-t)} \cdot \delta(X,V;u) \cdot \mathtt{d}u \ \middle| \ X_t, V_t \ \right] \end{align*}

This is a particularly nice formulation as each of the error terms is a function of only the Black and Scholes (1973) formulation with constant volatility.

3. Numerical Results

To put this approximation method to work, use a Taylor expansion around \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t):

(15)   \begin{align*} P(X,V;t) &= \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t) + \sum_{n=0}^\infty \frac{(T-t)^{n+1}}{(n+1)!} \cdot \delta_n(X,V;t) \end{align*}

Each of the expansion terms can be expressed recursively as follows:

(16)   \begin{align*} \delta_n(X,V;t) &= \mathtt{A}[\delta_{n-1}(X,V;t)] - r \cdot \delta_{n-1}(X,V;t) \\ \delta_0(X,V;t) &= \frac{(\sigma^2 - V_t) \cdot X_t^2}{2} \cdot \partial_{x,x}[ \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t)] \end{align*}

The Black and Scholes (1973) options price given constant volatility \sigma can be expressed as:

(17)   \begin{align*} \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t) &= N(q_1) \cdot X - N(q_2) \cdot K \cdot e^{-r} \\ q_1 &= \frac{\log \left( \frac{X}{K} \right) + \left( r + \frac{\sigma^2}{2} \right)}{\sigma} \\ q_2 &= q_1 - \sigma \end{align*}

Thus, expanding out the first 2 approximating terms yields:

(18)   \begin{align*} P_0(X,V;t) &= \overset{\mathtt{\scriptscriptstyle BS}}{P}(X;t) + \frac{(\sigma^2 - V_t) \cdot X_t^2}{2} \cdot \left( \frac{N(d_1)}{X \cdot \sigma} \right) \\ P_1(X,V;t) &= P_0(X,V;t) + \frac{1}{2} \cdot \left[ \frac{\kappa \cdot (\alpha - V_t) \cdot X_t^2}{2} \cdot \left( \frac{N(d_1)}{X \cdot \sigma} \right) + \omega \cdot \rho \cdot V_t^{\xi + {\scriptscriptstyle \frac{1}{2}}} \cdot X_t \cdot \left\{ X_t \cdot  \right\} \right] \end{align*}

In order to simplify calculations, I take V_t=0.05 to kill off the P_0(X,V;t) term in my numerical analysis. Below I replicate Figure 3 from the Kristensen and Mele (2011) for N \in \{0,1\} and plot the mispricing as a fraction of the Black and Scholes (1973) price with \xi = 1/2 for N = 0, 1. The strike price is K = 100, the time to maturity is 1 year, the remaining parameter values are \kappa = 2, \alpha = 0.04, \omega = 0.10, \rho = -0.50 and r = 0.10.

Mispricing as a fraction of the Black and Scholes (1973) price with xi = 1/2 for N = 0, 1. The strike price is K = 100, the time to maturity is 1 year, the remaining parameter values are kappa = 2, alpha = 0.04, omega = 0.10, rho = -0.50 and r = 0.10.

The code for the simulations can be found on www.SageMath.org. The simulation represents estimates from 500 iterations at 40 price points between X_0 = 80 and X_0 = 120.

Filed Under: Uncategorized

The Buckingham Pi Theorem

January 20, 2012 by Alex

1. Introduction

In this post I outline the Buckingham \pi Theorem which shows how to use dimensional analysis to compute answers to seemingly intractable physical problems. For instance, in 1950 Geoffrey Taylor used the theorem to work out the energy payload released by the 1945 Trinity test atomic explosion in New Mexico simply by looking at slow motion video records. My main source for this post is Bluman and Kumei (1989).

Frame from slow motion footage of the Trinity nuclear test with a distance measurement showing the blast radius as well as a time measure showing seconds elapsed since denotation.

2. Basic Framework

The Buckingham \pi Theorem concerns physical problems with the following form: There is a variable of interest, y, which is some unknown function of N different physical quantities x_1, x_2, \ldots, x_N.

(1)   \begin{align*} y &= f(x_1, x_2, \ldots, x_N) \end{align*}

Each of these physical quantities is composed of measurements in only M \leq (N-1) fundamental dimensions labeled c_1, c_2, \ldots, c_M. Thus, I can define a dimension operator which gives the dimensions of an arbitrary variable w \in \{y, x_1, x_2, \ldots, x_N\} and write its output as:

(2)   \begin{align*} \mathtt{dim}[z] &= \prod_{m=1}^{M} c_m^{a_m} \end{align*}

So, for example, if z is measuring pressure on the surface of a table, I could write \mathtt{dim}[z] = \mathtt{lb}/\mathtt{in}^2 where c_1 = \mathtt{lb}, c_2 = \mathtt{in}, a_1 = 1 and a_2 = -2.

Definition (Dimensionless Quantity):
An arbitrary variable w \in \{y, x_1, x_2, \ldots, x_N\} is dimensionless if:

(3)   \begin{align*} \mathtt{dim}[z] &= 1 \end{align*}

3. Main Result

Now, I show how to reformulate this problem and apply linear algebra to the dimensional exponents to derive a characterization of the solution to f(x_1,x_2,\ldots,x_N) - y = 0 as a function of dimensionless quantities. First, I define A as an M \times N matrix of dimensional exponents for x_1,x_2,\ldots,x_N and B as the M \times 1 vector of dimensional exponents for y:

(4)   \begin{align*} A &= \begin{bmatrix} a_{1,1} & a_{1,2} & \cdots & a_{1,N} \\ a_{2,1} & a_{2,2} & \cdots & a_{2,N} \\ \vdots & \vdots & \ddots & \vdots \\ a_{M,1} & a_{M,2} & \cdots & a_{M,N} \end{bmatrix}, \quad B = \begin{bmatrix} b_1 & b_2 & \cdots &  b_M  \end{bmatrix}^{\top} \end{align*}

Next, we know that if A has full rank, then there will N - M = K solutions to the system of equations 0 = AU. Define U as this N \times K matrix of solutions.

(5)   \begin{align*} U &= \begin{bmatrix} u_{1,1} & u_{1,2} & \cdots & u_{1,K} \\ u_{2,1} & u_{2,2} & \cdots & u_{2,K} \\ \vdots & \vdots & \ddots & \vdots \\  u_{N,1} & u_{N,2} & \cdots & u_{N,K} \end{bmatrix} \end{align*}

Finally, define V as the solution to system of equations 0 = AV + B:

(6)   \begin{align*} V &= \begin{bmatrix} v_1 & v_2 & \cdots &  v_N  \end{bmatrix}^{\top} \end{align*}

With these objects in hand, I can now state the Buckingham \pi Theorem.

Proposition (Buckingham \pi):
A physical system y = f(x_1,x_2,\ldots,x_N) with M fundamental dimensions can be restated as:

(7)   \begin{align*} y &= \frac{g(\pi_1,\pi_2,\cdots,\pi_K)}{x_1^{u_1} \cdot x_2^{u_2} \cdots x_N^{u_N}}, \end{align*}

where K = N - M, g(\cdot) is an unknown function and \{\pi_1,\pi_2,\cdots,\pi_K\} are dimensionless parameters constructed from the physical parameters \{x_1,x_2,\ldots,x_N\} using equations of the form below:

(8)   \begin{align*} \pi_k &= x_1^{v_1} \cdot x_2^{v_2} \cdots x_N^{v_N}, \end{align*}

4. An Example

I now give an example of how to employ this theorem by working out the nuclear payload example from the introduction. For more information on this example, take a look at this blog post. Suppose that an atomic blast has a shock wave radius of \delta = f(\epsilon,\tau,\rho,\phi) with variables:

  1. \epsilon: Energery released by the explosion,
  2. \tau: Time elapsed since the explosion took place,
  3. \rho: Initial density, and
  4. \phi: Initial pressure.

For this problem N = 4 and M=3 with fundamental dimensions of length l, mass m, and time t yielding the dimensional matrix A written below:

(9)   \begin{align*} A &= \begin{bmatrix} 2 & 0 & -3 & -1 \\ 1 & 0 & 1 & 1 \\ -2 & 1 & 0 & -2 \end{bmatrix} \end{align*}

The energy (force) released by the bomb is the amount of mass accelerating through a unit square on the surface of the blast wave. Since K = N - M = 1, we have only 1 dimensionless constant which can be computed as the solution to the system of equations 0 = AU:

(10)   \begin{align*} \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix} &= \begin{bmatrix} 2 & 0 & -3 & -1 \\ 1 & 0 & 1 & 1 \\ -2 & 1 & 0 & -2 \end{bmatrix} \begin{bmatrix} - \alpha \cdot 2 \\ \alpha \cdot 6 \\ - \alpha \cdot 3 \\ \alpha \cdot 5 \end{bmatrix}  \end{align*}

Setting the scalar free parameter \alpha = 1, I can write \pi_1 as:

(11)   \begin{align*} \pi_1 &= \epsilon^{-2} \cdot \tau^{6} \cdot \rho^{-3} \cdot \phi^{5} \end{align*}

The dimension of the shock wave radius \delta is in units of distance yielding the B dimension matrix below:

(12)   \begin{align*} B &= \begin{bmatrix} 1 & 0 & 0 \end{bmatrix}^{\top} \end{align*}

The system of 3 equations 0 = AV + B has 4 unknowns:

(13)   \begin{align*} 0 &= 1 + 2 \cdot v_1 - 3 \cdot v_3 - v_4 \\ 0 &= v_1 + v_3 + v_4 \\ 0 &= -2 \cdot v_1 + v_2 - 2 \cdot v_4 \end{align*}

Thus, the vector V will thus be defined up to a single free parameter \hat{\alpha} \geq 0:

(14)   \begin{align*} V &= \begin{bmatrix} (8 \cdot \hat{\alpha} - 1)/5 \\ 2 \cdot (3 \cdot \hat{\alpha} - 1) / 5 \\ (1 - 3 \cdot \hat{\alpha}) / 5 \\ \hat{\alpha} \end{bmatrix}^{\top} \end{align*}

Using the formula \pi = \delta/\left( \epsilon^{v_1} \cdot \tau^{v_2} \cdot \rho^{v_3} \cdot \phi^{v_4} \right) and tuning \hat{\alpha} = 0, I can compute \pi as:

(15)   \begin{align*} \pi &= \delta \cdot \left[ \frac{\epsilon \cdot \tau^2}{\rho} \right]^{-1/5}  \end{align*}

Combining all of these results yields a formulation for \delta in terms of a constant (\epsilon \cdot \tau^2/\rho)^{1/5} and an unknown function of the dimensionless quantity g(\pi_1):

(16)   \begin{align*} \delta &= \left[ \frac{\epsilon \cdot \tau^2}{\rho} \right]^{1/5} \cdot g \left( \pi_1 \right) \end{align*}

Taylor expanding around g(0) where g(0) \neq 0 yields a formulation where \delta \propto t^{2/5} with scaling constant c given by:

(17)   \begin{align*} c &= \left( \frac{E}{\rho_0} \right)^{1/5} \cdot g(0) \end{align*}

Setting g(0) = 1, the \log \times \log plot of \delta vs \tau yielded an accurate fit where the predicted values fall on the solid line and the (declassified) empirically observed values are denoted by +‘s in the plot below:

Filed Under: Uncategorized

Notes: Glosten and Milgrom (1985)

December 12, 2011 by Alex

1. Introduction

In this post, I replicate the main results from Glosten and Milgrom (1985) using the setup outlined in Back and Baruch (2003). I begin in Section 2 by laying out the continuous time asset pricing framework. I consider the behavior of an informed trader who trades a single risky asset with a market maker that is constrained by perfect competition. Then, in Section 3 I solve for the optimal trading strategy of the informed agent as a system of first order conditions and boundary constraints. Finally, I show how to numerically compute comparative statics for this model.

2. Asset Pricing Framework

There is a single risky asset which pays out v \in \{0,1\} at a random date \tau > 0. There is an informed trader and a stream of uninformed traders who arrive with Poisson intensity \beta. All traders have a fixed order size of \delta  = 1. The model end date \tau is distributed exponentially with intensity \kappa.

Let z_{t-} denote the net position of the noise traders up to but not including date t and let x_{t-} denote the net position of the informed up to but not including date t. The market maker sees an anonymous order flow at each time t of dy_t = dx_t + dz_t so that \{y_s \mid s \leq t\} generates a \sigma-field \mathcal{F}_t^y which represents the market maker’s information set.

Perfect competition dictates that the market maker sets the price of the risky asset p_t = \mathbb{E}\left[ \ v \ \middle| \ \mathcal{F}_t^y \ \right]. Let b_t and a_t denote the bid and ask prices at time t.

(1)   \begin{align*} a_t &= \mathbb{E} \left[ \ v \ \middle| \ \mathcal{F}_{t-}^y, \ dy_t = 1 \ \right] \\ b_t &= \mathbb{E} \left[ \ v \ \middle| \ \mathcal{F}_{t-}^y, \ dy_t = -1 \ \right] \end{align*}

Let p_{t-} be the left limit of the price p at time t. Given that v \in \{0,1\}, we can interpret p_{t-} as the probability of the event v=1 at time t given the information set \mathcal{F}_{t-}^y. The informed trader chooses a trading strategy \{dx_t\}_{t \leq \tau} in order to maximize his end of game wealth at random date \tau with 0 discount rate. Let dx_t^+ = \max\{0,dx_t\} and let dx_t^- = \min\{0,dx_t\}.

(2)   \begin{align*} w &= \max_{\{dx_t\}_{t \leq \tau}} \left\{ \mathbb{E} \left[ \ \int_0^\tau \left( v - a_t \right) \cdot dx_t^+ + \int_0^\tau \left( b_t - v \right) \cdot dx_t^- \ \middle| \ v \ \right] \right\} \end{align*}

In order to guarantee a solution to the optimization problem posed above, I restrict the domain of potential trading strategies to those that generate finite end of game wealth.

(3)   \begin{align*} \infty > \max_{\{dx_t\}_{t \leq \tau}} \left\{ \mathbb{E} \left[ \ \int_0^\tau \left( v - a_t \right) \cdot dx_t^+ \ \middle| \ v = 1 \ \right] \right\} \\ \infty > \max_{\{dx_t\}_{t \leq \tau}} \left\{ \mathbb{E} \left[ \ \int_0^\tau \left( b_t - v \right) \cdot dx_t^- \ \middle| \ v = 0 \ \right] \right\} \end{align*}

I then look for probabilistic trading intensities which make the net position of the informed trader a martingale.

Definition: At each time t \leq \tau, an equilibrium consists of a pair of bid and ask prices,

(4)   \begin{align*} \begin{bmatrix} b & a \end{bmatrix}_{s \leq t} \end{align*}

as well as a vector of trading intensities,

(5)   \begin{align*} \Theta &= \begin{bmatrix} \theta_{H,B} & \theta_{H,S} & \theta_{L,B} & \theta_{L,S} \end{bmatrix}_{s \leq t} \end{align*}

such that the prices equal the conditional expectation of the asset value relative to \mathcal{F}_{t-}^y given a sell or buy order and the trading intensities solve the informed agent’s objective function, satisfy the finiteness conditions and are martingales relative to the informed trader’s information set \mathcal{F}_{t-}^y:

(6)   \begin{align*} 0 &= \mathbb{E} \left[ \ x_t^+ - v \cdot \int_0^t \theta_{H,B} \left( p_{s-} \right) \cdot ds - \left( 1 - v \right) \cdot \int_0^t \theta_{L,B} \left( p_{s-}\right) \cdot ds \ \middle| \ \mathcal{F}_{t-}^y \ \right] \\ 0 &= \mathbb{E} \left[ \ x_t^- - v \cdot \int_0^t \theta_{H,S} \left( p_{s-} \right) \cdot ds - \left( 1 - v \right) \cdot \int_0^t \theta_{L,S} \left( p_{s-}\right) \cdot ds \ \middle| \ \mathcal{F}_{t-}^y \ \right] \end{align*}

In the definition above, the \{H,L\} and \{B,S\} subscripts denote the realized value and trade directions for the informed traders. So, for example, \theta_{H,B} denotes the trading intensity at some time t in the buy direction of an informed trader who knows that the value of the asset is v=1.

3. Optimal Trading Strategies

I now characterize the equilibrium trading intensities of the informed traders. First, observe that since \tau is distributed exponentially, the only relevant state variable is p_{t-} at time t. Thus, in the equations below, I drop the time dependence wherever it causes no confusion.

Since the bid and ask prices are conditional expectations, we can compute their values using Bayes’ rule.

(7)   \begin{align*} a(p) &= \left( \frac{ p \cdot \theta_{H,B} ( p ) }{p \cdot \theta_{H,B}(p) + ( 1 - p ) \cdot \theta_{L,B} (p) + \beta} \right) \cdot 1 \\ &\qquad \qquad + \left( \frac{( 1 - p ) \cdot \theta_{L,B}(p)}{p \cdot \theta_{H,B}(p) + ( 1 - p ) \cdot \theta_{L,B} (p) + \beta} \right) \cdot 0 \\ &\qquad \qquad \qquad \qquad + \left( \frac{\beta}{p \cdot \theta_{H,B} \left( p \right) + ( 1 - p ) \cdot \theta_{L,B} (p) + \beta} \right) \cdot p \\ &= \frac{ p \cdot \theta_{H,B} ( p ) + p \cdot \beta}{p \cdot \theta_{H,B} ( p ) + ( 1 - p ) \cdot \theta_{L,B} ( p ) + \beta} \\ b(p) &= \frac{p \cdot \theta_{H,S} ( p ) + p \cdot \beta(p)}{p \cdot \theta_{H,S} ( p ) + ( 1 - p ) \cdot \theta_{L,S} (p ) + \beta} \end{align*}

I now want to derive a set of first order conditions regarding the optimal decisions of high and low type informed agents as functions of these bid and ask prices which can be used to pin down the equilibrium vector of 4 trading intensities. Let w_H(p) and w_L(p) denote the value functions of the high and low type informed traders respectively.

Condition 1: No arbitrage implies that a(p) > p > b(p) for all p \in (0,1) with a(0) = 0 = b(0) and a(1) = 1 = b(1) since:

(8)   \begin{align*} \mathbb{E} \left[ \ v \ \middle| \ \mathcal{F}_{t-}^y, \ dy_t = 1 \ \right] \geq  \mathbb{E} \left[ \ v \ \middle| \ \mathcal{F}_{t-}^y \  \right] \geq  \mathbb{E} \left[ \ v \ \middle| \ \mathcal{F}_{t-}^y, \ dy_t = -1 \ \right] \end{align*}

Thus, for all p \in (0,1) it must be that \theta_{H,B}(p) > \theta_{L,B}(p) > 0 and \theta_{L,S}(p) > \theta_{H,S}(p) > 0. What’s more, p=1 and p=0 are absorbing points for p meaning that w_L(0) = w_H(1) = 0 while w_L(1) = w_H(0) = \infty.

Condition 2: The around a buy or sell order, the price moves by jumping from p \nearrow a(p) or from p \searrow b(p) so we can think about the stochastic process dp as composed of a deterministic drift component \mu(p) and 2 jump components with magnitudes \{a(p) - p\} and \{b(p) - p\}.

(9)   \begin{align*} \mathbb{E}\left[ dp \right] &= \mu(p) \cdot dt + \lambda_a \cdot \left\{ a(p) - p \right\} \cdot dt + \lambda_b \cdot \left\{ b(p) - p \right\} \cdot dt \end{align*}

The probabilities \lambda_a and \lambda_b can be computed using Bayes’ rule.

(10)   \begin{align*} \lambda_a &= p \cdot \theta_{H,B}(p) + (1 - p) \cdot \theta_{L,B}(p) + \beta \\ \lambda_b &= p \cdot \theta_{H,S}(p) + (1 - p) \cdot \theta_{L,S}(p) + \beta \end{align*}

Substituting in the formulas for a(p) and b(p) from above yields an expression for the price change that is purely in terms of the trading intensities and the price.

(11)   \begin{align*} \mathbb{E}\left[dp\right] &= \mu(p) \cdot dt + p \cdot \left( 1 - p \right) \cdot \left( \theta_{H,B}(p) + \theta_{H,S}(p) - \theta_{L,B}(p) - \theta_{L,S}(p) \right) \cdot dt \end{align*}

However, via the conditional expectation price setting rule, dp must be a martingale meaning that \mathbb{E}[dp] = 0.

(12)   \begin{align*} \mu(p) &= p \cdot \left( 1 - p \right) \cdot \left( \theta_{L,B}(p) + \theta_{L,S}(p) - \theta_{H,B}(p) - \theta_{H,S}(p) \right) \end{align*}

Condition 3: At the time of a buy or sell order, smooth pasting implies that the informed trader was indifferent between placing the order or not. For instance, if he strictly preferred to place the order, he would have done so earlier via the continuity of the price process.

(13)   \begin{align*} w_H(p) &= \left(  1 - a(p) \right) + w_H( a(p) ) \\ w_L(p) &= b(p) + w_L ( b(p) ) \end{align*}

Condition 4: It is not optimal for the informed traders to bluff. i.e., a high type informed trader can never increase his value function by selling at time t and vice versa for a low type informed trader.

(14)   \begin{align*} w_H(p) &\geq \left(  b(p) - 1 \right) + w_H ( b(p) ) \\ w_L(p) &= -a(p) + w_L ( a(p) ) \end{align*}

Condition 5: In all time periods in which the informed trader does not trade, smooth pasting implies that he must be indifferent between trading and delaying an instant dt. There are 2 forces at work here. In each instant dt, there is a \kappa probability that \tau will arrive and the informed trader’s value function will plummet to 0. This cost has to be offset by the value delaying. For the high type informed trader, this value includes the value change due to the price drift (dw_H/dp) \cdot \mu(p), the value change due to an uninformed trader placing a buy order with probability \beta and the value change due to an uninformed trader placing a sell order with probability \beta. Similar reasoning yields a symmetric condition for low type informed traders.

(15)   \begin{align*} \kappa \cdot w_H(p) &= w_H'(p) \cdot \mu(p) + \beta \cdot \left( w_H( a(p)) - w_H(p) \right) + \beta \cdot \left( w_H( b(p) ) - w_H(p) \right) \\ \kappa \cdot w_L(p) &= w_L'(p) \cdot \mu(p) + \beta \cdot \left( w_L( a(p) ) - w_L(p) \right) + \beta \cdot \left( w_L( b(p) ) - w_L(p) \right) \end{align*}

This combination of 5 conditions pins down the equilibrium.

Proposition: If the trading strategies are admissible, w_H is a non-increasing function of p, w_L is a non-decreasing function of p, both value functions satisfy the 5 conditions above, and the trading strategies are continuously differentiable on the interval (0,1), then the trading strategies are optimal for all t.

In the section below, I solve for the equilibrium trading intensities and prices numerically.

4. Numerical Solution

In the results below, I set \beta = 1/2 and \kappa = 1 for simplicity. I compute the value functions w_H and w_L as well as the optimal trading strategies \Theta on a grid over the unit interval with N nodes. Let \mathbf{P} denote the vector of N prices.

(16)   \begin{align*} \mathbf{P} = \begin{bmatrix} p_1 & p_2 & \cdots & p_N \end{bmatrix} \end{align*}

Let \mathbf{W}_H(\mathbf{P};\mathtt{i}) and \mathbf{W}_L(\mathbf{P};\mathtt{i}) denote the vector of value function levels over each point in the price grid \mathbf{P} after iteration \mathtt{i}. I use the teletype style i to denote the number of iterations in the optimization algorithm. w_H(p_n;\mathtt{i}) denotes the level of the value function at price point p_n after \mathtt{i} iterations.

(17)   \begin{align*} \mathbf{W}_H(\mathbf{P};\mathtt{i}) &= \begin{bmatrix} w_H(p_1;\mathtt{i}) & w_H(p_2;\mathtt{i}) & \cdots & w_H(p_N;\mathtt{i}) \end{bmatrix} \\ \mathbf{W}_L(\mathbf{P};\mathtt{i}) &= \begin{bmatrix} w_L(p_1;\mathtt{i}) & w_L(p_2;\mathtt{i}) & \cdots & w_L(p_N;\mathtt{i}) \end{bmatrix} \end{align*}

The algorithm below computes w_H(p), w_L(p), a(p) and b(p). The equilibrium trading intensities can be derived from these values analytically. I seed initial guesses at the values of \mathbf{W}_H(\mathbf{P};\mathtt{0}) and \mathbf{W}_L(\mathbf{P};\mathtt{0}).

(18)   \begin{align*} w_H(p_n;\mathtt{0}) &= e^{10 \cdot (1 - p_n)} - 1 \\ w_L(p_n;\mathtt{0}) &= e^{10 \cdot p_n} - 1 \end{align*}

Then, I iterate on these value function guesses until the adjustment error \Gamma(\mathtt{i}) which I define in Step 5 below is sufficiently small. The estimation strategy uses the fixed point problem in Equation (13) to compute a(p) and b(p) given w_H(p) and w_L(p) and then separately uses the martingale condition in Equation (9) to compute the drift in the price level. The algorithm updates the value function in each step by first computing how badly the no trade indifference condition in Equation (15) is violated, and then lowering the values of w_H(p) for p near 1 when the high type informed trader is too eager to trade and raising them when he is too apathetic about trading and vice versa for the low type trader. Along the way, the algorithm checks that neither informed trader type has an incentive to bluff.

x-axis: Price of risky asset. Panel (a): Value function for the high (red) and low (blue) type informed trader. Panel (b): Bid (red) and ask (blue) prices for the risky asset. Panel (c): Between trade price drift.

Below I outline the estimation procedure in complete detail. Code the for the simulation can be found on my GitHub site.

\mathtt{while} (\Gamma(\mathtt{i}) > \mathtt{tol}) \ \{

Step 1. Numerically compute w_H'(p_n;\mathtt{i}) and w_L'(p_n;\mathtt{i}) at each point.

(19)   \begin{align*} w_H'(p_n;\mathtt{i}) &= \frac{1}{2} \cdot \left( \frac{w_H(p_{n+1};\mathtt{i}) - w_H(p_n;\mathtt{i})}{p_{n+1} - p_n} + \frac{w_H(p_n;\mathtt{i}) - w_H(p_{n-1};\mathtt{i})}{p_n - p_{n-1}} \right) \\ w_L'(p_n;\mathtt{i}) &= \frac{1}{2} \cdot \left( \frac{w_L(p_{n+1};\mathtt{i}) - w_L(p_n;\mathtt{i})}{p_{n+1} - p_n} + \frac{w_L(p_n;\mathtt{i}) - w_L(p_{n-1};\mathtt{i})}{p_n - p_{n-1}} \right) \end{align*}

I fill in each of the boundary derivatives manually.

(20)   \begin{align*} w_H'(0;\mathtt{i}) &= w_L'(1;\mathtt{i}) = \infty \\ w_H'(1;\mathtt{i}) &= w_L'(0;\mathtt{i}) = 0 \end{align*}

Step 2. Solve for bid and ask prices using Equation (13).

(21)   \begin{align*} a(p_n;\mathtt{i}) &= \arg_a \left\{ w_H(p_n;\mathtt{i}) = \left(1 - a\right) - w_H(a;\mathtt{i})  \right\} \\ b(p_n;\mathtt{i}) &= \arg_b \left\{ w_L(p_n;\mathtt{i}) = b - w_L(b;\mathtt{i})  \right\} \end{align*}

I interpolate the value function levels at w_H(a;\mathtt{i}) and w_L(b;\mathtt{i}) linearly. Let p_n be the closest price level to a such that a > p_n and let p_m be the closest price level to b such that p_m > b.

(22)   \begin{align*} w_H(a;\mathtt{i}) &= w_H(p_n;\mathtt{i}) + w_H'(p_n;\mathtt{i}) \cdot \left\{ a - p_n \right\} \\ w_L(a;\mathtt{i}) &= w_L(p_m;\mathtt{i}) + w_L'(p_m;\mathtt{i}) \cdot \left\{ p_m - b \right\} \end{align*}

Step 3. Compute \mu(p_n;\mathtt{i}) using Equation (9).

(23)   \begin{align*} 0 &= \mu(p_n;\mathtt{i}) + \lambda_a(p_n;\mathtt{i}) \cdot \left\{ a(p_n;\mathtt{i}) - p_n \right\} + \lambda_b(p_n;\mathtt{i}) \cdot \left\{ b(p_n;\mathtt{i}) - p_n \right\} \end{align*}

I then plug in Equation (10) to compute lambda_a(p_n;\mathtt{i}) and \lambda_b(p_n;\mathtt{i}).

(24)   \begin{align*} \lambda_a(p_n;\mathtt{i}) &= p_n \cdot \theta_{H,B}(p_n;\mathtt{i}) + \beta \\ \lambda_b(p_n;\mathtt{i}) &= (1 - p_n) \cdot \theta_{L,S}(p_n;\mathtt{i}) + \beta \end{align*}

I then use Equation (7) to solve for \theta_{H,B}(p_n;\mathtt{i}) and \theta_{L,S}(p_n;\mathtt{i}) in terms of only prices.

(25)   \begin{align*} \theta_{H,B} ( p_n;\mathtt{i})  &= \frac{\beta \cdot \left\{ p_n - a(p_n;\mathtt{i}) \right\}}{p_n \cdot \left( a(p_n;\mathtt{i}) - 1 \right)} \\ \theta_{L,S} (p_n;\mathtt{i}) &= \frac{\beta \cdot \left\{ p_n - b(p_n;\mathtt{i}) \right\}}{( 1 - p_n ) \cdot b(p_n;\mathtt{i})} \end{align*}

Combining these equations leaves a formulation for \mu(p_n;\mathtt{i}) which contains only prices.

(26)   \begin{align*} \mu(p_n;\mathtt{i}) &= \left( (1 - p_n) \cdot \theta_{L,S}(p_n;\mathtt{i}) + \beta \right) \cdot \left\{ p_n - b(p_n;\mathtt{i}) \right\} \\ &\qquad \qquad - \left( p_n \cdot \theta_{H,B}(p_n;\mathtt{i}) + \beta \right) \cdot \left\{ a(p_n;\mathtt{i}) - p_n \right\} \\ &= \left( \frac{\beta \cdot \left\{ p_n - b(p_n;\mathtt{i}) \right\}}{b(p_n;\mathtt{i})} + \beta \right) \cdot \left\{ p_n - b(p_n;\mathtt{i}) \right\} \\ &\qquad \qquad - \left(\frac{\beta \cdot \left\{ p_n - a(p_n;\mathtt{i}) \right\}}{a(p_n;\mathtt{i}) - 1} + \beta \right) \cdot \left\{ a(p_n;\mathtt{i}) - p_n \right\} \\ &= \frac{\beta \cdot p_n \cdot \left\{ p_n - b(p_n;\mathtt{i}) \right\}}{b(p_n;\mathtt{i})} - \frac{\beta \cdot \left( 1 - p_n \right) \cdot \left\{ a(p_n;\mathtt{i}) - p_n \right\}}{1 - a(p_n;\mathtt{i})} \end{align*}

Step 4. At each p_n for n \in N, set \alpha = 0.10 and ensure that Equation (14) is satisfied. If the high type informed traders want to sell at price p_n, increase their value function at price p_n by \alpha = 10\%.

(27)   \begin{align*} &\mathtt{if} \Big[ w_H(p_n;\mathtt{i}) < \left(  b(p_n;\mathtt{i}) - 1 \right) + w_H \left( b(p_n;\mathtt{i});\mathtt{i}\right) \Big] \ \{ \\ &\qquad \qquad \mu(p_n;\mathtt{i}) = \left( 1 + \alpha \right) \cdot \mu(p_n;\mathtt{i}) \\ &\} \end{align*}

If the low type informed traders want to buy at price p_n, decrease their value function at price p_n by \alpha = 10\%.

(28)   \begin{align*} &\mathtt{if} \Big[ w_L(p_n;\mathtt{i}) < -a(p_n;\mathtt{i}) + w_L \left( a(p_n;\mathtt{i});\mathtt{i} \right) \Big] \ \{ \\ &\qquad \qquad \mu(p_n;\mathtt{i}) = \left( 1 - \alpha \right) \cdot \mu(p_n;\mathtt{i}) \\ &\} \end{align*}

Step 5. Update w_H(p_n;\mathtt{i}) and w_L(p_n;\mathtt{i}) by adding \varsigma = 5\% times the between trade indifference error from Equation (15).

(29)   \begin{align*} w_H(p_n;\mathtt{i+1}) &= w_H(p_n;\mathtt{i}) + \varsigma \cdot \left\{w_H'(p_n;\mathtt{i}) \cdot \mu(p_n;\mathtt{i})  - \kappa \cdot w_H(p_n;\mathtt{i}) \right\} \\ &\qquad \qquad + \varsigma \cdot \beta \cdot \left\{ w_H\left( a(p_n;\mathtt{i});\mathtt{i} \right) + w_H\left( b(p_n;\mathtt{i});\mathtt{i} \right) - 2 \cdot w_H(p_n;\mathtt{i}) \right\} \\ w_L(p_n;\mathtt{i+1}) &= w_L(p_n;\mathtt{i}) + \varsigma \cdot \left\{w_L'(p_n;\mathtt{i}) \cdot \mu(p_n;\mathtt{i})  - \kappa \cdot w_L(p_n;\mathtt{i}) \right\} \\ &\qquad \qquad + \varsigma \cdot \beta \cdot \left\{ w_L\left( a(p_n;\mathtt{i});\mathtt{i} \right) + w_L\left( b(p_n;\mathtt{i});\mathtt{i} \right) - 2 \cdot w_L(p_n;\mathtt{i}) \right\} \end{align*}

Step 6. Evaluate update error.

(30)   \begin{align*} \Gamma(\mathtt{i}) &= \sqrt{ \frac{1}{N} \cdot \left\{ \sum_{n=1}^N \left(w_L(p_n;\mathtt{i+1}) - w_L(p_n;\mathtt{i}) \right)^2 + \sum_{n=1}^N \left(w_H(p_n;\mathtt{i+1}) - w_H(p_n;\mathtt{i}) \right)^2 \right\} } \end{align*}

\}

Filed Under: Uncategorized

Protected: Notes: Levy (2010)

November 30, 2011 by Alex

This content is password-protected. To view it, please enter the password below.

Filed Under: Uncategorized

CRSP Data Summary Statistics by Industry

November 21, 2011 by Alex

1. Introduction

In this post, I compute industry level summary statistics the CRSP monthly file using 2 different industry classification schemes:

  1. Fama and French (1988)
  2. Moskowitz and Grinblatt (1999)

All of the code for the results below as well as a JSON file containing the industry classification schemes can be found at my GitHub page. I use the Zoom.it API to make it convenient to scroll around and inspect the large summary statistic plots I create. Each of these plots can be expanded to full screen mode using the controls at the lower right hand corner of the figure.

2. Data

In this section, I describe my data sources for the plots below.

CRSP Monthly File

I gather my stock data from the CRSP monthly file via the WRDS database. Thus, the unit of observation is a firm \times month pair. I restrict my attention to the time period from January 1988 to December 2010 to focus on the period of time over which the Fama and French (1988) industry classification scheme would have been widely known. I keep only actively traded firms listed on the NYSE, NASDAQ and AMEX exchanges. I require that the firm reports a non-missing price, return, share count and SIC code for a given month. I also remove any observations which lack valid data in the previous month. This leaves me with 1,916,707 total firm \times month observations covering 20,686 firms. The figure below plots the total number of firms in the dataset each month.

Number of firms in the monthly CRSP database from January 1988 to December 2010.

Industry Classifications

I created a JSON file to house CRSP-COMPUSTAT industry classification data. The data can be found in various places throughout the web; e.g., see Ken French’s website used in Fama and French (1988). However, everywhere I looked, the data came as a txt file with quirky formatting. For example, below is the first industry coding from the file on Ken French’s site:

1
2
3
4
5
6
7
 1 Agric  Agriculture
          0100-0199 Agric production - crops
          0200-0299 Agric production - livestock
          0700-0799 Agricultural services
          0910-0919 Commercial fishing
          2048-2048 Prepared feeds for animals
 ...

1 Agric Agriculture 0100-0199 Agric production - crops 0200-0299 Agric production - livestock 0700-0799 Agricultural services 0910-0919 Commercial fishing 2048-2048 Prepared feeds for animals ...

This format is particularly difficult to read as it is irregularly spaced and little mark-up around the data. In response to this problem, I used Emacs Regexp to convert the file on Ken French’s website into a JSON format. I also coded up the 20 firm industry classification used by Moskowitz and Grinblatt (1999). The JSON file contains 2 major directories, one for the Fama and French (1988) industry classification scheme using 49 different clusters and one for the Moskowitz and Grinblatt (1999) scheme with 20 different clusters. The industry groupings are based on the SIC codes. Below I post a sample entry for the \mathtt{Agriculture} industry from the Fama and French (1988) scheme:

1
2
3
4
5
6
7
8
9
10
{"Fama and French (1988)": {
    "Agriculture": {
	"Agric production - crops": {"start":100, "end":199},
	"Agric production - livestock": {"start":200, "end":299},
	"Agricultural services": {"start":700, "end":799},
	"Commercial fishing": {"start":910, "end":919},
	"Prepared feeds for animals": {"start":2048, "end":2048}
    },
    ...
}

{"Fama and French (1988)": { "Agriculture": { "Agric production - crops": {"start":100, "end":199}, "Agric production - livestock": {"start":200, "end":299}, "Agricultural services": {"start":700, "end":799}, "Commercial fishing": {"start":910, "end":919}, "Prepared feeds for animals": {"start":2048, "end":2048} }, ... }

Note that under the main heading there are several subindustry headings. The \mathtt{start} and \mathtt{end} tags denote the initial and ending SIC codes for each subindustry. The Moskowitz and Grinblatt (1999) scheme is less complex. There is a simple start and stop date for each of the 20 broad industry groupings:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 "Moskowitz and Grinblatt (1999)": {
     "Mining": {"start":1000, "end":1499},
     "Food": {"start":2000, "end":2099},
     "Apparel": {"start":2200, "end":2399},
     "Paper": {"start":2600, "end":2699},
     "Chemical": {"start":2800, "end":2899},
     "Petroleum": {"start":2900, "end":2999},
     "Construction": {"start":3200, "end":3299},
     "Prim. Metals": {"start":3300, "end":3399},
     "Fab. Metals": {"start":3400, "end":3499},
     "Machinery": {"start":3500, "end":3599},
     "Electrical Eq.": {"start":3600, "end":3699},
     "Transportation Eq.": {"start":3700, "end":3799},
     "Manufacturing": {"start":3800, "end":3999},
     "Railroads": {"start":4000, "end":4099},
     "Other Transport.": {"start":4100, "end":4799},
     "Utilities": {"start":4900, "end":4999},
     "Retail": {"start":5000, "end":5299},
     "Dept. Stores": {"start":5300, "end":5399},
     "Retail": {"start":5400, "end":5999},
     "Financial": {"start":6000, "end":6999}
 }

"Moskowitz and Grinblatt (1999)": { "Mining": {"start":1000, "end":1499}, "Food": {"start":2000, "end":2099}, "Apparel": {"start":2200, "end":2399}, "Paper": {"start":2600, "end":2699}, "Chemical": {"start":2800, "end":2899}, "Petroleum": {"start":2900, "end":2999}, "Construction": {"start":3200, "end":3299}, "Prim. Metals": {"start":3300, "end":3399}, "Fab. Metals": {"start":3400, "end":3499}, "Machinery": {"start":3500, "end":3599}, "Electrical Eq.": {"start":3600, "end":3699}, "Transportation Eq.": {"start":3700, "end":3799}, "Manufacturing": {"start":3800, "end":3999}, "Railroads": {"start":4000, "end":4099}, "Other Transport.": {"start":4100, "end":4799}, "Utilities": {"start":4900, "end":4999}, "Retail": {"start":5000, "end":5299}, "Dept. Stores": {"start":5300, "end":5399}, "Retail": {"start":5400, "end":5999}, "Financial": {"start":6000, "end":6999} }

3. Fama and French (1988) Classification

In this section, I plot 4 different summary plots of the CRSP data split by the Fama and French (1988) industry classification. First, I plot the number of firms in each industry. In all of the plots, I omit the “Other” industry containing firms with no clear industry classification. All of the 48 industries except for Candy and Soda, Coal, Non-Metalic and Industrial Mining, Pharmaceutical Products, Precious Metals and Trading display a single peaked pattern indicating that the number of firms in each industry dramatically expanded around 2000.

Number of firms in the monthly CRSP database from January 1988 to December 2010 by Fama and French (1988) industry classification system.

Next, I break down this firm count by industry plot even further into sub-industries in the figure below. This plot reveals that there is wide variation in the number of subindustries. What’s more, this single peaked pattern does not persist as strongly at the sub-industry level.

Number of firms in the monthly CRSP database from January 1988 to December 2010 by Fama and French (1988) industry classification system split by sub-industry.

I then turn to market capitalization by industry rather than firm counts. In the figure below, we see that while the number of firms in most industries has been shrinking since 2000, each industry’s market capitalization has been rising steadily. Thus, the combination of the first figure with the figure below reveals that industries have been consolidating.

Market capitalization in the monthly CRSP database from January 1988 to December 2010 by Fama and French (1988) industry classification system.

Finally, I look at the distribution of monthly excess returns defined as r_{a,t} - r_{f,t} where r_{f,t} is the 3 month T-Bill by industry. Due to space constraints, it was not possible to plot 1 box plot for each month of observations, so instead I first computed the mean monthly excess return for each firm in each year and then computed yearly box plots. Thus, a data point in the plot below is a mean monthly return for a particular firm over the whole year. This figure reveals that there are large outliers in the return distribution that need to be addressed before any further data work can be done. For instance, in 1992 a firm in the entertainment industry earned an average monthly excess return of over 800\%.

Mean return by year for firms in the monthly CRSP database from January 1988 to December 2010 by Fama and French (1988) industry classification system.

4. Moskowitz and Grinblatt (1999) Classification

I also create similar plots for the industry classification system used in Moskowitz and Grinblatt (1999) which contains only 20 industries rather than the 48 in the Fama and French (1988) system. These charts generally mirror the insights from above—just at a much more granular level. First, I plot the number of firms in each of the 20 industries. These industry grouping were chosen in part to balance out the partition of firms across industries and, as a results, display a much more even cross-sectional distribution.

Number of firms in the monthly CRSP database from January 1988 to December 2010 by Moskowitz and Grinblatt (1999) industry classification system.

Again, the market capitalization plot reveals that firms have been consolidating within each industry since 2000.

Market capitalization in the monthly CRSP database from January 1988 to December 2010 by Moskowitz and Grinblatt (1999) industry classification system.

Finally, I plot the distribution of excess returns for each firm within industry as above.

Mean return by year for firms in the monthly CRSP database from January 1988 to December 2010 by Moskowitz and Grinblatt (1999) industry classification system.

Filed Under: Uncategorized

« Previous Page
Next Page »

Pages

  • Publications
  • Working Papers
  • Curriculum Vitae
  • Notebook
  • Courses

Copyright © 2026 · eleven40 Pro Theme on Genesis Framework · WordPress · Log in

Loading Comments...

You must be logged in to post a comment.