The current market structure creates incentives for brokers to route orders for their own benefit, rather than for the best execution of their clients.
Yesterday, March 29th, at 09:37:57.425888 GME was halted limit-down after trading at $182.79 at 9:37:57.402 off-exchange. The high price for the day had printed at $199.41, first at 09:34:58.508 (off-exchange) and then finally at 09:35:02.893 4 seconds later. This is a decline from the high of $16.62 or 8.3%, in almost 3 minutes. The halt was a result of the NBBO crossing below the Lower Price Band as determined by Limit-Up/Limit-Down, better explained here. Basically, the National Best Bid crossed 5% below a reference price, which is the arithmetic mean of the last 5 minutes of trades.
Every exchange’s quotes were removed from the SIP data feeds within <1 millisecond, except for two exchanges operated by the CBOE – BZX (it took about 5 milliseconds) and EDGX. Before getting into that, you need to understand three very important things about market structure:
- The SIP is the public data feed, and broadly speaking, the official record of public quotes and trades. Everyone in the market PAYS lots of money to maintain the SIP – hundreds of millions of dollars each year. The cost of the SIP is egregious – for example, to simply display real-time SIP quotes to non-professionals costs $3 per-user, per-month. This high data cost is one of the built-in barriers to individual access to data, and one of the most important issues we at Urvin Finance are working to solve. Besides non-professionals, all professionals and all computers that receive SIP data pay a LOT of money to do so. The exchanges then get hundreds of millions of dollars annually, which is supposed to help them maintain the SIP infrastructure. However, if the SIP works too well, then that would cannibalize the exchanges’ sale of private data feeds, which are faster and have more information on them, and which represent a huge chunk of revenue for these publicly-traded, for-profit companies.
- Some stock exchanges pay very large rebates to brokers who post limit orders on those exchanges. EDGX is notorious for a 34 mil (a mil is $0.0001 per share, or 1 penny per hundred shares) rebate tier for its largest customers, which is more than the most they can charge people who are taking liquidity (access fees). The top fee an exchange can charge to take liquidity is 30 mils, this is capped by Reg NMS. So EDGX actually loses money every time someone trades with an order posted that receives a 34 mil rebate. Back in 2014, during a very controversial hearing in front of a Senate committee, a representative from TD Ameritrade admitted that they send virtually all of their limit orders to EDGX because it pays such a high rebate. Those orders also get the worst execution quality, because the queues at an exchange with such high rebates are the longest.
- This last thing is very technical. Each quotation that is published on the SIP potentially comes with multiple timestamps but we only care about two of them - the SIP timestamp (when the SIP published the message) and the Participant timestamp (when the participant sent the message to the SIP).
These are huge conflicts of interest, and they impact the entire industry. Yesterday was the perfect illustration of a conflict-of-interest feedback loop (I just coined that term). Here’s what I believe happened:
- Retail brokers (or the internalizers routing orders on their behalf) posted a bunch of high-priced orders to EDGX, because they do that by default as a result of the enormous rebate tier. They don’t care about getting best execution for their clients, they simply want to maximize their rebates. This became evident as I examined the data, and saw orders like these:
- GME was halted due to the limit-down condition, but the SIP continued to publish quotes from EDGX for another 35 milliseconds. This had some marketwide impacts, including causing several brokers to alert their customers that high-priced options on GME were suddenly in-the-money because the brokers assumed the quotes were accurate, even though the stock was halted and they should not have processed those quotes.
These quote updates were abnormal, and they included the $420.69 orders above. Over the course of 35 milliseconds the bid price from EDGX dropped to 0 (rather quickly, in about 9 milliseconds), while the ask price kept increasing. I’m saying “dropped” and “increasing” but that’s not exactly what happened. What appears to have happened is that EDGX kept canceling individual orders, which resulted in the next order becoming the best ask, which was then canceled, and so on. It appears to have done this order-by-order, walking the book by increasing price on the ask. The price on the ask started increasing, first to prices such as $200 and $300, but then more dramatically, starting with the $420.69 orders, and ultimately to a high ask price of $448,950. During that time, we saw some very distinctive order prices, such as $999.69, $1,420.69, $1773, $2,222.69, $4,567.89, $4,999.69, and (perhaps most notably) $69,420.69. This is how we know that these are real orders, and not some strange artifact from pegged order types. Meme prices in meme stocks exposed this problem - and some of your orders have helped me get to the bottom of it!
- There are two general possibilities - either EDGX queued up the release of these quotes on their side or it took the SIP 35 milliseconds to publish approximately 1,112 quote updates. This is apparent due to the two timestamps - all of the orders during these 35 milliseconds had the same participant timestamp (EDGX published them before the halt), while the SIP timestamps kept increasing over 35 milliseconds. This is a LONG time - first, it’s weird that the SIP would be flooded with these messages by EDGX (it didn’t appear to happen from the other exchanges), and second it’s weird that it took the SIP so long to process the messages.
- Retail brokers who were receiving these quote updates were likely calculating a mid-price of GME based off of them. So for example, when the ask was $420.69 and the bid was $0, the mid-price would be $210.345. At some point, that mid-price crossed $510, and so a bunch of retail broker users received alerts that their options were in-the money. This is because the retail broker tech systems weren’t properly filtering out bad data (the stock was halted AND the bid was $0 - don’t calculate a mid!!) AND because retail brokers were responsible for those crazy orders being posted to EDGX! It’s a conflict-of-interest feedback loop! At another point, retail brokers finally stopped processing these prices, which is why higher priced options did not receive the same alert.
So it bears repeating - what are the market structure problems that this seemingly isolated event exposed:
- Exchange rebates induce brokers to route orders for their own benefit, not for best execution.
- Exchanges are being subsidized by SIP money, but are failing to maintain the SIP systems, resulting in 35ms of bad quotes being published, because they are incentivized to keep their own private feeds valuable in order to maximize revenue and shareholder value, instead of maintaining fair and efficient markets.
- Discount brokers are under-investing in critical technology systems resulting in bad data being acted upon, because they are not properly incentivized to invest in these systems.
Inducements and incentives.
These inducements and incentives created a conflict-of-interest feedback loop that triggered a bunch of retail broker alerts. Who was hurt in all of this? Individual investors watching all of this unfold, whose trust in markets is further eroded by these kinds of events, who don’t believe the data they’re seeing, and who remain concerned and disturbed about the complexity and conflicts-of-interest that this has exposed.
TL;DR/ELIA: conflicts-of-interest create inducements and incentives that cause corrupt order routing practices and underinvestment in technology, both by brokers and exchanges, creating a 35 millisecond window during the trading halt yesterday that exposed a conflict-of-interest feedback loop. The alerts for options being in-the-money were a result of that, but did not reflect real prices.