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 and .
- Dealers are competing with each other so that the spread between the bid/ask prices is equivalent to the dealers' cost per trade.
We consider the bid/ask by considering a arithmetic random walk as the mid-point of the bid-ask:
Then the bid and ask are given by:
We can infer the trade price as a function of the the mid-quote price , half of the bid/ask cost , and the sign of the trade (+1 for buy and -1 for sell):
We can model this simply in R. First let's look at bid/ask prices assuming a constant cost :
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, and . 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.
We define the variance and covariance as and . Following on Hasbrouck (2007), we have that:
So we can now solve for and as:
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)
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).