DocsScoring SystemHandicap & Strokes

Handicap and Strokes

RoundBoss uses a rolling average system to calculate handicaps and determine stroke allocation between opponents. All parameters described below are configurable in Scoring Configuration.

Rolling Average

Each player's handicap is based on their average recent gross score. The rolling window is state-based: it uses the last N results a player has actually played (a score or a missed week) in weeks before the current week — not calendar weeks, and not pre-generated future weeks. The league manager sets how many results are included in the window (default 5). When a player doesn't yet have enough played results, their established handicap acts as the seed/fallback.

info
Handicaps update automatically after each week's scores are in. Players can see their current handicap on their profile page.
lightbulb
Because the window counts only weeks actually played, pre-generated future weeks on the schedule never dilute or freeze a player's average. Managers can also enable Drop Highest (handicap_drop_highest) to drop the N highest scores from the window before averaging.

At-the-Time Average

Your average for a past week is the average you carried into that week — it doesn't change as later rounds are played. Makeup rounds are scored against that at-the-time average, not your current average.

When a week locks, each match freezes the as-of-that-week average as a snapshot. That snapshot is what shows on past weeks and is used for makeup and miss scoring. Your current average is shown only for the current or upcoming week (and during live scoring).

Grace Periods

For early-season weeks, managers can configure two grace periods (both default 0, meaning no grace):

  • Seed grace weeks (seed_grace_weeks) — Seeded players keep their seed (established handicap) for weeks 1 through N. After that, the rolling average takes over.
  • New member grace weeks (new_member_grace_weeks) — Unseeded players get no average and no strokes for weeks 1 through N, until they've built up enough of their own scores.

Calculating Strokes

When two players are matched, the stroke difference is calculated as:

strokes = floor((higher_avg - lower_avg) * multiplier)

The multiplier (default: 0.9) prevents over-correction -- without it, higher-handicap players would be fully equalized, removing the advantage of consistent low scoring. The result is rounded down to a whole number.

Applying Strokes

1
Determine stroke count

Calculate the stroke difference using the formula above.

2
Identify hardest holes

Find the hardest-rated holes on the course, starting with the hole rated as the number one handicap hole.

3
Apply reductions

On the designated holes, the receiving player's score is reduced by one stroke before comparison with the opponent.

lightbulb

For example, if a player receives 3 strokes, those strokes are applied to the three hardest holes. On those holes, the receiving player's score is reduced by 1 before comparison.

Worked Example

Player A averages 42, Player B averages 48. With a 0.9 multiplier:

strokes = floor((48 - 42) * 0.9) = floor(5.4) = 5

Player B receives 5 strokes on the 5 hardest-rated holes on the course. On those holes, Player B's score is reduced by 1 before comparison.

Per-Player Handicap Overrides

Managers can override the handicap for a specific player on a specific match. This is useful when a player's calculated rolling average does not reflect their current ability or a league rule requires a one-time adjustment.

  • Overrides are set from the Match Settings modal on the week view
  • The override applies only to that single match — it does not change the player's rolling average or affect other weeks
  • Both players in a match can have independent overrides (Player A and Player B each have their own override field)

Team Handicap Cap

For team formats — Best Ball, Scramble, Alternate Shot, and Team Match Play — managers can set a per-team default handicap cap that limits the effective handicap strokes a team receives.

  • The cap is configured per-team on the Teams tab (Handicap Cap field, 0–72). Leave blank for no cap.
  • It propagates automatically to every future unlocked round for that team — past rounds are not modified.
  • Each round (or each side of a Team Match Play matchup) snapshots the cap at creation time, so editing the team cap later doesn't change frozen rounds.
  • Per-round overrides via the Match Settings or Team Settings modal still beat the cap (precedence: session override → persisted override → cap → live handicap).
  • Setting the cap to 0 enforces scratch play (no handicap strokes).
  • Team cards show a cap chip ("capped from X.X" hint when the rolling avg exceeded the cap); MatchupCards in Team Match Play show a "Cap: A N / B N" badge.
lightbulb
Use cap=0 for scratch weeks where you want teams competing without any handicap adjustment. The cap snapshot mechanism means you can change the team's default later without retroactively re-handicapping completed weeks.

WHS Handicapping & Per-Tee Ratings

Leagues using the WHS (World Handicap System) method can set up multiple tee ratings per course. Navigate to Course Settings and open the Tee Ratings (WHS) section to add tees with their own slope and course rating values.

Each player's preferred tee (set in Managing Players) determines which tee ratings are used when calculating their WHS handicap. If no matching tee is found for a player, the system falls back to the course-level default slope and rating.

info
Per-tee slope and rating only apply to leagues using WHS handicapping. Leagues using rolling average handicaps are not affected.
Handicap configuration settings in the manager dashboard
Handicap configuration in Settings