[ methodology · seeded PRNG · repriced 2026-09-30 ]

How we compute bonus EV.

Every number on the site is a Monte Carlo simulation over parsed wagering terms — never an opinion, never an editorial nudge. This is the full model: what we measure, what we deliberately don\'t, and where the biases sit. Verdict tracks below map the whole page onto the same CLAIM / NEUTRAL / SKIP framing you see on every bonus row.

1,200
MC runs · hub tables
3,000
MC runs · detail pages
5
volatility tiers · σ calibrated
seeded
PRNG deterministic

What we do compute

[04] CLAIM

The four measurements every number on the site is derived from. Verifiable, versioned, deterministic under a seeded PRNG.

Bonus term parsing
CLAIM

Every tracked bonus is broken into its complete structure: match percent and cap, wagering multiplier and scope (B vs D+B), max bet, expiry, max cashout, contribution table, restricted games, restricted geos, min deposit. Ambiguous T&Cs default to the operator-worst interpretation and are flagged for follow-up.

Monte Carlo simulation
CLAIM

The full wagering path is played as a discrete random walk against a €100 baseline on 96.5% RTP medium-volatility slots. 1,200 runs on hub tables, 3,000 on bonus detail pages. Same seed, same output — the ranking is stable across page loads.

Expected value + clearance
CLAIM

From the simulation come EV (mean cashout minus deposit), clearance probability (share of runs that survive wagering), median cashout, and 5th/95th percentile tails. These are the four numbers the verdict thresholds read from.

Verdict assignment
CLAIM

CLAIM / NEUTRAL / SKIP is a pure function of EV and clearance probability. No editorial override, no operator input. When terms change, the next build reprices and can flip a verdict — that's the whole point of the model.

Limitations we accept

[04] NEUTRAL

Places the model deliberately trades fidelity for reproducibility. Biases are small on average outcomes; disclosed here so nobody has to reverse-engineer them.

Normal-distribution shortcut
NEUTRAL

Real slot returns have fatter tails than a normal — occasional huge wins concentrated at low probability. The model under-represents that tail; bias is small on mean EV, material on p95 upside estimates.

Continuous bankroll
NEUTRAL

Bankroll is modelled as continuous; a real bankroll rounds to bet-size increments. For €1 bets on a €100 bankroll this is negligible; for very small bankrolls or very large bets a small bias appears.

Static per-spin RTP
NEUTRAL

Real slots have per-round jackpot contribution and buy-feature triggers that make RTP non-stationary. We model this as a fixed per-spin mean — accurate on average, blind to structural buy-feature economics.

No time cost
NEUTRAL

Longer wagering paths carry no penalty for the opportunity cost of your time. If time is money to you, weight low-expiry / low-wager offers more heavily than pure EV suggests.

What we deliberately exclude

[04] SKIP

Real factors in the total value of a casino relationship, kept out of the numeric ranking on purpose. They belong in the editorial commentary on each review, not the model — reproducibility beats coverage.

Loyalty tier accumulation
SKIP

VIP progression, comp points, tier-based reload rebates. Real cash back for high-volume players but path-dependent and operator-specific — impossible to price without an account profile.

VIP host outreach
SKIP

Manual bonus grants, personalised reload offers, custom cashback tiers. Meaningful for whales, opaque by design. Not in the public bonus stack, so not in the model.

Withdrawal-delay cost
SKIP

A 24-hour Bitcoin cashout and a 5-day Visa payout have the same EV in the model but very different real-world value. Payment-speed detail lives on the /payments hub and per-casino cashier notes.

KYC dispute risk
SKIP

The probability an operator freezes a high-value withdrawal for identity review. Real, especially at aggressive-marketing Tier-2/3 brands. Priced via public complaint history in the operator safety score, not the bonus EV.

[ model · random walk ]

The simulator, in one equation.

For each simulated attempt, the bankroll is modelled as a discrete random walk over the required turnover. The walk terminates when wagering completes or the bankroll drops below the minimum bet size.

bankroll(t+1) = bankroll(t) + bet · (RTP − 1 + σ · Z)

Z is a standard normal draw, RTP is the return-to-player of the chosen clearing game (baseline 96.5%), and σ is the volatility-scaled per-spin standard-deviation coefficient. Terminal cashout is calibrated to how casinos actually settle:

[ σ calibration · five-tier volatility ]

Volatility coefficients.

Per-spin standard-deviation coefficients derived from a market survey of published slot titles from NetEnt, Play\'n GO, Pragmatic Play and Nolimit City (2022–2025). Individual titles vary by roughly ±30% around the tier centre.

Volatility tier σ (bet-multiples/spin) Behaviour
Low 1.6 Rare dry spells, frequent small wins. Fastest wagering clearance; smallest tail upside.
Med-low 2.5 The overlooked bracket — high-RTP slots often live here. Efficient for bonus clearing.
Medium 4.0 Baseline for hub tables. Balances clearance probability against a working upside tail.
Med-high 6.5 Longer dry spells, bigger swings. Push for real-money play, poor for bonus clearing.
High 10.0 Nolimit / high-vol Pragmatic territory. Tail-heavy — median EV under baseline drifts negative.
[ baseline · cross-comparability ]

The single baseline every table shares.

Homepage, /bonuses, and every casino review use the same parameter set so EVs are directly comparable across the whole catalogue.

deposit€100
gameslots · 100% contribution
RTP96.5%
volatilitymedium · σ 4.0
avg bet€1
MC runs1,200 hub · 3,000 detail
PRNGmulberry32 · seeded from bonus id
[ related routes ]

Methodology · FAQ

Why 1,200 runs on hubs but 3,000 on detail pages?

1,200 runs converge the mean EV to within about ±€0.5 at €100 baseline — plenty for ranking. On a bonus detail page you also see the 5th and 95th percentile tails, which need more runs to stabilise; 3,000 gets those percentiles within ±€1. Anything more is diminishing returns at our build times.

Is the PRNG really deterministic across page loads?

Yes. We use mulberry32 seeded from the bonus id, so every simulation is fully deterministic: the same inputs always produce byte-identical outputs. That is why the ranking never reshuffles on refresh, and why every EV figure is reproducible from the parameters printed on each bonus datasheet.

Why does the model use a Normal distribution for per-spin returns?

Because it's the closed-form distribution the Monte Carlo can walk in constant time per spin. Real slot returns are heavier-tailed than a Normal — see the volatility entry. The bias sits in the 95th-percentile upside estimate, not the mean EV that drives the ranking.

How do the five volatility tiers get their σ coefficients?

From a market survey of published slot titles from NetEnt, Play'n GO, Pragmatic Play and Nolimit City between 2022 and 2025. Individual titles vary by roughly ±30% around the tier centre; we round to five buckets because a finer grid changes ranking by less than the Monte Carlo noise. Full breakdown in the table above and in the volatility guide.

Why the €100 baseline?

It's the modal welcome-bonus qualifying deposit across the tracked operator set. Every EV in the model scales roughly linearly with deposit inside the max-cap range, so €100 is a legible baseline that most bonuses clear before hitting their cashout cap. The Portfolio Builder re-runs the whole simulation on your own deposit if you want the number for €50 or €500.

What happens to the model when an operator changes bonus terms?

The bonus record is updated at the next build. Every simulation re-runs against the new structure, EV changes, and the verdict can flip. The repriced stamp on tables and reviews is the date of that last build. Old verdicts are versioned in the changelog so you can see when a CLAIM turned SKIP.

How does bonus EV combine with the operator safety score?

They don't combine into one headline number by design. The bonus EV is the bonus's number; the operator score is the operator's. Two SKIP-EV bonuses on a Tier-1 licensed brand behave nothing like two SKIP-EV bonuses on an Anjouan-only brand, and the site keeps them separable so you can weight them yourself. Cross the two via the testing protocol.

What can I read the source of?

The simulator lives in src/lib/portfolio.ts. The same TypeScript executes at build time (SSR ranking) and in the browser (Portfolio Builder), so results are identical. Verdict thresholds are in src/lib/verdict.ts. Bonus term schemas are in src/content/bonuses/.

18+. Model parameters and volatility calibrations reflect published operator and provider data at build time (September 2026); real per-title distributions vary. Reproducibility is deliberate — every EV number here is regenerable from src/lib/portfolio.ts at the same seed. Feedback and disputes to contact. Problem-gambling help: BeGambleAware · Gambling Therapy.