Where tennis prices go soft: what six years of walk-forward taught us about recreational books
· Tennis Analytics
By the founder — Princeton econometrics; competitive tennis player
Our model doesn't beat Pinnacle. This essay is about the books it can measure — and the one claim from six years of data we're willing to put our name on, brackets and all.
Soft books are mechanically worse at this
Recreational books — the ones with ads, parlays and deposit bonuses — price tennis worse than Pinnacle, persistently. Across our 2019–2024 sample the best available recreational price beat Pinnacle's on essentially every match, by +0.094 in decimal odds on average (~3.5%), positive in all six years and every tournament tier.
That gap alone is nearly free money in the accounting sense: taking the best-of-4 price instead of Pinnacle's on identical picks was worth +4.6 percentage points of ROI, 95% CI [+3.6, +5.6] against the sharp close. That interval excludes zero comfortably. Line shopping is the most provable edge in this entire project — and it's available to anyone, model or no model.
The filter, exactly as validated
The model's job is narrower: find the matches where a recreational book's price disagrees with the calibrated fair line by enough to matter, but not by so much that the price is probably a mistake you can't actually bet.
The deployed filter, fixed before deployment and never tuned since:
- model-favored pick, Pinnacle odds in [2.0, 3.0)
- model-vs-market disagreement of 5–12% (vig removed)
- executed at the best available recreational price
In the six-year walk-forward (each year scored by a model trained only on earlier years; 1,402 qualifying picks):
| Priced at | ROI | 95% CI | | --- | --- | --- | | Best-of-4 books | +10.4% | [+3.9%, +17.3%] | | Pinnacle close | +5.9% | [−0.3%, +12.5%] |
Read the second row first: against Pinnacle's close the interval touches zero, which is why we don't claim to beat Pinnacle. The first row is the claim we do make — the filter, executed where the softness actually is, with a CI that excludes zero. The gap between the rows is the product: roughly half the return is line shopping, and the filter's job is choosing when the shopping is worth doing.
The caveats we'd want disclosed to us
Year-to-year variance is brutal. Pooled results lean on 2022, the one year strong enough to clear zero on its own; 2021 was −18% against the close. Anyone quoting a six-year average without saying that is selling.
We already fell into the multiple-comparisons trap once, in public. A narrower 6–10% band looked better in-sample — it was the best of nine candidate bands, and it survived every statistical correction we threw at it. On the 2024 holdout it returned −1.0%, well below its claimed lower bound. The band was overfit; the correction procedure wasn't enough. That's why what's deployed is the broad, boring 5–12% band, and why any future filter change has to survive a holdout it wasn't discovered on.
Bigger disagreement is not a better pick. We tested whether the size of the model-market gap predicts winners: it doesn't (the effect is negligible and not significant). Above 12%, a huge gap usually means a stale line or bad data — the Edge Board renders those as a caution, never as conviction.
Paper numbers shrink in the real world. Best-of-4 assumes you hold accounts at soft books, get the posted price, and don't get limited. Our honest live expectation is +2–4%, not +10%. Soft books limit winners; that friction is real and unmodeled.
The test that never ends
Every pick the filter flags goes on the public ledger — flagged price, vig-removed Pinnacle close, closing-line value per pick, running aggregate at the top. Rows are never edited; corrections append. If the aggregate CLV on filtered picks sits at or below zero over any rolling 6-month window with n ≥ 100, the claim above comes off this site — a rule we pre-committed to on the Receipts page before the forward record started.
Six years of history earned the filter a live trial, not a verdict. The ledger is the verdict, accumulating one graded pick at a time.
This isn't theory — it runs every morning.
Every method described here feeds the daily board, and every flagged pick is graded against the close on the public ledger.
See this live on today's board →