Before every singles match, a statistical model estimates each player's win probability. It compares it with the odds offered by the market and only issues an alert when the expected value is positive. About 2 matches in 100 pass this filter. The model's accuracy is measured and published: version 1.1.0 picks the right winner in 67.39% of cases on 59,960 ATP matches since 2021, against 67.07% for the bookmaker's favourite on the same matches. Document published on 05/09/2026, measurements as of 31/07/2026.
The corpus holds more than 981,076 tennis matches since 2017: rankings, surfaces, recent form, head-to-head records, opening and closing odds. Since 1 January 2021, matches are imported live, as they are scheduled and then played. Earlier matches come from a retrospective bulk import whose reliability is not guaranteed: they are used for training, never for public measurement. The cut-off is measured, not assumed: before 2020, 96.9% of matches have an import date more than 30 days after the match date; from January 2020 that rate drops to 0%.
Before each match, a profile is computed with the information actually available at that moment: nothing that will be known after the first serve goes in. It gathers 18 criteria, including ranking and its trend, the record on the surface, form over the last weeks, recent match load, head-to-head results and the gap between opening and current odds. Every public match page shows these 18 criteria in full once the match has been played.
The engine estimates p, each player's win probability, then sets it against the market odds c, using Pinnacle as the reference because it is the bookmaker that accepts winners and whose odds carry the smallest margin.
A bet is only kept if the estimated probability multiplied by the odds exceeds 1: that is the mathematical definition of a value bet, a positive expected value. The recommended odds of each alert are that threshold, 1/p. Below it the bet loses its point and the engine does not play it.
The engine discards everything without measurable value: about 2 matches in 100 are kept. No volume for volume's sake. A high pick rate across all matches says nothing about value: in a sport where the favourite wins two times out of three, copying the bookmaker's odds would already give that rate. Value is measured on the selected matches only, against the market.
Walk-forward validation: each season is predicted by a model trained only on previous seasons, never the reverse. At no point does the model know the outcome of the matches it evaluates. Flat stakes, never a martingale: €50 per bet in the simulations. The edge comes from the probability, not from a staking plan that would hide losses.
Two measurements exist, and they do not cover the same thing.
Neither is a betting hit rate. Betting performance is measured separately, season by season, distinguishing the training seasons (2021 and 2022, flattering by construction) from the seasons unknown to the model. See the measured accuracy, version by version.
Alerts cover the ATP singles tour, excluding ITF and Futures. The site's public corpus (results, player profiles, match pages) covers ATP and WTA singles since 2021. Open bets are never visible: on a match with an active alert, the page shows the market odds but hides the prediction until the market closes. Any page showing a quantified alert on an upcoming match would not come from this site.
Season results are a simulation: none of these bets was placed. In real conditions, the gap between simulation and actual result is usually around 5 points, the time needed to find the odds and bookmakers limiting winning accounts being the main causes. Losing streaks are part of the model and can be read in the history.
Measurements are dated and have a single source: the operations console, of which the accuracy page is the readable version. Match-by-match results since 2021 can be downloaded as CSV under the CC BY 4.0 licence. Download the data.