← Back to Blog
Quantitative MarketingGamificationRetentionFinancial Engineering

Leaderboards That Do Not Drive Off 95% of Your Players

On a global leaderboard of 1,000 players with 10 prizes, 5% have a realistic shot at winning. Split the same field into brackets of 10 and it becomes 48.7%, with no change to the prize budget. Simulated across 4,000 seasons.

SPSantosh Paudel· July 26, 2026· 8 min read
Table of contents

Tournament theory has known since the 1980s that effort collapses when a competitor's probability of winning approaches zero. A player who cannot win does not try harder. They stop playing.

Most leaderboards are built as a single global ranking, which guarantees that outcome for almost everyone in the field.

The short answer

On a global leaderboard of 1,000 players where the top 10 win, only 5% of players have at least a 5% chance of winning. The median player's win probability is 0.05%. Split the same 1,000 players into 100 brackets of 10 with one winner each, keeping the prize count identical, and 48.7% of players clear that same 5% threshold. The median player's chance rises from 0.05% to 4.73%.

Why a global leaderboard is a churn mechanic

A leaderboard is a contest, and a contest allocates effort according to the marginal return on that effort. If you are ranked 640th and the prize goes to the top 10, no plausible amount of additional effort changes your outcome. The rational response is to disengage, and the leaderboard has spent every day since launch reminding you of that.

The design is a daily, personalised notification of futility delivered to the majority of your users. It is difficult to think of another product surface that would survive that description.

The simulation

Give 1,000 players a latent skill drawn from a standard normal. Each season, observed score is skill plus noise, so outcomes are neither pure skill nor pure luck. Run 4,000 seasons under two structures with identical prize counts.

import numpy as np

def leaderboard_sim(n_players=1000, noise=1.0, trials=4000,
                    global_winners=10, bracket_size=10, seed=42):
    rng = np.random.default_rng(seed)
    skill = np.sort(rng.normal(0, 1, n_players))

    wins_global = np.zeros(n_players)
    wins_bracket = np.zeros(n_players)
    n_brackets = n_players // bracket_size

    for _ in range(trials):
        score = skill + rng.normal(0, noise, n_players)
        top = np.argpartition(-score, global_winners)[:global_winners]
        wins_global[top] += 1

        score = skill + rng.normal(0, noise, n_players)
        order = rng.permutation(n_players)
        for b in range(n_brackets):
            idx = order[b * bracket_size:(b + 1) * bracket_size]
            wins_bracket[idx[np.argmax(score[idx])]] += 1

    return wins_global / trials, wins_bracket / trials


p_global, p_bracket = leaderboard_sim()

print(f"{'decile':>8} {'global':>10} {'bracketed':>12}")
for i in range(10):
    lo, hi = i * 100, (i + 1) * 100
    print(f"{i+1:>8} {p_global[lo:hi].mean():>10.4f} {p_bracket[lo:hi].mean():>12.4f}")

for label, p in (("global", p_global), ("bracketed", p_bracket)):
    print(f"{label:>10}: {(p >= 0.05).sum():>4}/1000 players above 5%, "
          f"median {np.median(p):.4f}")

Output:

  decile     global    bracketed
       1     0.0000       0.0019
       2     0.0000       0.0069
       3     0.0000       0.0147
       4     0.0001       0.0253
       5     0.0002       0.0389
       6     0.0006       0.0598
       7     0.0015       0.0884
       8     0.0039       0.1350
       9     0.0118       0.2140
      10     0.0817       0.4151
    global:   50/1000 players above 5%, median 0.0005
 bracketed:  487/1000 players above 5%, median 0.0473

Reading the deciles

On the global board, deciles 1 through 5 have win probabilities that round to zero. Half the field has no measurable chance across 4,000 simulated seasons. Decile 7, which is well above average, sits at 0.15%.

Bracketed, the bottom decile has a 0.19% chance, which is small but no longer zero. The median player sits at 4.73%. Decile 7 is at 8.84%, roughly a one-in-eleven shot at winning something, which is a live proposition rather than a rounding error.

The top decile drops from 8.17% to 41.51%, which looks like the strong players gained. They did, in the sense that a strong player now reliably wins their bracket. What actually happened is that the same number of prizes got distributed across a far wider set of plausible winners.

Prize budget is unchanged. Ten winners globally, 100 bracket winners, so if you want identical spend the bracket prizes are a tenth the size. Whether that trade is right depends on whether you are trying to create ten highly motivated players or five hundred moderately motivated ones.

Brackets are one option among several

Random bracketing is the simplest fix and it is what the simulation tests. Others work on the same principle of shortening the distance between a player and a plausible win.

DesignHow it shortens the distanceMain cost
Random bracketsField size drops from 1,000 to 10Winners are less impressive
Skill-matched bracketsOpponents are near your levelNeeds a rating system, and sandbagging
Relative-improvement rankingCompete against your own pastWeak players can win by starting low
Percentile tiersRewards for top 10% of each tierTier boundaries become gameable
Time-boxed seasonsEveryone resets to zeroLong-run progress feels erased

The one design that reliably fails is the permanent, global, all-time leaderboard. It maximises the number of players who can see, precisely, that they will never win, and it never resets.

What to measure if you already have one

You do not need a simulation to check your own board. Take last season's results and compute, per player, the probability they would have finished in a winning position given their observed score distribution across previous seasons. If more than half your active players are under 1%, the leaderboard is functioning as a disengagement surface for the majority of the people who see it.

Then check the correlation between leaderboard rank and subsequent churn among players outside the prize positions. In most implementations it is the wrong sign, and nobody has looked.

The general principle

Every competitive mechanic allocates motivation according to perceived win probability. That probability is computable before you ship, from nothing more than field size, prize count, and how much of your outcome is skill versus variance. A design that leaves the median player at 0.05% is not a motivational tool. It is a very efficient way of telling most of your users that this part of the product is not for them.

Loyalty tiers have a similar structural flaw, and it hides better. A tier threshold looks like a target the customer is chasing, and the incremental spend it generates is real and measurable. What almost nobody measures is what the perk costs on the other side of the line.

Free resource

Get the Promo & Bonus Economics Workbook

Every formula for pricing a promo before you launch it: expected value, wagering cost, breakage, breakeven conversion. Worked examples with real executed numbers.

No spam. Unsubscribe anytime.

Browse all free guides →

Want to implement this with guidance?

Santosh helps founders turn insights like this into real systems.

Promo Economics Audit

External Resources

Further Reading & Tools

Related Posts

01
9 min
Risk ManagementPromo Economics
TodayQuantitative Marketing

Value at Risk and Kill Switches for Live Promotions

A spend cap set at expected payout shuts down 46% of perfectly healthy campaigns. The right multiple is 1.52x. Sizing exposure limits and automated kill switches against a real payout distribution.

Read article
02
8 min
Incentive DesignBehavioral Economics
TodayQuantitative Marketing

The Line Between Motivating and Manipulating: An Incentive Design Ethics Test

Every mechanic in this series works because of a cognitive bias. That makes them powerful and makes some of them indefensible. A six-question test for which side of the line your design sits on, and what regulators have already acted against.

Read article
03
8 min
Price DiscriminationPricing
TodayQuantitative Marketing

Why Promo Codes Beat Sales: Price Discrimination in Practice

A blanket 20% discount earns $20,000 less than no discount at all. The same discount behind a code that only bargain hunters bother to find earns $64,000 more. The friction is the entire mechanism.

Read article