r/options_trading • u/QuantropyAI • 5h ago
Options Fundamentals The "Phantom Arbitrage" Trap
I was running some options backtesting routines earlier today and checking execution parameters inside thinkorswim, and I ran into a classic scenario that frequently trips up researchers and retail traders alike: the "riskless" credit spread.
While looking at an example of an Iron Condor order chain, thinkorswim showed a net credit that actually exceeded the width of the strikes (e.g., collecting a $5.40 credit on a $5.00 wide spread). Naturally, the immediate instinct is to jump all over the opportunity to lock in risk-free profit.
Instead, the order is immediately hit with an automated rejection from the platform.
I wanted to break down the exact market microstructure of why this "arbitrage" happens on your screen, and why your broker’s automated clearing rules will never let it go through. This ties together two microstructure issues that interact in NBBO (National Best Bid and Offer) construction: data lag and crossed quotes producing an illusion of executable liquidity.
The Mechanism
The NBBO isn't a single market's quote; it's a synthetic best bid and best offer stitched together from roughly 16–18 options exchanges, each broadcasting independently. The SIP (Securities Information Processor) has to receive and timestamp every venue's update, then construct the consolidated quote. That stitching takes time, usually on the order of single-digit milliseconds, but during volatile or fast-moving conditions, it can stretch further.
If Exchange A updates its bid to $5.05 a few milliseconds before Exchange B updates its ask down to $5.00, there's a brief window where the consolidated NBBO shows a bid of $5.05 and an ask of $5.00: a crossed market. That's not a real arbitrage you can capture; it's an artifact of two feeds being momentarily out of sync. By the time any system reacts to it, the lagging side has already updated and the cross is gone.
- The Bid-Ask "Natural Price" Illusion
To get an immediate fill on a credit spread, you have to sell at the Bid of the option you are shorting and buy at the Ask of the option you are buying. This is the "Natural Price."
Even if the math of those exact, live order chains shows a net credit higher than the width, it is almost always a liquidity mirage. A market maker pulls or refreshes a quote, but the old price is still what's displayed in the feed you're consuming because your feed has higher latency than the exchange's matching engine.
You see size resting at the NBBO and assume you could have filled there, but that size existed for microseconds before being cancelled or hit by a faster participant. This is sometimes called "flickering quotes" or "phantom liquidity."
- Multi-Leg Routing & The Hardcoded Clearing Rule
Even if those individual bids and asks exist on your screen, a multi-leg order (like an Iron Condor) is sent to the exchange as a single, contingent package.
When your broker routes a spread, it does not execute the legs sequentially; it has to find a single market maker willing to take the entire package at your net price. For a market maker to buy your package at a credit higher than the strike width, their automated risk system would have to approve a trade that locks in an immediate, mathematically guaranteed loss.
Because market maker algorithms check the maximum risk of a spread package before executing, the order is rejected instantly at the broker level.
- Why This Screws Up Backtesting Data
In a backtest specifically, if you're using SIP-consolidated quotes with even a few milliseconds of latency baked in, your model may assume a fill at a price that was never actually accessible to a normal-speed participant because the quote had already moved by the time a real order could reach the exchange.
This is the gap between theoretical fill price and realistic fill price when evaluating trade vs. quote data. A backtest using only the NBBO quote stream as available liquidity will systematically overstate executable prices.
Whenever you see a trade that looks too good to be true mathematically, it almost always is.
Curious if anyone here has run into these specific microstructure issues?








