Shelfware Labs
SW-02·Technical teardownDeep dive

The Scanner That Cried Arbitrage — Technical Teardown

The version with the receipts. Every claim from the plain-English writeup, with the numbers, the formulas, and the data behind it — so you can check the work, or reproduce it.

TL;DR
  • Scanned the full Kalshi universe — ~6,800 events / ~28,900 markets (an event is one question; each holds several Yes/No markets, ~4.2 on average) — for six kinds of price-mechanical arbitrage. Raw flags: 293.
  • All 293 fell into four buckets: fee illusions (edge < the fee), non-exhaustive sets (a missing outcome), wide-book mirages (edge vs. an untradeable price), and real-but-undoable (genuine, ~1 contract deep).
  • The strict, honest test — every mutually-exclusive event where the Yes-asks actually sum below $1 — returned 3 hits out of 3,098 events, each worth $0–2.
  • The survivors that persist are long-dated, so once you annualize the guaranteed profit over months of frozen capital, the yield is ~1–2%/yr — below a savings account.
  • Net edge that beats cash, after fees, tails, book width, depth, and settlement lag: zero.

1 · The funnel

The whole pipeline in one table. The first two rows are from the July 2026 full-universe scan; the strict-test rows are the cleanest, most conservative version of the question.

Kalshi structural-arb funnel
StageCountWhat it means
Open events scanned~6,800distinct questions (e.g. "Best AI this month?", a temperature ladder); ~3,098 of them are mutually-exclusive — the kind the arb test can apply to. Full live universe, after a coverage bug that had capped it at ~2,000 events was fixed.
Open markets scanned~28,900the individual Yes/No contracts inside those events — ~4.2 per event — every one priced and checked
Raw structural flags293any of the six checks tripped, before honesty filters
— minus fee illusionsgross-positive, net-negative after the taker fee
— minus non-exhaustive setsan outcome (e.g. "8+ bills") wasn't covered
— minus wide-book miragesedge measured against a price nobody would trade
— minus sub-depthreal, but ~1 contract deep
Strict sum-violations (of 3,098 ME events)3Σ(Yes ask) genuinely < $1, exhaustive, real book — each worth $0–2
Net edge that beats a savings account0after fees, tails, width, depth, and the settlement wait

Note: I didn't preserve a clean per-category census of all 293 from that run — what's documented is the disposition logic and the representative kills below. The strict test (3 of 3,098) is the number that actually bounds the opportunity.

2 · The six checks

Prices are in integer cents; a Yes and its No on the same market are complements, so a missing No price is recovered as no_ask = 100 − best_yes_bid. For a group of k mutually-exclusive outcomes:

Structural strategies the scanner ran
StrategyFires whenWhat it exploits
All-No basketΣ(no_ask) < (k−1)·100exactly one wins → k−1 No's pay $1 each
All-Yes complete setΣ(yes_ask) < 100exactly one Yes pays $1 (needs an exhaustive set)
Favorite synthetic-NoΣ challenger no_ask − (k−1)·100 < fav_yes_askrebuild the favorite from rivals' No's, cheaper
Same-contract Yes/Noyes_ask + no_ask < 100one side always pays $1
Deadline ladderearlier_no_ask + later_yes_ask < 100"by Nov" implies "by Jan" → a locked payoff
Ladder monotonicityearlier_yes_mid > later_yes_midimpossible ordering → a mispricing flare

3 · The fee is a hill, and it sits right on top of the edge

Kalshi's taker fee per contract is ceil( 0.07 · p · (1−p) ) in dollars, where p is the price as a probability. It's a parabola: near-zero for long shots and near-certainties, and largest — 1.75¢ — for coin-flips at 50¢. Structural edges are usually 1–2¢, so across the entire middle of the price range the fee alone is bigger than the edge.

fee per contract vs. price
0 0 50¢ 100¢ price of the bet → fee peaks at 1.75¢ a typical edge ≈ 1–2¢
Read it like this: wherever the amber fee curve pokes above the green "typical edge" line — roughly the whole 30¢–70¢ middle — the fee by itself is larger than the entire arbitrage. That's the single most common way the 293 died.

4 · The four ways they died, with data

4a · Fee illusion

A representative near-coin-flip edge, before and after the fee:

Market price pgross edgefee 0.07·p·(1−p)net
0.50 (coin flip)1.5¢1.75¢−0.25¢
0.30 / 0.701.5¢1.47¢+0.03¢
0.15 / 0.851.5¢0.89¢+0.61¢

Only the extreme, illiquid tails survive — which sets up trap 4c and the depth problem.

4b · The list wasn't exhaustive — live data

The real market KXBILLSCOUNT (live on Kalshi ↗), "How many bills will President Trump sign," July 2026 edition — pulled live from Kalshi's public API. Eight buckets, 0 through 7, and no "8 or more."

KXBILLSCOUNT-26JUL · current Yes asks
Bucket012345678+
Yes ask13¢26¢28¢
Sum of the set103¢no such bucket

Today the set sums to 103¢ — above a dollar, so there's no even-superficial "free money" right now. But when the scanner first hit it, the asks summed to about 89¢, which looked like a guaranteed dollar for eighty-nine cents. That 11¢ "discount" wasn't a mistake — it was the market pricing the chance the count lands on 8, the outcome the bucket list omits. If it does, the whole all-Yes basket pays $0. (Some months this series did ship an "8 or above" catch-all; June and July didn't — inconsistency you cannot assume away.)

4c · Wide-book mirage

The favorite-synthetic check flagged a rugby "Tie" — a <1% outcome — as the "favorite," off a single stale ask. The book:

Outcomebest bid (buy here)best ask (sell here)spreadtradeable?
Rugby "Tie"94¢94¢no — 40¢+ wide, no real interest
(a healthy market, for scale)49¢50¢yes

The scanner "edge" was computed against that 94¢ ask. You could not transact one share near it. Rule added: reject a "favorite" whose book is wider than a set cap.

4d · Real, but one contract deep

The all-No basket that started the project (the "Best AI" market), from the source screenshot. Claude was the runaway favorite, so betting against it (buying No) is cheap at 11¢; the other three are long shots, so betting against them costs almost a full dollar each. Buy all four No's and exactly three must win — a guaranteed 300¢ for a cost of 298¢. Genuinely positive after fees, and about one contract deep.

All-No basket · "Best AI this month?"
Leg (buy No)No askfee/contract
Claude No11¢0.69¢
Gemini No93¢0.46¢
ChatGPT No95¢0.33¢
Qwen No99¢0.07¢
Total cost — the four No asks, summed298¢= 11+93+95+99
Guaranteed payout — exactly 3 of 4 pay $1300¢gross +2¢
Net after fees · executable depth≈ +0.44¢ per contract · ≈ 1 contract deep

Theoretically ~$0.44 on 100 contracts; in reality the book supported roughly one, so the real take was under a nickel. A genuine edge you cannot size into.

5 · The capital killer: waiting

Even a real, deep, fee-surviving edge is judged on return, which needs two more numbers: capital tied up, and time. Using the all-No example — a guaranteed ~$2 on ~$298, i.e. 0.67% gross (or ~0.15% once you subtract the fee) — here's what the annual rate does as the settlement date moves out. I'll be generous and chart the gross figure:

Annualized return on a 0.67% guaranteed edge, by settlement lag
Settles in…1 day1 week1 month3 months6 months
Annualized return (gross)≈245%≈35%≈8%≈2.7%≈1.3%

A savings account pays about 3%. On the generous gross edge, the arb clears that bar only out to ~11 weeks; net of the fee, nearer two.

annualized yield vs. how far out the market settles
10% 5% 0 now 3 mo 6 mo how far out the market settles → savings account · ~3%/yr ↙ below cash after ~11 weeks
The trap in one picture: even on the generous gross edge, the yield beats a 3% savings account only if the market settles within about eleven weeks — and the genuine arbs that linger unclaimed settle far beyond that, six months to a year+ out, deep in the flat tail below cash. (Net of the fee, the crossover is nearer two weeks.) Either way: the free money that lasts, lasts because it isn't worth anyone's capital.

6 · The clean sweep

The strictest version, run over every mutually-exclusive event on the exchange: does Σ(best Yes ask) < 100 — a genuine, exhaustive, real-book violation of the arithmetic?

Events scannedGenuine violationsValue eachPersisted > a few sec
3,0983$0–20

7 · Reproduce it yourself

None of this requires an account or a key — Kalshi's market data is public. The whole thing is checkable in an afternoon:

reproduce
  1. Pull open events with nested markets: GET external-api.kalshi.com/trade-api/v2/events?status=open&with_nested_markets=true, paging the cursor to the end (it's ~6,800 events; mind the ~2,000-per-page trap).
  2. Keep the mutually_exclusive events. For each, read every market's yes_ask_dollars (and recover No sides as 1 − yes_bid).
  3. Flag Σ(yes_ask) < 1.00 for the all-Yes check, or Σ(no_ask) < (k−1) for all-No.
  4. Before believing any flag: confirm the set is exhaustive (an open-ended top bucket or a "Field"/"other" outcome), subtract the taker fee ceil(0.07·p·(1−p)) per leg, cap on book width, and cap size at the thinnest leg's depth.
  5. Divide the surviving net by capital, then by days-to-settlement × 365. Compare to a T-bill. Watch it lose.

Sources: the 28,900 / 293 / 3,098→3 figures are from the July 2026 full-universe scan logged in the project's own records; the KXBILLSCOUNT bucket table is live API data pulled while writing this; the fee and annualization figures are direct from the formulas above; the "Best AI" basket is the original source screenshot.

SHELVEDcause: fees, tails, depth & the calendar
"293 opportunities. Zero that beat a savings account."