Anyone can claim a win rate. We record every model prediction the moment it's made — with the odds at the time — then grade it against the final score. No cherry-picking, no deleted losses, no retroactive edits. This page is the receipts.
These are retrospective results, not live picks: the model was scored on 2,597 held-out games from 2024-25 + 2025-26, all played after its training data ends — computed after the fact, in one batch. The ledger below is different: each pick is logged before its game, one at a time, and the two are never blended.
Every dot is a confidence bucket from the sealed evaluation: across, what the model predicted; up, what actually happened. A perfectly honest model sits on the diagonal. Dot size is the number of games; the whisker is the 95% range on the actual rate. Click a dot — including the bad ones.
Click any dot to open its bucket
Where this cuts against us: buckets with n≥95 land within about 1.6 points of what the model stated, but the rare very-high-confidence tail (over 85%, about 2% of games) has run overconfident by 5–9 points, and the 40–50% home-probability decile missed its pre-registered ±5pp bound at −5.15pp. If you bet the model's most confident picks at face value, you were paying for certainty it did not have.
Sealed, pre-registered, one-shot evaluation on 2,597 games from the 2024-25 and 2025-26 seasons, all outside the model's 2012-24 training window. Statistically ahead of both the previous model (65.81%) and the better-record baseline. Accuracy only - no ROI has been measured.
No ROI measured — no historical odds exist for these seasons. Generated 2026-08-11T15:59:43+00:00.
Anyone who picks the yardstick after seeing the results can make a record look good. So the window, the yardsticks and the test were written down and published before opening night, where we cannot quietly change them. The hardest yardstick is the betting market's own favorite. Our sealed pre-season test never measured the model against it; this page does, every day.
Picks are graded the morning after their games. Until there are graded picks, every yardstick here is blank rather than a guess.
| Game | Model Pick | Model conf. | Odds (away / home) | Market Total | Result | Share |
|---|---|---|---|---|---|---|
Sat, Oct 17, 2026 · 3 picks | ||||||
| Boston Celtics @ Detroit Pistons | Sealed until tip-off | — | -102 / -116 | 222.5 | PENDING | |
| Philadelphia 76ers @ New York Knicks | Sealed until tip-off | — | +160 / -190 | 230.5 | PENDING | |
| Oklahoma City Thunder @ San Antonio Spurs | Sealed until tip-off | — | +108 / -126 | 231.5 | PENDING | |
The closing line is the last price before tip-off, when the market knows the most: injuries, lineups, the sharp money. If the market moved toward our pick after we logged it, we beat the close. Over hundreds of picks that is the best early evidence of a real edge, far sooner than a win-loss record can give. It is evidence, not profit. A pick can beat the close and still lose. The return on the picks is measured separately, one unit a pick, in the scorecard above.
Nothing has been measured, so there is nothing to show, and we will not fill the space with a guess. Each pick is priced the morning after its game, once the final score is graded; the first games tip off on Tuesday, October 20.
A book's close is the last moneyline it showed before tip-off, and it counts only if our odds recorder confirmed it within 30 minutes of the tip. Further out than that, the book has no close for that game and we say so; nothing is estimated or filled in. The market close is the median of every book's close with the vig removed (Shin method), from at least 3 books. CLV compares it with the price logged with the pick, also vig-free. Positive means the market moved our way. Each pick is priced once and never re-priced. A moved or postponed game gets no CLV.
Every game day, right after the picks are logged and before the first game starts, we take a fingerprint of that day's picks: a SHA-256 hash of each pick, its confidence, the odds and the time it was logged, mixed with a random secret. The fingerprint gives nothing away about the picks, and it can't be faked afterwards: change a single pick, a single decimal of a confidence or a price, and the fingerprint comes out completely different.
Each day's fingerprint also includes the day before's, so the days form a chain. Quietly rewriting an old day would break every link after it. Once the last game of a day has tipped off, we reveal that day's picks and secret, and your browser recomputes the fingerprint on this page.
The fingerprints are also published, as they are made, to a public copy we can't edit: https://github.com/altink14/bettingbuddy-ledger. Compare the chain there with the one here: if they match, no pick has been changed since it was fingerprinted.
Latest link in the chain: 66788cd41740ea696663f6fa1573ced08a4c70c7764094dfa2da53d8fd97bf29
Method bb-ledger-commit-v1: each pick is hashed as its id, date, book, game, tip-off, logged time, model, pick, confidence and both moneylines, numbers written with six decimals, in the order logged. Grading is not in the fingerprint: results are added after the game and were never a claim made before it.
Predictions are written to an append-only log the moment our model prices a game, alongside the sportsbook line at that time. Results are graded automatically from nba.com's box scores. If nba.com's box score is late, ESPN's final score grades the pick instead: the row says so, and it is checked against nba.com's box score when that arrives. Win percentage alone doesn't equal profit — favorites win often but pay little — which is why we show the odds we predicted against. Read how to interpret this on the Learn page.
The picks themselves arrive before tip-off on Pro, with the model's win probability and the price to beat. A free account opens the whole stats library.