Exchange price autopsy
The short answer
For months this site published exchange prop prices that could not actually be bet: 635 of 3,339 quoted ProphetX prop sides, about 19 percent, were derived from the opposite side of the order book rather than read from a real offer. The confidence signal's own selection concentrated on exactly those, with 597 of the 602 flagged plays sitting on ProphetX, or 99.2 percent, resting on a derived price. Repriced at the measured correction the published record's 8,691 graded plays turn from +7.59 percent to -3.46 percent, so the record measured a pricing defect rather than an edge; the bug was killed and signal v1 retired publicly the day it was found, and no money was ever staked on any of it.
Why this page exists
A research section that only publishes work it is proud of is marketing. The useful test of whether the two studies next to this one can be trusted is what happens on this site when a number turns out to be wrong. So this page is the account of the worst pricing failure this site has had, written the day it was found.
What happened
On 2026-08-12 the founder was about to stake real money on five prop bets that this site's own signal had flagged, all priced at the prediction market ProphetX. He opened the ProphetX app and screenshotted each one. Every single price was far worse than what had been published, and every gap ran the same direction.
| Bet | Our published price | Actual price in the app |
|---|---|---|
| Spencer Horwitz Under 0.5 RBIs | -198 | -300 |
| Jacob Gonzalez Under 0.5 RBIs | -240 | -375 |
| Jared Young Under 0.5 RBIs | -235 | -350 |
| Colton Cowser Under 0.5 HR | -684 | -1250 |
| Jonah Heim Under 0.5 HR | -541 | market not findable |
The arithmetic
ProphetX is an exchange. Its API returns, for each outcome, a stack of takeable offers, each one funded by a trader who wants the other side of that bet. Two resting orders cannot cross, so the two displayed sides always sum to more than 100 percent implied. Measured on one live MLB event: 195 of 195 two-sided markets, minimum 100.59 percent, median 106.24, not one below 100.
When our code decided a side had too little money resting on it, it filled the gap by deriving that side's price as 100 percent minus the opposite side's implied probability. That is better than the real price by the entire width of the book, by construction. It does not find a cheaper seat. It quotes a seat already occupied by a trader who also wants our side, and who will therefore never take the other end of our bet.
The trigger underneath was a units mistake. The order-book walk read each
level's stake field as dollars a taker could put down. It is not:
stake is the resting counterparty's own money, the maximum
winnings, and a separate field carries the takeable dollars. On a heavy
favourite the two differ by the odds. Colton Cowser's Under book read $37.72 of
one and $457.26 of the other. So the hundred dollar minimum-fill gate failed on
sides holding hundreds of real dollars, and the code fell through to the mirror
every time. Every one of the five bets above was an Under on a 0.5 line, which
is the exact shape where the misread is largest.
Cowser reproduces end to end. The Over top was +670 with $1,418 resting, which derives to -684, which is what we served. The Under book actually held -870 at $26.88, -1200 at $60 and -1250 at $370.38, so a hundred dollars fills at -1250. That is the number in the screenshot.
How bad
Measured against the raw order books rather than against reasoning: of 49 derived sides whose own book could fill a hundred dollars, 49 were published better than that fill. Median gap 7.9 probability points, maximum 20.2, zero exceptions. Sixteen more were published on a side holding literally nothing.
Across the board, 635 of 3,339 quoted ProphetX prop sides were derived, about 19 percent. But the signal did not sample the board evenly. Replaying its own selection over that day: 602 of 753 flagged plays sat on ProphetX and 597 of those 602, or 99.2 percent, were derived. Seventy-nine percent of every prop play the signal would flag rested on a price nobody could get. The selection logic was hunting for the best available number, and the fabricated numbers were always the best available.
An earlier bug ledger entry had asserted that a derived pair always sums to over 100 percent and so could never manufacture an arbitrage. That was false, and it was observed false on the live board the same day: one market served Over -180 and Under +211, a 3.6 percent arbitrage inside a single book.
What it did to the published record
This site published a signal record page with a live performance figure on it. 7,512 of the 8,691 graded plays, 86 percent, were priced at ProphetX, and 5,536 of 5,636 Strong tier plays, 98.2 percent. The page never mentioned that concentration.
| Slice | Plays | As published | Repriced |
|---|---|---|---|
| Whole graded record | 8,691 | +7.59% | -3.46% |
| Strong tier | 5,636 | +10.42% | -2.50% |
| Never priced at the affected venue | 1,179 | +1.18% | unchanged |
Break-even sat at about 5.1 probability points of correction, below the 7.9 that was measured. And the repriced column is the generous reading: at the real price most of these plays would never have been flagged at all, because the edge that flagged them was the pricing error. Removal, not repricing, is the more honest counterfactual, and it leaves 1,179 plays.
Signal v1 was retired publicly the same day and the real-stakes forward test was canceled before its first bet, at zero wagers and zero dollars. The retirement is a label and nothing else: no row, interval, chain link or scoring value was edited, and all three frozen hashes stay byte-identical. That is the only reason the claim "the scoring never moved, the prices under it were wrong" is checkable by anyone else. The record is still up, with the correction on it, which is the living example of the rule this section runs on.
The three permanent checks
These are the generalizable outputs. Each is written so it can be tested rather than remembered.
1. A served two-sided price pair from a single book may never sum below 100 percent implied. Genuine two-sided pairs carry a hold. A pair that does not is either an arbitrage against a real book, which it is not, or a price we invented. This check costs nothing, needs no venue access, and would have fired from our own payload on day one.
2. Never derive an order-book price from the opposite side on a venue that already publishes both sides as offers. The test for which kind of venue you are looking at is the same arithmetic: if the two displayed sides sum above 100 percent, they are both takeable and there is nothing to derive. Where a venue publishes bids only, derivation is correct and necessary. Getting this wrong is not a coding error, it is a misreading of the venue, so it needs one end-to-end reconciliation against the venue's own screen before its prices are trusted, and again whenever the pricing path changes.
3. A record concentrated in one venue inherits that venue's bugs, and has to be reported by venue as well as in total. Concentration is not a footnote about diversification. It is a single point of failure for the entire claim, and one venue's defect became the whole result.
The part that actually cost the most
Two earlier fixes had landed on this exact code. Both were correct. Both accepted the surrounding documentation's model of how the venue worked, and that model was wrong. When a symptom survives two correct fixes, the answer is one layer up.
Nobody put a hundred dollar bet next to the app until the day this was found. An exchange integration needs one end-to-end reconciliation against the venue's own screen before its prices are trusted. That is now a rule here.
What is still open
The kill switch shipped the same day and drops derived sides at the fetch boundary, so they reach no surface at all. That is stop-the-bleeding, not the repair. The repair is to walk the correct capacity field, quote the honest own-book price and delete the mirror, and that is a pricing change that belongs in a reviewed commit rather than in an incident. Until it lands, every prop-based study on this site is on hold, including a finished one that would otherwise be published in this section.
The data behind this
Every figure above was computed from the site's own price archive, and the whole archive is free to download on the historical odds data page: one row per snapshot, book, market and side, with de-vigged fair probabilities already in the file. If you rebuild this study from it and get a different answer, that is a result worth sending to admin@theoddsgap.com.
Revision history
The morning gap report.
The best gaps on the board, in your inbox at 10 AM ET. Free.