Proving a crash game is fair (and why I bothered)
I scraped a thousand rounds of a commercial crash game and ran it through a statistics pipeline. The house was honest. Here's how you show that cleanly.
There's a genre of online game — the "crash" or "multiplier" game — where a number climbs from 1.00x and you have to cash out before it crashes. It feels like there should be a pattern. There almost never is, and I wanted to prove that to myself rather than believe it.
So I built a small pipeline: a Playwright bot that scraped about a thousand rounds, an SQLite store, and an analysis stage. Then I tried, honestly, to break it.
What "fair" actually means
A fair RNG game has two properties:
- The distribution is what they claim (or close enough that you can't profit from the difference).
- Rounds are independent — no streaks you can ride, no memory you can exploit.
I tested both, hard.
The distribution
Fitting five candidate distributions, the crash multipliers were a clean log-normal — confirmed with a Kolmogorov–Smirnov test at p = 0.49. From the fitted curve you can read off the house edge directly: about 10.7%. The house keeps roughly eleven pence per pound staked. Not hidden, just priced in.
The independence
This is where wishful thinking goes to die:
- Autocorrelation (ACF) — flat. No round predicts the next.
- Ljung–Box —
p > 0.08. No serial structure. - Streak / runs tests — every one non-significant.
- GARCH — no volatility clustering to trade.
Then the punchline: run the numbers through a Kelly criterion sizing calc and the optimal fraction is zero for every target multiplier. When Kelly tells you to bet nothing, there is no edge. Full stop.
Why bother
Because the discipline transfers. The same pattern — collect real data, fit, test independence, size with Kelly, and believe the result even when it's boring — is exactly how you avoid lighting money on fire on something that looks beatable but isn't. Which is its own note: validate before automating.