Today + tomorrow — one row is one match
- Left player / right player — order from the TennisExplorer card. Click a name for their recent opponents on this surface, and those opponents’ form at that time.
- Official % (left) — chance the left player wins using only this week’s official ranking points. 0.73 = list says 73% left / 27% right.
- Our % (left) — same thing using our surface form (this week’s points + residual + last-15 on this surface).
- Edge — our % minus official %. Negative = we like the left player less than the list (we are closer to the right player). Positive = we like the left player more than the list.
- Our pick — whoever we give more than 50%.
- Same pick as the list — official ranking favorite and our pick are the same person. We might still disagree on how much (that’s the edge).
- We pick the other player — official ranking favorite is A, we give B more than 50%. That’s the only “flip.”
- Last 15 on this surface — wins–losses in their last 15 on this surface only.
- TE note — from the TennisExplorer profile injury table.
retired/walkoverusually means they retired or gave a walkover in some listed event, not a doctor’s diagnosis that they are injured today. Purcell: retired = TE recorded a retirement on his profile.
Loading…
Our rank on a chosen surface vs the official overall list
Official rank does not change with surface. Ours does. Switch the surface. Gap = our surface rank − official overall rank. Thin samples (n<8) are blended toward overall form.
Why there is no single “true” overall rank
- The ATP/WTA list is one number for all surfaces. That is their product, not ours.
- We walk every match in date order and store separate residuals for clay, hard, grass, indoors, plus an overall residual.
- Expected result at match T uses that week’s official points (join: latest Monday list ≤ match date). Written on every match row.
- Then we update the residual for that match’s surface. A clay win does not move your grass residual the same way.
- An H2H on hard in Cincinnati uses hard residual + hard last-15. Same two players on clay next month is a different our_points pair.
- The “overall” board is only “if you forced one number.” Do not bet that. Bet the H2H row.
1. Week list on the match
week(player, match_date) = latest official list with ranking_date ≤ match_date
p1_rank, p1_points = week(p1)
p2_rank, p2_points = week(p2)
Unranked that week → 50 points prior, blank rank.
2. Expected from that week’s official points
P(A beats B) = 1 / (1 + 10^( log10(B_points+50) − log10(A_points+50) ))
3. Surprise + surface residual
surprise = result − P result is 1 or 0
residual_surface += K × surprise and residual_overall too
K base: slam 90 · 1000 55 · 500 35 · 250 25 · challenger 12 · ITF 5 · futures 2
K × 1.30 final · × 1.15 SF/QF · × 0.60 qualifying
Walkovers / retirements skipped.
If n_surface < 8:
residual_used = (n/8)×residual_surface + (1−n/8)×residual_overall
4. Last-15 extra (on that surface)
l15 = official_week_points × 0.80 × mean(last 15 surprises on this surface) × confidence
l50 = official_week_points × 0.25 × mean(last 50 surprises on this surface) × confidence
confidence = min(1, n / max(4, N/2))
5. Dates are the formula
Every calendar day, residual decays — whether they play or not.
residual_overall *= 0.5 ^ (days / 50)
residual_surface *= 0.5 ^ (days / 32)
Last-15 only counts matches in the last 120 days. A 13–2 hard tape from March
is worth nothing on August 17.
Official ranking points are a 10% prior, also faded if they have not played:
prior = official_week_points × 0.10 × 0.5^(days_since_last_match / 50)
our_points = prior + decayed residual + last-15 (only if those matches are recent)
Hard residual rusts from the last HARD match, not the last clay match.
Sinner playing last month on clay does not keep a 5-month-old hard identity.
Sparseness: last-15 only counts matches in the last 120 days. If you have
0 recent hard matches, hard extras go to 0 and the official prior rusts on
the hard clock. Career 175 hard matches do not count as a current sample.
At every historical match we rust to THAT date first, then score the match.
6. H2H
our % left = P(left beats right | our_points on this surface, dates applied)
official % = P(left beats right | this week's official points, not rusted)
edge = our % − official %
The list can keep an injured #2. Form cannot.
Board surface: