Across 3,772 settled predictions the model expected 1,930 wins and 1,972 came in: 2.2% more than it said, a gap that ordinary chance explains.
Its biggest miss: players it gave 75% won 82% of the time, over 322 matches.
Every settled prediction, grouped by the chance the model gave. When a dot sits on the dashed line, players won exactly as often as it said.
| Model said | They won | Gap, pts | Matches |
|---|---|---|---|
| 7.5% | 12.5% | +5.0 | 40 |
| 16.0% | 15.3% | −0.7 | 85 |
| 25.7% | 20.7% | −5.0 | 309 |
| 35.6% | 35.4% | −0.2 | 553 |
| 45.1% | 44.9% | −0.2 | 732 |
| 54.2% | 56.8% | +2.6 | 912 |
| 64.6% | 65.8% | +1.2 | 619 |
Gap is how far the result landed from the forecast. Plus means those players won more often than the model said.
Same 3,369 matches, both sides priced. Lower is better: 0 is perfect, 0.25 is a coin flip. Across all 3,772 settled predictions the model scores 0.214.
Calibration is not profit. With its margin stripped out, the market's own price predicts results at least as well as we do.
Use our number as a second opinion on a price, never as a reason on its own to bet.
Matches where our number and the price were 5 points or more apart, settled with the losses in.
CourtCockpit is a real-time analytics product for men's ATP and Challenger tennis. Every upcoming match gets a model-estimated win probability, lined up against the bookmakers' price, with both numbers shown so you can see where they disagree and decide for yourself who you think is right. When they are 5 points or more apart, the match goes into the public record.
No tips, no Telegram channels, no "DM for the lock." Just numbers, tracked in the open.
A surface-specific Elo, trained match by match against every ATP result since 2020, plus tour-level Challenger and qualifying. Hard, clay and grass each carry their own rating, pulled toward the player's overall Elo so one thin surface sample cannot dominate, and read alongside his current ATP ranking.
That rating gives a win probability, which is blended with the bookmakers' consensus. The consensus gets the larger share and our number is never allowed far from it, because the market sees injuries and late news a rating cannot. The consensus is the median of the bookmakers' prices, each with its built-in margin stripped out, so both numbers are compared like for like.
Every priced match shows our number beside the market's. Where they are 5 points or more apart, the match also goes into the public record and is settled in the open. A gap is a disagreement, not a prediction that we are the one who is right. Above 15 points it usually means the model cannot see something, like an injury or a walkover, so treat a large gap as a reason to look rather than a reason to bet.
One person builds and runs CourtCockpit, which is why the model says what it does and why the record is published with the losses in it. Questions, billing, or something broken: support.
| 74.5% |
| 81.7% |
| +7.2 |
| 322 |
| 84.1% | 85.6% | +1.5 | 146 |
| 92.6% | 96.3% | +3.7 | 54 |