Remember me

Register  |   Lost password?


StatAlgo Logo

Market Microstructure 3: The Roll Model (1984)

Sun, 07 Oct 2012 13:46:15 GMT

As in Hasbrouck (2007), we continue our series on Market Microstructure with a simple theoretical model of bid/ask prices: the Roll model. Richard Roll (faculty page) developed the model in "A simple implicit measure of the e!ective bid-ask spread" (1984).

This paper presents a method for inferring the effective bid-ask spread directly from a time series of market prices. The method requires no data other than the prices themselves...

We start by making the following simplifying assumptions:

  • All trading in the market is conducted through dealers. These dealers will post bid/ask prices at each point in time as a_t and b_t.
  • Dealers are competing with each other so that the spread between the bid/ask prices is equivalent to the dealers' cost c per trade.

We consider the bid/ask by considering a arithmetic random walk as the mid-point of the bid-ask:

m_t = m_{t-1} + u_t

Then the bid and ask are given by:

a_t = m_t + c
b_t = m_t - c

We can infer the trade price p_t as a function of the the mid-quote price m_t, half of the bid/ask cost c, and the sign of the trade q_t (+1 for buy and -1 for sell):

  p_t = m_t + c q_t

We can model this simply in R. First let's look at bid/ask prices assuming a constant cost c:

c = 1
time = 1:100
epsilon = rnorm(time)
prices = cumsum(epsilon)
m_t = zoo(prices)
a_t = m_t + c
b_t = m_t - c

We can simulate trade prices by adding a normally distributed trade sign variable:

q_t = sign(rnorm(time))
p_t = m_t + (c * q_t)

We can see the trades bouncing back and forth between the bid and ask after running this simulation:

We can also use this model in the opposite direction, to infer transaction costs from actual prices. The roll model has two parameters that can be estimated, c and \sigma^2. This is very useful as it implies that we can estimate transaction costs by only using transaction data (i.e. without knowing quoted spreads). Here, transaction costs are inferred from serial covariance of daily returns.

\Delta p_t = -c q_{t-1} +c q_t + u_t

We define the variance and covariance as \gamma_0 = Var(\Delta p_t) and \gamma_1 = Cov(\Delta p_t, \Delta p_{t-1}). Following on Hasbrouck (2007), we have that:

\gamma_0 = 2 c^2 + \sigma^2_u
\gamma_1 = -c^2

So we can now solve for c and \sigma^2 as:

c = \sqrt{-\gamma_1}
\sigma^2_u = \gamma_0 + 2 \gamma_1

So we just need to compute the variance and covariance of returns in order to estimate the expected cost. An example of estimating these values in R using daily data.

returns <- function(x) (x/lag(x))-1
rets <- na.omit(returns(m_t))
gamma_0 <- var(rets)
gamma_1 <- cov(rets[1:length(rets)-1], lag(rets, na.pad=FALSE))

sigma_2 <- gamma_0 + 2 * gamma_1
cost <- sqrt(2 * gamma_1)

The cost variable might now be compared against actual bid/ask data whether our assumptions are reasonable. There are some obvious aspects of this model that don't match reality.

  • Ordinarily bid and ask prices stay at the same level for different periods of time. This model doesn't include any sense of size of orders, and hence doesn't capture this temporal aspect.
  • The bid/ask spread is not a constant in actual trading. It also follows clear intraday patterns where it varies between the open, midday, and close times.
  • There is a strong relationship between trades and changes in quotes, this dynamic is completely ignored in the Roll model. A quote level may change when market makers change their prices or someone trades and moves from one level of an order book to another.
  • Trades do not occur with every quote. There can be extended periods of time where markets are being quoted without any trading taking place.

Several existing empirical studies attempt to test the Roll model on real data and attempt to verify the validity of its estimates. Harris (1990) "Statistical Properties of the Roll Serial Covariance Bid/Ask Spread Estimator" provides a nice summary of the basic flaws:

Unfortunately, the serial covariance estimator yields poor empirical results when used to estimate individual security spreads from a year of daily or weekly data. Estimated first-order serial covariances are positive for about half of all securities so that the square root in the estimator is not properly defined. Further, estimated spreads depend on the observation interval. In particular, daily estimates are smaller than weekly estimates. Both problems appear in Roll's empirical results.

While the basic Roll model is not empirically successful, it is still appealing as a first model due to its simplicity, and it can be easily extended into more a realistic model (as a recent example, see Zhang and Hodges (2011)). We will revisit extensions in later posts, but our next model will move on to consider market maker inventory models, starting with Garman (1976).

, , , , , , , , , , , , ,