Glicko-2 rather than Elo, because Elo has no idea how sure it is. A brand new player and a settled 1500 look identical to Elo; Glicko-2 knows one of them is a guess. That difference is the entire safeguard — you cannot protect a beginner from a shark if your rating system cannot tell you which one is which.
Ten stars, and an eleventh state that matters more than any of them: provisional. Stars are not shown at all until the system is confident enough to mean them.
Who a given player can legally be matched against, right now, and how that widens while they wait. The band tightens as the stake rises.
A population of players with fixed true skill, played out. If the rating does not track the truth, the guard rails are protecting the wrong people.
| Rule | Reason |
|---|---|
| Glicko-2, not Elo | Elo cannot express doubt. A new account and a veteran both sit at 1500 and Elo will happily pair them with a 2100. Glicko-2 carries a deviation, and every guard below is written in terms of it |
| Provisional until RD < 110 | Roughly the first eight to ten frames. Stars are hidden and the player is held to free play and the lowest stake tier. You cannot lose real money to a shark in your first hour, because the shark cannot reach you |
| Band tightens with stake | 400 points at free play, 120 at the top tier. A mismatch at 0.01 LTC is a lesson; the same mismatch at 1 LTC is predation, and the system should not be able to arrange it |
| Band widens with waiting | 8 points per second, up to a hard ceiling that never moves. A thin queue is allowed to make you wait, never to make you an easy mark |
| Hard star-gap cap | Three stars at any money stake, four at free play. This sits on top of the rating band so that a wide band near a boundary still cannot bridge the ladder |
| Uncertainty counts against pairing | The gap is measured against the pair's combined deviation. Two players who are each unsure get more room; one certain shark and one unknown beginner get less |
The failure this prevents is specific, and it is the one that kills wagering platforms. A strong player makes a second account, loses the deviation quickly, and farms beginners at real stakes. Every rule above is aimed at that loop: a new account cannot reach the stakes where farming pays, cannot be reached by a high star while provisional, and cannot be bridged to by a widening band. None of it stops someone being better than you — that is the game. It stops the platform arranging it.
What this is not. It is not anti-cheat and it is not collusion detection. Two accounts controlled by one person deliberately dumping frames to move LTC between them is a different problem with a different solution, and the ratings here would look entirely normal while it happened. Worth naming now so it does not get assumed away later.
| Rating period | One frame. Glicko-2 was designed for periods of ten to fifteen, so per-frame updates move faster than the paper intends — deliberate, since a player will not wait a week to be rated |
| Defaults | r 1500, RD 350, volatility 0.06, system constant τ 0.5 |
| Inactivity | Deviation grows back with time away, capped at 350. A player returning after six months is uncertain again, which is correct and also closes a dormancy exploit |
| Star thresholds | Fixed rating cuts, not percentiles. Percentile stars mean your star can fall while you improve, which players read as the platform cheating them |
| Where it runs | Rating updates belong on the Worker alongside settlement. The client may display a rating; it must never compute one |