Market Making and Mean Reversion

The paper by Tanmoy Chakraborty and Michael Kearns, “Market Making and Mean Reversion”, June 2011 (the “CK Paper” and the authors “CK“) purportedly proved that market making is generally profitable on mean reverting time series without requiring additional assumptions about the stochastic price process. Some journalistic websites (such as referenced this paper as proof that market making is mathematically certain to make money when prices are mean reverting, even if only to a slight degree.

Here I show, using the same basic market-making algorithm in the CK Paper but with a somewhat more realistic model of how markets work, that market making in the manner envisaged by CK is almost always unprofitable. This is so regardless of the mean reversion present in the time series and even when generous assumptions are made regarding the fill rates of the limit orders.

The CK Paper assumes a market exists in which a security can be bought and sold at prices determined exogenously by a single time series P_t, where t=0, 1 \ldots T. A buy (respectively sell) limit order placed in this market at time t and price Y will be filled at the earliest time t^\prime >  t such that P_{t^\prime} \leq Y (respectively P_{t^\prime} \geq Y for sell orders). This means the limit order will be filled once the limit price is touched or penetrated by P_t.

Since prices in reality are quoted in integral multiples of a minimum tick (e.g. one penny for most U.S. stocks or 0.25 for E-mini S&P 500 future contracts), P_t can be assumed to be a positive integer by rescaling the unit of money and expressing price in number of ticks. The CK Paper considers the following market-making algorithm: ladders of buy limit orders at P_t\, - 1, P_t\, - 2, \ldots P_t\, - D_t and sell limit orders at P_t + 1, P_t + 2, \ldots P_t + D_t are placed at time t, where the ladder depth D_t is a positive integer chosen such that the price fluctuation \vert P_{t+1} - P_t \vert shall not exceed D_t for all t (this is possible in practice if the time step is small enough). Unfilled orders are canceled and new orders are placed at every time step, which is necessary only if P_{t+1} \neq P_t.

CK shows that the following result holds:

Let K \equiv \sum_{t=1}^{T}\vert P_t - P_{t−1}\vert and z \equiv P_T - P_0. If the above market making algorithm is applied with order size of one share for each buy and sell order, then at time T the inventory is -z, and the profit is (K - z^2)/2.

A quick and intuitive proof of the above can be seen from Figure 1, which depicts a fabricated P_t together with trades engendered by the market making algorithm. In the figure, green triangles pointing downwards represent sell trades and red triangles pointing upwards represent buy trades. The algorithm is initiated at A and liquidated at F. One or more sell orders are filled whenever P_{t+1} - P_t > 0, i.e. whenever an “up tick” occurs; and one or more buy orders are filled whenever P_{t+1} - P_t < 0, i.e. whenever an “down tick” occurs. The number of orders filled at t \geq 1 is P_{t−1} - P_t, where a negative value means shares were sold. Thus K is equal to the total number of orders (equivalently shares) filled. Notice that in any time series segment that returns to the starting price level (such as AC in Figure 1), every sell trade is matched with a buy trade that is one tick lower. Thus, every such matched pair gives a profit of 1 and the total profit is one-half times the total number of up and down ticks in this segment. Accounting for all such segments, there remains \vert z \vert trades following the last segment which are unmatched (corresponding to the last two sell trades in segment EF in Figure 1). Thus, the total number of matched trades is K - \vert z \vert and the profit from them is (K - \vert z \vert)/2. The unmatched trades are either buy orders filled at P_0 - 1, P_0 - 2 \ldots P_T if P_T < P_0 or sell orders filled at P_0 + 1, P_0 + 2 \ldots P_T if P_T > P_0. Assuming they are liquidated at P_T, these correspond to an arithmetic series of losses -\vert z \vert +1, -\vert z \vert+2 \ldots 0 totaling -\vert z \vert (\vert z \vert - 1)/2. Hence the net profit is (K -\vert z \vert - \vert z \vert( \vert z \vert - 1))/2 =( K - z^2)/2.

Figure 1: Matched and unmatched trades

Intuitively, if P_t spends a lot of time around its initial price P_0 and only goes off a bit at the end, then K should be much larger than \vert z \vert and therefore the market making profit should be positive. CK formalizes this intuition by proving that the expected profit of the market making algorithm is positive for any biased random walk in which the probability of a positive price change is greater (respectively smaller) if the current price is below (respectively above) a given equilibrium level. CK also shows that for the Ornstein-Unlenbeck process, the expectation \mathbf{E} [K] grows linearly with T while \mathbf{E}[z^2] is bounded by a constant, implying that the algorithm will eventually be profitable if it is traded long enough.

Real markets are of course a far cry from the one assumed by CK. Still one would hope the conclusions regarding the profitability of market making would remain largely valid even after accounting for bid/ask spreads, transaction costs, etc. Unfortunately this is not the case as I show using a simple argument below. In fact, it appears that bid/ask spreads exist precisely to defeat the CK type of market making algorithms, rendering them unprofitable for any price time series, mean reverting or not.

We assume, like CK but more realistically, that prices at which transactions occur are determined exogenously, except now there are two exogenous time series, viz. bid and ask prices. Let B_0, B_1 \ldots B_T and A_0, A_1 \ldots A_T be the bid and ask series respectively. Assume A_t - B_t = 1, i.e. the bid/ask spread is constant and equal to 1. At time t, the market making algorithm observes B_t and A_t and places a ladder of buy limit orders at B_t, B_t - 1, B_t - 2 \ldots B_t - D_t and another of sell limit orders at A_t, A_t + 1, A_t + 2 \ldots A_t + D_t, where D_t is a positive integer chosen such that \vert B_{t+1} - B_t \vert \leq D_t and \vert A_{t+1} - A_t \vert \leq D_t for all t. Thus the market making algorithm joins the bid and ask at the inside market and brackets it sufficiently on both sides to ensure all price fluctuations are captured. We assume that a buy (respectively sell) limit order placed at time t and price Y will be filled at the earliest time t^\prime > t such that A_{t^\prime} \leq Y (respectively B_{t^\prime} \geq Y for sell orders). This means the buy order (respectively sell order) will be filled once its limit price is touched or penetrated by the ask price (respectively bid price).

In analogy to Figure 1, we fabricated B_t and A_t in Figure 2 together with trades engendered by the above market making algorithm. In contrast to the CK market, sell orders here are filled only when B_{t+1} - B_t > 0, i.e. when an “up tick” in the bid occurs; and buy orders are filled only when A_{t+1} - A_t < 0, i.e. when a “down tick” in the ask occurs. This is a reasonable assumption even in practice since, without additional devices to optimize queue priority, resting bids or asks are rarely filled unless touched or penetrated by the other side. In fact, a common scenario when, say, a sell order is filled is for the bid to rise up to fill it and then fall back immediately, causing a turning point akin to B in Figure 2. Here the sell and buy trades are “scratched”, i.e. executed at the same price in quick succession. Looking at Figure 2, it is apparent the matched trades in all price segments that return to the starting price level have a profit of 0. Thus these segments break even exactly and the net profit of the algorithm is the loss incurred by the trades following the last segment, i.e. -\vert z \vert (\vert z \vert -1)/2 where z = B_T - B_0 = A_T - A_0 (same as the loss from the unmatched trades in the CK market). Hence the market making algorithm is never profitable.

Figure 2: Matched and unmatched trades in a two-sided market

Since no assumptions have been made regarding the stochastic price process for B_t and A_t, we infer that the bid/ask spread eliminated any possibility of profit for the market making algorithm for any type of time series. To make matters worse, a limit order in reality may not be filled when the opposite side merely touches it unless the fill rate is perfect. For example, a bid rising to become equal to but not greater than the sell limit price may not have sufficient size to fill the order if it is at the back of the queue. Thus there may be losses even in segments which return to the starting price level, implying losses in reality that are greater than those due to the unmatched trades at the end of the time series. Also, going back to Figure 1, we see that the positive profit in the CK market comes entirely from fills at local maxima and minima, e.g. the turning points B and D. In practice, these fills corresponds to limit orders at extrema of the price process getting filled without being touched or penetrated. These are not high probability events in real life unless the orders are at the front of the queue or the bid and ask prices are largely static over time.

To conclude, making markets profitably using the CK laddering algorithm in a two-sided market is impossible regardless of the underlying price process and even if perfect fill rates are assumed. In practice, making markets profitably is extraordinarily difficult and necessarily involve calibrating the algorithm correctly to the price process (e.g. the time and price scale of mean reversion). It must also involve a deliberate policy of not making markets, e.g. canceling all orders, when adverse order flow is detected either from microstructure or excessive inventory on one side.

In another post, I will consider what happens when there is positive serial correlation as well as mean reversion in the price series.