Odd-Lot Inside-Spread and Protected-Size Scarcity Slippage Playbook

2026-04-12 · finance

Odd-Lot Inside-Spread and Protected-Size Scarcity Slippage Playbook

Date: 2026-04-12
Category: research (execution / slippage modeling)

Why this playbook exists

In U.S. equities, the best visible price is increasingly not the same thing as the best protected price, and neither is guaranteed to represent meaningful executable size.

That gap matters for slippage modeling.

A modern execution stack can easily see situations like this:

If the model anchors to the visible inside quote as if it were a normal top-of-book opportunity, it will systematically:

  1. overstate accessible price improvement,
  2. understate completion cost,
  3. overestimate passive fill probability at the inside price,
  4. compress benchmark spreads with tiny, low-capacity quotes,
  5. misattribute residual cost to urgency or impact instead of protected-size scarcity.

This problem is getting more important, not less. Public rulemaking and market-structure commentary now explicitly recognize that:

That creates a specific modeling failure mode:

the visible best quote can improve while the executable/protected control surface barely changes.

This note turns that into a practical framework for features, labels, TCA, and routing controls.


Public facts that make this real

A few public references are enough to show the market has structurally changed.

The modeling implication is simple:

price discovery, benchmark formation, and trade-through protection are no longer aligned by default.

If your slippage stack treats them as one object, it is trading a cleaner market than the one that actually exists.


The core failure mode

For a buy order, define four prices at time (t):

In many names:

[ P_{vis}(t) \le P_{prot}(t) ]

with strict inequality whenever an odd-lot offer sits inside the protected quote.

Define the odd-lot inside gap:

[ G_{odd}(t) = P_{prot}(t) - P_{vis}(t) \ge 0 ]

Interpretation:

Now define visible size at the inside price (Q_{vis}(t)), and protected size at the protected best (Q_{prot}(t)).

A second quantity matters just as much:

[ R_{cap}(t) = \frac{Q_{vis}(t)}{Q_{child}(t)} ]

where (Q_{child}(t)) is intended child-order size.

When (G_{odd}(t)>0) and (R_{cap}(t) \ll 1), you have the classic failure case:

the quote improves your benchmark much more than it improves your achievable fill.

That is the slippage tax most naive top-of-book models miss.


Why this is different from ordinary depth truncation

This is not just “you needed more depth.”

Ordinary depth truncation assumes the top-of-book is at least structurally representative of the first executable level.

Odd-lot inside-spread conditions are different because:

  1. the inside quote can be better priced but too small to matter,
  2. it may not be protected even when visible,
  3. it may arrive in consolidated data as a new best visible quote without any protected quote transition,
  4. it can materially compress quoted spread statistics,
  5. the residual order path can behave as if the price improvement barely existed.

So the problem is not only lack of depth.

It is benchmark distortion caused by tiny non-protected price improvement.


Mechanism map

1. Micro-benchmark compression

Suppose the protected offer is $100.01 for 100 shares, but an odd-lot offer appears at $100.00 for 7 shares.

A buy child order for 300 shares now sees:

But actual completion still mostly depends on liquidity at $100.01 and above.

If the model prices the order as if $100.00 were the economically relevant touch, it will underpredict slippage on almost every realized path.

2. Residual sweep illusion

An execution can print partly at the odd-lot inside and immediately continue at the protected round-lot quote.

That creates a misleading tape pattern:

A fill-only model that averages execution price against (P_{vis}(t)) often misreads this as “minor impact” rather than “almost no true price improvement capacity.”

3. Passive queue hallucination

When a model uses best visible bid/offer and imbalance features without distinguishing odd-lot vs protected size, it can infer queueable opportunity that is not really there.

The visible inside quote may:

This contaminates passive fill-hazard models and queue-position models alike.

4. TCA fairness distortion

If arrival price, quoted spread, or price-improvement metrics are anchored to the odd-lot inside quote, then a broker or strategy can look worse simply because the benchmark became unrealistically tight.

This is especially acute in:

5. Feature regime instability

As SIP odd-lot dissemination expands, a feature pipeline may suddenly begin ingesting more inside-spread odd-lot information than it historically saw.

If retraining and backtests do not normalize for this, model drift appears even when the routing logic has not changed.

In that case the “alpha” is fake; the data representation changed.


The right abstraction: visible best, protected best, and actionable cost-to-complete

A useful decomposition for a buy order is:

[ C_{total} = C_{inside} + C_{residual} + C_{benchmark} + C_{queue} ]

Where:

A simple approximation for expected buy-side cost is:

[ \mathbb{E}[C \mid x_t] \approx w_1 \cdot G_{odd}(t) \cdot (1-\rho_t) + w_2 \cdot \Delta D_t + w_3 \cdot B_t ]

where:

The key intuition:


Metrics worth instrumenting

1. OIG — Odd-Lot Inside Gap

[ OIG(t) = P_{prot}(t) - P_{vis}(t) ]

This is the core state variable.

Track it by symbol, price bucket, venue, time of day, and order size bucket.

2. OCR — Odd-Lot Capacity Ratio

[ OCR(t) = \frac{Q_{vis}(t)}{Q_{child}(t)} ]

A one-tick inside quote with OCR = 0.02 should not drive the same routing logic as a quote with OCR = 0.80.

3. RBI — Residual Burden Index

[ RBI(t) = 1 - \rho_t ]

How much of the child still depends on protected or deeper liquidity after consuming the visible inside quote.

4. VPC — Visible-vs-Protected Compression

Quoted spread using visible best minus quoted spread using protected best.

This quantifies how much your quoted-spread benchmark has been cosmetically tightened.

5. OLPR — Odd-Lot Price-Improvement Realization

Realized fraction of child volume that actually executed at the odd-lot inside level.

If OLPR is persistently tiny, the inside quote is mostly benchmark decoration.

6. PBP — Protected Book Penetration

Expected number of protected/deeper levels touched after any odd-lot inside interaction.

This is often the true driver of cost-to-complete.

7. OFD — Odd-Lot Feature Drift

Measure how often historical and live feature pipelines disagree because one includes odd-lot inside quotes and the other does not.

This is crucial during SIP/plan implementation changes.


Features for slippage models

A. Quote-state features

B. Capacity features

C. Structure features

D. Event-path features

E. Label-integrity features

Important rule:

do not let odd-lot inside quotes enter the model only through generic top-of-book fields.

They need explicit representation, or the model will learn the wrong economics from the same pixels.


Labeling blueprint

For each child order, store at decision time:

  1. visible best price and size,
  2. protected best price and size,
  3. whether the visible best was odd-lot-driven,
  4. how much actually filled at the inside level,
  5. residual completion path,
  6. benchmark computed both ways.

Then train three labels, not one:

Label 1 — visible-benchmark slippage

[ S_{vis} = p_{fill} - P_{vis}(t) ]

Label 2 — protected-benchmark slippage

[ S_{prot} = p_{fill} - P_{prot}(t) ]

Label 3 — completion slippage beyond inside capacity

[ S_{comp} = p_{fill} - \big(\rho_t P_{vis}(t) + (1-\rho_t)P_{prot}(t)\big) ]

The gap

[ S_{vis} - S_{prot} ]

is not ordinary execution error.

It is often benchmark compression error.

That distinction matters when retraining models or grading brokers.


Routing/control implications

Rule 1: maintain two top-of-book views

At minimum keep:

Do not collapse them into one number.

Rule 2: size-weight the value of inside odd lots

One tick of price improvement on 3 shares is not economically equivalent to one tick of improvement on 300 shares.

Routing score should scale inside-price value by executable capacity.

Rule 3: benchmark child slices against feasible completion paths

For aggressive trading, benchmarking a 500-share child to a 1-share or 5-share inside quote is usually dishonest.

Use blended or protected benchmarks when OCR is low.

Rule 4: separate price-discovery information from execution capacity

Odd-lot inside quotes may still be highly informative for short-horizon price discovery.

That does not mean they are equally informative for execution cost-to-complete.

Use them in signal models and execution models differently.

Rule 5: detect odd-lot-only visible changes

If the visible best moves but the protected best does not, that event should enter the router as a different state than a true protected-quote transition.

Rule 6: version-control data-regime changes

When SIP/plan odd-lot dissemination changes, pin the data schema and retrain under explicit regime tags.

Otherwise you will mistake market-data plumbing changes for strategy improvement or decay.


Common anti-patterns


30-day rollout plan

Week 1 — Make the state observable

Week 2 — Fix TCA first

Week 3 — Retrain with explicit odd-lot features

Week 4 — Tighten routing controls


What good looks like

A production-grade slippage stack should be able to answer:

  1. Was the best visible quote actually better than the best protected quote?
  2. If yes, how much size existed at that better price?
  3. What fraction of the child actually captured that inside improvement?
  4. How much residual cost came from completing at protected and deeper levels?
  5. Did the benchmark get tighter without a meaningful change in executable capacity?
  6. Did a market-data regime change alter the meaning of our top-of-book features?

If you cannot answer those questions, your model is probably understating slippage whenever odd-lot quotes dominate the inside market.


Selected public references

Bottom line

Odd-lot quotes are no longer a corner case.

They are part of the visible market, part of price discovery, and increasingly part of the data your models ingest. But they are not automatically the same thing as protected, scalable execution opportunity.

When a tiny odd-lot quote improves the inside price, three things can happen at once:

If your slippage model does not separate those three effects, it will confuse seeing a better price with being able to trade meaningful size at that price.

That confusion gets expensive fast.