Rating-Budget Tournament System

A complete rated schedule, generated before Round 1

1. Enter Players and Generate the Schedule

Accepted formats: Name; 2200, Name, 2200, or Name 2200. Use 3–256 players and integer ratings from 0 to 4000. Players are sorted by rating; equal ratings retain input order.

Each player has a personal rating group of nearby players in rating order, covering roughly one-third of the field. The primary objective is to match each player’s rating budget as closely as possible, keeping their average opponent rating close to their group’s average.
Rating budget = number of scheduled games × average rating of the player’s group.

About Rating-Budget Tournament System

The Rating-Budget Tournament System creates the complete schedule before the first round. Unlike a Swiss tournament, later pairings do not depend on results.

Each player has a personal group of nearby players in rating order, containing approximately one-third of the field and excluding the player themselves. That group’s average rating, multiplied by the number of scheduled games, gives the player’s rating budget: a target for the combined ratings of all their opponents. For example, an average of 1800 over nine games gives a budget of 16,200. Some opponents may be stronger and others weaker—the aim is to bring their combined ratings close to that target.

Matching these budgets is the system’s main priority. It also tries to arrange at least half of each player’s games against opponents from their personal group, although this is a preference rather than a guarantee.

Players never face the same opponent twice. White and Black totals are balanced as evenly as possible, and the system tries to avoid long runs of the same colour. With an odd number of players, one player rests each round, and nobody receives more than one scheduled rest. A rest adds no opponent rating and reduces the player’s budget by one personal target. Rest-round standings points are separate from the rating budget.

The schedule is fixed once generated, so rounds can be played in any order. Colour-streak improvements apply to the generated round order. The system searches for a good overall balance, but does not guarantee the best possible schedule.

Personal rating groups

TPN 1 is assigned to the highest-rated player. Equal ratings retain roster order. Each player has a personal neighbourhood in rating order, excluding the player themselves.

N = number of players R = number of scheduled rounds x = the player’s one-based TPN h = ceil(N / 6) g = 2 × h FirstTPN[x] = max(1, min(x − h, N − g)) LastTPN[x] = FirstTPN[x] + g PersonalGroup[x] = all TPNs from FirstTPN[x] through LastTPN[x], excluding x

The group size is N / 3 rounded upwards to an even integer. Ideally there are h opponents above the player and h below. Near either end of the field, unavailable places are transferred to the other side. Every personal group contains exactly g eligible opponents.

With 60 players, h = 10 and g = 20. TPN 1’s group contains TPNs 2–21; TPN 30’s group contains TPNs 20–29 and 31–40; TPN 60’s group contains TPNs 40–59. With 50 players, h = 9 and g = 18.

Individual rating targets and budgets

PersonalTarget[x] = sum of the ratings in PersonalGroup[x] / g ScheduledGames[x] = R − ScheduledRests[x] PersonalBudget[x] = ScheduledGames[x] × PersonalTarget[x] Primary objective: Minimize Σ over players |AssignedOpponentRatingSum[x] − PersonalBudget[x]|

Each player has their own target opposition mean and rating budget. The player’s own rating is not included in their personal-group mean. Budgets depend on scheduled games, not on how many results have been recorded or how many games were actually played.

Overlapping personal-group means do not necessarily preserve the field’s total rating. Consequently, zero total budget error is not always possible. Diagnostics include an aggregate budget-error lower bound. For an odd field, that bound applies to the schedule’s current rest allocation.

Secondary personal-group preference

RequestedGroupOpponents[x] = ceil(ScheduledGames[x] / 2) GroupShortfall[x] = max(0, RequestedGroupOpponents[x] − GroupOpponents[x]) Optimization priorities: 1. Total absolute personal-budget error 2. Total personal-group encounter shortfall 3. Total TPN distance

At least half of each player’s scheduled games should preferably be against members of that player’s personal group. There is no additional +1 for an even number of games. A scheduled rest is not a game.

Rating-budget accuracy takes precedence. The half-group rule is a secondary preference, not a guaranteed constraint. It may remain unsatisfied because of budget priorities, structural limitations or the bounded search. Without rematches, a player cannot face more than g distinct personal-group opponents.

Group membership is directional: an opponent can belong to one player’s personal group without the reverse being true. Each game’s group contribution is therefore counted separately for its two players.

How scheduling works

Several valid round-robin-derived schedules are generated. Round selection and legal within-round exchanges improve the rating-budget objective. Exchanges never introduce repeated opponents or multiple appearances in a round.

A balanced Euler orientation assigns colours. Every player receives equal White/Black totals when their number of games is even, or a difference of one when it is odd. Directed-cycle reversals and round-order exchanges then reduce colour streaks without changing opponents or colour totals.

This is a bounded heuristic search. A remaining budget error, personal-group shortfall or long colour streak is reported explicitly. Failure to eliminate a shortfall is not proof that doing so is mathematically impossible. Because the search is randomized, generating the schedule again may produce a better result, but improvement is not guaranteed.

Odd fields

One player rests in each round, and no player receives more than one scheduled rest. A rest adds no opponent rating. A player without a rest has a budget of R × PersonalTarget. A player with one rest has a budget of (R − 1) × PersonalTarget. This keeps the target average opposition rating unchanged.

For example, in a nine-round tournament, a player with a personal target of 1800 has a budget of 16,200 for nine games, or 14,400 for eight games and one rest.

Both the rating budget and the requested personal-group count use scheduled games: R games without a rest, or R − 1 games with a rest. If an exchange changes who rests, both values are recalculated for the affected players.

Rest points are configurable and default to one point. They are awarded when all games in that round have recorded results. Rest rounds do not count as White or Black games. Colour streaks count consecutive actual games, ignoring intervening rests.

Standings and tie-breaks

WNT uses the following formula, where R is the scheduled number of rounds, Pᵢ is an opponent’s recorded tournament score, and rᵢ is the player’s awarded result against that opponent:

WNT = 100 × Σᵢ [(Pᵢ / R) × (rᵢ + Pᵢ / (2R))]

Progressive adds cumulative scores after rounds with recorded results, in scheduled round order. It therefore remains provisional when rounds are played out of order.

Buchholz Cut-1 adds recorded opponents’ scores and removes the lowest entry. Each credited rest contributes a zero-point opponent. This is a simple application-specific treatment, not a claim of FIDE-compliant unplayed-game adjustments.

Recorded forfeits contribute their awarded points to these tie-breaks. Players still tied after the selected tie-break share a position; TPN only determines their display order.

Withdrawals and saving

Withdrawal does not regenerate the schedule or change personal groups, scheduled-game budgets or targets. Blank games from the effective round receive automatic forfeits. Existing manual results remain unchanged. Reinstatement removes automatic forfeits that no longer apply.

Browser storage saves the tournament automatically when available. Download JSON backups regularly. No data is sent to a server, and separate browser tabs do not synchronize.

Withdraw or Reinstate a Player

Pairings remain unchanged. Manual results are preserved. Blank games from the effective round receive forfeits. If both players are withdrawn, a double forfeit is assigned.