9.29 Fast Fills Are Bad Fills: The Numbers

Fill quality is the midpoint minus your execution price over the spread, measured after the fill. Market orders average -0.72, fast limits -0.31, slow limits +0.43. Speed and fill quality move opposite.

9.29 Fast Fills Are Bad Fills: The Numbers

You buy YES on a market order and it fills in the same block. The confirmation feels like competence. Track that fill for ten minutes and you find the mid drifted below what you paid, and the trade you were proud of started life underwater. Do that a few hundred times, average the result, and one number falls out: your fills are worth about seventy cents of the spread against you. This piece takes the single ratio behind that number, fill quality, and works it out in full, because the slogan "fast fills are bad fills" only bites once you can compute it on your own tape.

The broader case for when to cross the spread and when to rest lives in the article "Fast Fills Are Bad Fills: Make vs Take, Adverse Selection, and Why the Spread Is Posterior Variance." Here the scope is narrow on purpose. One metric, one table, and what the table forces you to do.

Fill quality, defined so the sign means something

Fill quality measures where you traded relative to fair value, scaled by the spread you were quoted. For a buy:

$$ \mathrm{FQ} \;=\; \frac{p_{\text{mid}} - p_{\text{exec}}}{p_{\text{ask}} - p_{\text{bid}}} $$

The numerator is how far below the midpoint you executed, and the denominator is the spread. Buy under the mid and you got price improvement, so fill quality is positive. Pay above the mid and you lost ground before the position even opened, so it is negative. Scaling by the spread makes the number comparable across a thin book quoting four-cent spreads and a deep one quoting half a cent.

The trap in reading this is which midpoint you use. Take the midpoint at the instant your order rests and you only measure the spread you crossed, not the information you crossed into. The honest version measures the mid a short interval after the fill, the markout mid, because that is where fair value settled once your trade and whatever moved with it cleared. The old article "Markouts: The Truth Serum of Market Making" makes the general case: the spread you nominally captured is a story, and the mid a few minutes later is the fact. Fill quality is a markout wearing a normalizing denominator.

Working one buy through

Book on a binary contract: best bid 0.48, best ask 0.52, so the mid sits at 0.50 and the spread is 0.04.

Send a market buy. It crosses to the ask and fills at 0.52. Measured against the mid at that instant, fill quality is (0.50 minus 0.52) over 0.04, which is minus 0.5. That minus a half is not adverse selection yet. It is the mechanical cost of crossing a full spread, and every market order pays it by construction.

Now watch the mid. Ten minutes later it has slid to 0.49, because the flow you traded against knew the same news you did and it kept coming. Recompute against the markout mid: (0.49 minus 0.52) over 0.04, which is minus 0.75. The extra quarter of a spread past the mechanical minus a half is the information you bought into. Average enough of these and you land near the market-order figure below.

$$ \underbrace{-0.72}_{\text{market-order FQ}} \;\approx\; \underbrace{-0.5}_{\text{spread you crossed}} \;+\; \underbrace{-0.22}_{\text{adverse drift after the fill}} $$

Read that decomposition out loud. Half the damage is the spread, a cost you chose the moment you sent a taker order. The rest is the market moving against you right after, which is the definition of trading against someone better informed.

The table

Bucket fills by how you got them and how long they took, then average the markout fill quality in each bucket.

How the order filled Average fill quality
Market orders -0.72
Limit orders filled in under 1 minute -0.31
Limit orders filled in over 10 minutes +0.43

Market orders sit at minus 0.72, and the decomposition above already explains them: half a spread crossed, a fifth of a spread of adverse drift on top.

The middle row is the one that catches people who think a limit order is safety. You rest a buy at 0.49, inside the spread, and it fills in twenty seconds. At the instant of the fill you look clever, because 0.49 is a cent below the 0.50 mid, a plus 0.25 on the immediate measure. Then the mid drops to 0.47 because the reason your order filled so fast was the market coming down through your price on its way lower. Markout fill quality is now (0.47 minus 0.49) over 0.04, minus 0.5, and averaged against the occasional benign fast fill you get minus 0.31. A limit order that fills in seconds is a market order in disguise; you set the price and the market decided it agreed for a reason you will regret.

The bottom row is where limit orders earn their keep. You rest at 0.49 and it fills eleven minutes later, filled by someone who needed liquidity rather than someone who knew something. The mid is still near 0.50 or has drifted up. You bought a cent under fair value and fair value held, so fill quality comes out plus 0.43. You collected the spread you posted for instead of paying it.

Speed and fill quality move in opposite directions, and the ranking is monotone: the faster you got filled, the worse you did. That is not a coincidence you can tune away. A resting order fills fast precisely when price is rushing through it, and price rushes through a level when something is pushing it, and that something is usually against you.

What the number makes you do

Fill quality is not a scoreboard to admire, it is an instruction. Compute it on your own last hundred fills, split by order type and time-to-fill, and the average tells you whether your execution is donating to the people on the other side.

If your market-order bucket averages worse than minus 0.5, you are paying more than the spread, which means you are taking liquidity into informed flow and should either slow down or stop taking on that signal. The old article "Adverse Selection Explained for Traders" gives the general mechanism; the number here tells you whether it is happening to you specifically. If your fast-limit bucket is negative, resting inside the spread is not protecting you, and posting tighter will not help because the fills that hurt are the ones that come quickest. If your only positive bucket is the slow-fill one, your edge is patience, and any part of the system that rushes is burning it.

There is one place the sign flips on purpose. Structural arbitrage, the trade from the article "Arbitrage Is Just Projection," dies inside a single block, so you take it with a market order and you accept the minus 0.72 as a cost of capture, because a fill worth minus 0.72 of the spread still clears when the guaranteed edge is several spreads wide. Fill quality tells you the price of speed. Whether to pay it is the make-versus-take decision, and everywhere outside a vanishing arbitrage the honest fill quality says the same thing: wait for the slow fill, or do not trade.

KEY POINTS

  • Fill quality for a buy is the midpoint minus your execution price, divided by the spread. Positive means you bought below fair value; negative means you paid up. Measure the midpoint after the fill, not at order time, or you see the spread you crossed but miss the information you traded against.
  • A market buy at the ask starts at minus 0.5 from crossing a full spread alone. The empirical minus 0.72 is that minus 0.5 plus roughly minus 0.22 of adverse drift after the fill, so half the damage is spread and half is being picked off.
  • The buckets rank monotone with speed: market orders minus 0.72, limit orders filled under a minute minus 0.31, limit orders filled over ten minutes plus 0.43. A limit order that fills in seconds is a market order in disguise, because price rushed through your level on its way against you.
  • The only positive bucket is the slow fill, where you collected the spread from a liquidity trader instead of paying it to an informed one. Patience is the edge; anything that rushes spends it.
  • Compute fill quality on your own last hundred fills, split by order type and time-to-fill. A market-order average worse than minus 0.5, or any negative fast-limit average, means your execution is leaking to better-informed counterparties.
  • Structural arbitrage is the deliberate exception: it dies in one block, so you take it and eat the minus 0.72 because the guaranteed edge is wider than the fill cost. Everywhere else, wait for the slow fill or skip the trade.

References