The loss was never the data
A short one. I keep asking "what data would make the model more accurate?" It turns out that was the wrong question.
I audited where the game-line losses actually live. Not by feature, not by team — by probability bucket. The answer was embarrassingly specific:
| model said | bets | actually won |
|---|---|---|
| ~25% | 8 | 0% |
| ~37% | 22 | 14% |
| ~46% | 83 | 24% |
| ~55% | 86 | 51% |
| ~64% | 95 | 56% |
At and above 50%, the model tells the truth. Below 50% — every underdog pick — it claimed ~44% and hit ~20%. The "edge" it saw on dogs was never signal; it was a miscalibrated probability meeting a market price. And Kelly staking made it worse, because a bigger fake edge earns a bigger real stake: the bets that lost the closing line were staked nearly twice as large as the ones that beat it.
Meanwhile the model's closing-line value is positive — it beats the close ~63% of the time. The signal exists. The probabilities wrapping it don't hold, in one specific region, and the sizing amplifies exactly that region.
So: no new data sources, no new features, until the probability layer is rebuilt and proves itself out-of-time. In the meantime the fixes are rails, not cleverness — underdog-side game picks don't stake, two more prop families went report-only, and every stake is running at half its old Kelly fraction.