Match + surface form, not one fake overall ladder

Official ATP/WTA rank is one overall list. Form is not. We keep a residual and last-15 per surface (clay / hard / grass / indoors). A Cincinnati match uses hard-court form as of that week’s list — not someone’s clay identity. Sitting out months rusts form (half-life 120 days off, 70 days off this surface). Switching hard→clay rusts clay and only bleeds a bit of current overall form. The number we bet with is the H2H row, not a single “world rank.”

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 / walkover usually 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:

ATP — list hotter than us on this surface

ATP — we have them higher on this surface

WTA — list hotter

WTA — we have them higher