tennis lab: normal + ratio + crazy rules at real closing prices
β lab Β· matches replayed 14,400 Β· ran 7/11/2026
What this is: A one-off study β its numbers below are exactly what the run reported.
| note | flat $1 at CLOSING prices (Bet365+Pinnacle best-of, the sharpest line there is); train 2020-2023, test 2024-2025. SURVIVES = +EV in BOTH windows with test nβ₯150. The always-favourite row is the margin baseline, not a strategy. |
| matches replayed | 14,400 |
results
| rule | test n | train n | verdict | test roi pct | train roi pct |
|---|
| book war fav only (crazy) | 16 | 51 | THIN | 23.38 | -18.14 |
| public always favourite (baseline) | 5,333 | 9,067 | DEAD | -2.11 | -2.66 |
| elo edge fav only (normal) | 1,528 | 1,776 | DEAD | -4.58 | -5.02 |
| elo edge 5 (normal) | 3,786 | 7,029 | DEAD | -4.93 | -7.07 |
| elo edge 10 (normal) | 2,952 | 5,872 | DEAD | -5.64 | -7.2 |
| book war b365 v pinnacle (crazy) | 266 | 553 | DEAD | -9.11 | -1.09 |
| surface elo edge 5 (normal) | 0 | 0 | DEAD | β | β |
| specialist gap 60 (ratio) | 0 | 0 | DEAD | β | β |
| rank ratio dog (ratio) | 0 | 0 | DEAD | β | β |
| fatigue fade 8sets (ratio) | 0 | 0 | DEAD | β | β |
| clutch dog (crazy) | 0 | 0 | DEAD | β | β |
| grinder fade (crazy) | 0 | 0 | DEAD | β | β |
Reading the columnswhat each number actually means
| AUC | predictability: 0.50 = coin flip, ~0.70 = ceiling for sports |
| Importance | how much the model leans on this factor (permutation importance) |
| Direction | sign of the raw correlation with the outcome |
| Survives all eras | effect points the same way in every historical era |
Spec Β· the reproducible recipe
{
"kind": "tennis_lab",
"rules": [
"elo_edge_5 (normal)",
"surface_elo_edge_5 (normal)",
"specialist_gap_60 (ratio)",
"rank_ratio_dog (ratio)",
"fatigue_fade_8sets (ratio)",
"clutch_dog (crazy)",
"grinder_fade (crazy)",
"book_war_b365_v_pinnacle (crazy)",
"public_always_favourite (baseline)",
"elo_edge_fav_only (normal)",
"elo_edge_10 (normal)",
"book_war_fav_only (crazy)"
]
}