Pro PickleballClub
Open source · algorithm ppc-club-rating-engine-v1+bigint-fixed-point-60 · active since Oct 21, 2026

How the Club Rating works

The Club Rating is this platform's own doubles rating, from 2.000 to 8.000 with three decimals. The whole formula is published and versioned.

Points vs. expected

Δ = K × reliability⁻¹ × (actual share − expected share)

Every point counts, not just wins. Beat a stronger team's expectation — even in a 9–11 loss — and you can still gain rating. Win 11–9 against a much weaker side and you can lose a little.

Expected share

Your side's strength is the average of you and your partner. The rating gap between the two sides sets the share of points each side should win.

Reliability

Grows with recent matches and with how many different people you play with and against. New players move faster; established players move slowly.

Which matches count

Finalized league scorecards in rated seasons only, playoffs included. Disputed, unrated, or rec games never count. If a sub filled in, the sub's rating moves.

The Club Rating isn't DUPR

Self-reported DUPR seeds your starting point. After that, only club play moves it. We never call the Club Rating DUPR or an estimate of it.

The fine print

Starting point, batching, bounds, and corrections.

Your starting rating
The DUPR doubles rating you reported when you first played in a rated season, or the default seed if you didn't report one. Changing your reported DUPR later doesn't change your Club Rating; your results do.
A league night counts as one batch
Every match you play in one night uses your rating from the start of that night. The movement from each match is added up, capped, and applied once, so match order never matters.
Ratings stay between 2.000 and 8.000 and never decay
If you stop playing, your rating stays where it was, but your reliability slowly falls, so you'll move faster again when you come back.
Corrections rebuild history
If an official score is corrected, every affected rating is recomputed from the corrected facts.

Active algorithm

Changes are published as a new version and replayed against history before activation.

Club Rating v1 (provisional): points vs. expected, partner-average side strength, reliability-scaled K, no decay. Constants are provisional until calibrated.

Version
ppc-club-rating-engine-v1+bigint-fixed-point-60
K factor
0.5 new · 0.1 established
Rating periods
One per league night
Cap per night
±0.500
Reliability half-life
120 days
Activated
Oct 21, 2026
Status
Active
Config hash
2cae02a848b6cbd8aa5a29fa438d253de2bda7f4f358c66cbc42e96762a36e9a
Full configuration
{
  "kNew": "0.5",
  "varietyCap": 12,
  "kEstablished": "0.1",
  "teamStrength": "arithmetic_mean",
  "varietyFloor": "0.5",
  "maximumRating": 8000,
  "minimumRating": 2000,
  "schemaVersion": 1,
  "sourceWeights": {
    "league_official": "1"
  },
  "integerRounding": "half_away_from_zero",
  "expectationScale": 2000,
  "inactivityPolicy": "reliability_decay_only",
  "perMatchDeltaCap": 200,
  "seedPriorMatches": {
    "none": "0",
    "player_reported": "1",
    "organizer_reported": "1"
  },
  "defaultSeedRating": 3500,
  "engineBuildDigest": "0000000000000000000000000000000000000000000000000000000000000000",
  "perPeriodDeltaCap": 500,
  "establishedProtection": "0.5",
  "engineSemanticsVersion": "ppc-club-rating-engine-v1+bigint-fixed-point-60",
  "reliabilityHalfLifeDays": 120,
  "reliabilityHalfVolumeMatches": "10"
}