Every prediction is logged before the game and auto-graded against the final score — losses included, nothing edited after the fact.
Updated Wed, Jul 29, 2:37 AM ET · analysis only · 21+
O/U vs the market's own line: model 47.2% vs market baseline 45.8% on 144 games — the bar that matters.
| Forecaster | Accuracy | Log-loss |
|---|---|---|
| Our model | 53.9% | 0.687 |
| Market (de-vigged) | 55.4% | 0.690 |
| Blend (what the app shows) | 56.4% | 0.688 |
Scored on the same 204 games — the games where a market probability was logged alongside the model's.
A calibrated model's 60% calls should win about 60% of the time. Predicted vs actual, by bucket:
| Predicted (home win) | Games | Avg predicted | Actually won |
|---|---|---|---|
| 20–40% | 17 | 36.3% | 41.2% |
| 40–60% | 156 | 51.1% | 50.6% |
| 60–80% | 54 | 64.4% | 63.0% |
| 80–100% | 2 | 81.1% | 50.0% |
The raw feed behind the numbers above: each pick logged pregame with the market's line at that moment, the model's edge, and how it resolved. 229 graded · 12 pending. Download the full CSV → · raw JSON
| Date | Matchup | Model's pick | Model | Market | Edge | Result |
|---|---|---|---|---|---|---|
| 07/28 | jays @ nationals | nationals | 58% | 56% | +1.7% | ✓ W |
| 07/29 | rockies @ padres | padres | 66% | 56% | +9.7% | · pending |
| 07/29 | brewers @ giants | brewers | 63% | 52% | +11.4% | · pending |
| 07/29 | phillies @ marlins | marlins | 51% | 40% | +10.7% | · pending |
| 07/29 | diamondbacks @ pirates | pirates | 53% | 55% | -1.9% | · pending |
| 07/29 | jays @ nationals | nationals | 52% | 48% | +4.7% | · pending |
| 07/29 | orioles @ tigers | tigers | 59% | 60% | -1.0% | · pending |
| 07/28 | guardians @ reds | reds | 52% | 57% | -5.0% | ✗ L |
| 07/28 | rangers @ rays | rays | 59% | 58% | +0.6% | ✗ L |
| 07/28 | guardians @ reds | reds | 52% | 46% | +5.9% | ✓ W |
| 07/28 | diamondbacks @ pirates | pirates | 56% | 48% | +7.0% | ✗ L |
| 07/28 | orioles @ tigers | tigers | 62% | 54% | +8.0% | ✓ W |
| 07/28 | jays @ nationals | nationals | 58% | 53% | +4.9% | ✓ W |
| 07/28 | braves @ mets | braves | 60% | 60% | -0.8% | · pending |
| 07/28 | yankees @ white sox | yankees | 57% | 57% | -0.1% | ✓ W |
Showing the 15 most recent of 241. A pending pick can't be faked — the line was locked before first pitch. Watch them settle.
Each journaled pick's price is compared to the market's de-vigged closing consensus for that side: positive means the pick got a better number than the close. A bettor who consistently beats the closing line is sharp; this is the metric that predicts profit — small samples wobble. 3-way soccer moneylines are excluded — they have no honest two-way close. What CLV is →
A walk-forward replay of the rating system over stored final scores (early-season burn-in excluded). The model never sees a game before predicting it.
| Sport | Games | Accuracy | Log-loss |
|---|---|---|---|
| MLB | 1342 | 53.6% | 0.690 |
| NBA | 1127 | 68.1% | 0.599 |
| NHL | 1185 | 54.1% | 0.683 |
| NFL | 243 | 65.4% | 0.630 |
The live record above is the real test: probabilities snapshotted pregame, graded on finals, flat methodology, no cherry-picking. The replay table is weaker evidence — it re-runs the rating system over stored seasons walk-forward, so it never peeks at the future, but replaying history is not the same as beating the closing line. A model can call winners at a decent rate and still lose money against the vig. That's why the app grades the model against the de-vigged market price, not just the scoreboard — beating the close is the only edge that persists. How closing-line value works →