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.
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.
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.
Grows with recent matches and with how many different people you play with and against. New players move faster; established players move slowly.
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.
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.
Starting point, batching, bounds, and corrections.
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.
{
"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"
}