Today + tomorrow — one row is one match
- ATP/WTA rank is this week’s official ranking (the thing we used to call “the list”). It is shown as #97 vs #33 so you can see it.
- Official favorite = whoever has more official ranking points this week. That is ATP/WTA, not us.
- Our pick = whoever has more our form points on this surface (recent results + dates). Last-15 is a surprise sum with sample-size confidence: 10–5 in 15 matches beats 1–1 in 2. We do not multiply last-15 by official points anymore.
- Disagree = official favorite and our pick are different people.
- Click a name for who they actually played, on which surface, and those opponents’ form at the time.
- Surface is joined from the tournament page (
slug/year/league), never guessed from the event title. A clay challenger on a Cincinnati week is still clay. Missing = unknown, not hard.
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. Last-15 is a surprise SUM, not official points × W/L
last15_form = (sum of surprise in last 15 on this surface, last 120 days)
× 70 × (n / 15)
10–5 in 15 matches → full confidence.
1–1 in 2 matches → confidence 2/15. It cannot outshout a real tape.
our_points = official_pts × 0.04 × rust(days on this surface)
+ residual × 0.35 × (n/8)
+ last15_form
We used to do official_pts × 0.80 × mean_surprise. That made a #33 with
two matches louder than a #97 with fifteen. That is gone.
H2H pick = whoever has more our_points on this surface.
Official favorite = whoever has more ATP/WTA points this week.
Board surface: