Let’s pose a simple, yet highly important question about market structure: how profitable, in the aggregate, is market making activity (i.e. the pure provision of liquidity)? This question is of central importance to regulators, policy makers, investors, and traders alike. Obviously, there are many ways to address such a multi-faceted question, but one very compelling method is to calculate the profitability of all trades on the exchange, from the perspective of the passive (liquidity-providing) party, assuming they never liquidate their inventory and mark it to the closing price on a daily basis. Let’s do that for a selected ticker, say msft, on a selected exchange, say nasdaq, for the last two years of data. In fact, let’s go further and decompose market making PNL into it’s four main components: spread capture, rebate capture, adverse selection (i.e. inventory pnl), and SEC section 31b fees.
m --mdir=$DailyMicro ticker=msft filter=i_bprc date '@matched=i_bvol<i_svol?i_bvol:i_svol;@matched*(i_bprc-i_sprc)' '@mminv=i_svol-i_bvol;@mminvprc=@mminv>0?i_sprc:i_bprc;@mminvpnl=(close-@mminvprc)*@mminv;@mminvpnl' '0.0029*(i_bvol+i_svol)' 'i_sprc*i_svol*-23/1000000' 'i_bprc-i_sprc' -h date,spreadCapture,inventory,rebate,secfee,effsprd | mcalc -rows all -cols ‘avg:spreadCapture’ ‘avg:inventory’ ‘avg:rebate’ ‘avg:secfee’ ‘avg:effsprd’
Results:
row spreadCapture inventory rebate secfee effsprd
all 44816.5 -53281.8 12305.8 -3502.53 0.019724
Let's see what's going on there. First, we are using the DailyMicro M database, which aggregates information about market microstructure data into daily periodicity intervals. MANA Tech also has other databases with intraday periodicities, but for this particular study, daily periodicity works well. Essentially the m command is calculating five values per date and returning them to the console -- these correspond to spread capture, inventory pnl, rebate, SEC section 31b fees, and effective captured bid-ask spread, respectively. The results are then piped into a M tool which averages the daily values.
The first expression is '@matched=i_bvol<i_svol?i_bvol:i_svol;@matched*(i_bprc-i_sprc)' . This calculates the temporary variable @matched which is the lesser of nasdaq's buy volume and sell volume for the selected stock, and corresponds to how many shares the market maker was able to earn the bid-ask spread on. That is then multiplied by the quantity (i_bprc-i_sprc), which is the difference in price payed by active buyers and active sellers, which in turn is the same as the effective spread earned by the market maker. The product of matched shares and earned spread is the profit due to spread capture.
The second expression looks at the "unmatched" inventory; i.e. the shares that the market maker WANTS to match but is unable to, and is therefore forced to hold. Generally the market maker's unmatched inventory moves adversely, a phenomenon known as "adverse selection". To calculate this, we look at the matched inventory, and the weighted average price used to acquire this inventory (based on whether it is net long or net short). Then, we mark the inventory to the closing price. As the results make clear, inventory PNL is, on average negative enough to overcome the profitability associated with spread capture. (N.B.: A slightly different M command, not shown here, reveals that the sharpe ratio of spread capture is 5.5 annualized, whereas inventory has a sharpe of negative -2.28).
The remaining three expressions show the rebate captured (based on an assumption of 0.29 cents per share traded passively), the SEC Fees paid (based on the prevailing tax of 13 dollars per million dollars sold, at the time of this writing), and the effective spread earned, which as we saw earlier is the same as the difference between active buy VWAP and active sell VWAP.
Several interesting things immediately jump out based on the results, besides the fact that this query ran in around 1 second. First of all, the effective spread captured by market makers was around 2 cents per share, which is larger than microsoft’s typical quoted spread of 1 cent per share. Second of all, on average, market maker inventory was toxic, to the tune of around $53k/day, and totally swamped the spread capture, which was positive at around $45k/day. Finally, rebates and SEC section 31b fees together brought the profitable and unprofitable portions of market making into equilibrium. Besides the obvious observation that the market’s efficiency is impressive to behold, the numbers strongly suggest that the role of liquidity rebates can rightfully be seen as an inducement for market makers to suffer greater adverse selection (by posting larger orders for greater time in force).
As far as profit-motivated applications are concerned, the numbers also suggest that since unconditional market making is roughly a breakeven proposition after costs are considered, “conditional” market making -- i.e. being judicious about when to make markets or not, based on prevailing market conditions and/or alpha signals -- is likely a potential route to profitable market making. Needless to say, there are (literally) countless creative and ingenious ways that one can condition and/or predict the profitability of market-making which can be easily explored and modelled with the M platform and MTMicroData.
For instance, below we see that the profitability of a market maker’s inventory is highly autocorrelated. The command below returns the first row of the autocorrelation matrix of the market making inventory pnl time series and its first five lags:
m --mdir=$DailyMicro ticker=msft filter=i_bprc '@mminv=i_svol-i_bvol;@mminvprc=@mminv>0?i_sprc:i_bprc;@mminvpnl=(close-@mminvprc)*@mminv;@mminvpnl' | AutoCor 5
1.00 0.18 0.13 0.02 0.11 0.10
This result suggests that one route to investigate further for profitable market making strategies is to use the MTMicroData to determine which stocks have had the least toxic inventory in the recent past, and only provide liquidity in those names. Of course, this is not to suggest that one can easily obtain “average” market making results, especially given the high skill level of the average professional market maker. Here again, however, the M platform and data sets can be a highly effective tool to study and model intraday signals and trading tactics that can be used to gain a competitive advantage relative to such skilled players.