Offline size/depth bid-structuring study (2026-07-16/17), the last untested fill lever after the live canary confirmed the 13.6pt fill −EV. Tested whether sizing DOWN to avoid reaching into stale/deep book improves per-share fill EV. Verdict: sizing is a NO-GO — fill EV is driven by BOOK DEPTH (exogenous liquidity), not our order size. The only (partial) survivor is depth-selectivity, which shaves btc/eth/sol to breakeven but not +EV.
VERDICT — Sizing is a NO-GO: it's liquidity, not size
Held order size ~constant (~10 shares in EVERY book-depth bucket), yet per-share net EV swings from −8¢ (thin book) to ~breakeven (deep book). The improvement is ALL book depth; our size doesn’t vary → it’s an exogenous liquidity effect, not a size effect. You cannot size a thin book into a deep one, so size-down cannot help. This joins the depth-aware sizing NO-GO from the opposite direction — the entire sizing lever is now dead.
Hypothesis Tested
Size DOWN to avoid reaching into stale/deep book → better per-share fill EV. Motivated by two prior signals:
- The canary hint that small-order fills looked cleaner.
- The 2× sizing NO-GO (sizing UP didn’t help; maybe sizing DOWN would).
The mechanism under test: our clip reaches into deeper, staler layers of the book → worse fills → so shrink the clip.
Why It Fails — EV Is a Function of Book Depth, Not Our Size
The decisive control: order size was held ~constant (~10 shares) across every book-depth bucket, yet per-share EV still varies enormously with the book’s depth. If size were the driver, holding it constant would flatten EV. It doesn’t.
Book depth (best_ask_sz) | Per-share net EV | Win rate | Read |
|---|---|---|---|
| Thin (10–25) | −8¢ | — | Worst fills |
| … | (monotone improve) | — | — |
| Deep (>150) | −0.15¢ (~breakeven) | 76% | Best fills |
Order size in each bucket: ~10 shares (unchanged). The EV gradient is entirely the book, not us.
Depth-reach dose-response is NON-monotone
depth_reach = filled_size / best_ask_sz. If “exhausting top-of-book” (reach > 1) were the mechanism, it would be the worst bucket. It is NOT — the 0.5–1.0 reach bucket is worse than reach > 1. So “avoid exhausting top-of-book” is not the lever. The earlier “small orders fill better” intuition was a confound: low reach meant a deep book, not a small order.
The Partial Survivor — Depth SELECTIVITY (a fill gate), Not Sizing
The only real lever is a depth-conditioned fill gate: only bid when best_ask_sz ≥ ~50. It holds for the three MAJORS but not the alts:
| Asset | Deep-book net ¢ | Thin-book net ¢ | Holds? |
|---|---|---|---|
| btc | −1.4¢ | −6.7¢ | Yes (→ ~breakeven) |
| eth | +0.8¢ | −9.0¢ | Yes (→ ~breakeven) |
| sol | +0.4¢ | −2.9¢ | Yes (→ ~breakeven) |
| xrp | +2.2¢ (regardless of depth) | +2.2¢ | No — depth-independent |
| doge | deep n=20 (noisy/reversed) | — | No — too few, unreliable |
Depth-selectivity only shaves majors to breakeven — not a cure
- Real for btc/eth/sol only; shaves them to ~breakeven, not +EV.
- Does not hold for xrp (+2.2¢ regardless of depth) or doge (deep n=20, noisy/reversed).
- Costs volume (drops thin-book fires).
- Confound not yet controlled: deep books may correlate with a calm/benign regime (size was held constant, regime was NOT). If pursued, nail the regime confound first — otherwise the gate may just be a calm-regime proxy.
Strategic Read — The Fill-Structuring Space Is Exhausted
Every bid-structure lever has now been examined with rigor and come back negative or marginal:
- A0 first-touch avoidance → regime-confounded.
EMIT_MAX_ASKtightening → not supported.- Latency / fill-capture → structural (missed winners not catchable, ask runs instantly).
- Size → this study: it’s depth, exogenous.
The only survivor is a marginal depth-gate to breakeven on 3/6 assets. Leaning toward CALLING IT: the edge is not capturable to +EV via any bid structure found → pivot to hunt a new edge where we are not the structurally-picked-off taker. Reaffirms signal-healthy-fill-is-the-problem and the signal-healthy read: the model is fine; the loss is at the fill.
Method (Reproduce)
pm_fak_attempts(filled) →emitted_signals(joincondition_id→window_id, carryemit_ts).- →
observationsnearestas_of ≤ emit_ts, side-appropriatebest_ask_sz/down_best_ask_szvia a LATERAL join. depth_reach = filled_size / ask_sz.label = sign(orders.realized_pnl_usd)per(condition_id, token_id).net ¢ = (win ? 1 − px : −px) − 0.07·px·(1 − px).
Sample: 1398 fills, 100% book-joined, 16% exhaust top-of-book (matches the 2× study’s ~18%). Depth columns confirmed present: crypto_shortterm.observations.best_ask_sz etc.
Related
- crypto-shortterm-canary-confirmed-fill-ev-live-2026-07-16 — the live 13.6pt gap this study chased
- crypto-shortterm-depth-aware-sizing-nogo-2026-07-10 — sizing-UP NO-GO; joined from the other direction
- crypto-shortterm-a0-fill-policy-offline-scope-nogo-2026-07-12 — A0-avoidance NO-GO (fill-structuring space)
- crypto-shortterm-discriminator-catchability-ask-drift-2026-07-13 — missed winners not catchable (latency structural)
- crypto-shortterm-loss-decomposition-fill-adverse-selection-2026-07-10 — the standing fill-adverse-selection thesis
- crypto-shortterm-honest-recalibration-edge-gate-verdict-2026-07-11 — signal-healthy / honest-recalibration read
- signal-healthy-fill-is-the-problem
- crypto-shortterm — project index