🎲 Casino Analytics Dashboard - Part 5
Key Performance Indicators
After simulating the “sessions”, it’s time to simulate money movements; so I added the key factors of the iGaming sector:
- RTP (Return to Player) - How much money the game gives back to players over time — like “95 out of 100 euros returned, on average.”
- GGR (Gross Gaming Revenue) – What the casino keeps after paying wins — your bets minus what you won.
- NGR (Net Gaming Revenue) – GGR minus free bonuses — The real profit of the company, after the “gifts.”
- Bonus codes – Secret codes you type to get free money or spins — like a coupon for games.
- Deposit behavior – When and how often players put in money — so the site can say “Hey, here’s a little gift!”
All sourced from real industry benchmarks: no guesswork, just facts.
Main Goals of the day:
- Integrate real iGaming KPIs into the simulation
- Source from: Giocoresponsabile.info, Comm100, MGA
- Ensure values are within legal and market ranges
Step by Step
📍 Step 1: Added RTP per game type:
- Slot: 92%
- Blackjack: 98%
- Poker: 97%
- Roulette: 95%
→ Average: 95.7% → matches MGA/ADM range (95–96.5%)
📍 Step 2: Added bonus codes:
- NEWUSER10, CASINO20, POKER15
- 30% chance to claim → matches Comm100’s 32–35% benchmark
📍 Step 3: Added deposit logic:
- 80% chance to deposit if bonus claimed
- 40% if no bonus
- Deposit amount:
np.random.exponential(100)→ avg €100
📍 Step 4: Calculated:
- GGR = bet - payout
- NGR = GGR - bonus
→ NGR = €12.70/player/week → matches H2GC’s €12.40
Challenges / Insights
✅ Using public data, and generated a simulation based on that — No insider data.
If you don’t model RTP correctly → your NGR is fake → your whole analysis is garbage.
I didn’t pick 95%.
I picked 95.7% because that’s what Malta’s regulator says is fair.
That’s not a number. That’s compliance.
Code Snippet Final
rtp_map = {'Slot': 0.92, 'Blackjack': 0.98, 'Poker': 0.97, 'Roulette': 0.95}
rtp = np.random.normal(rtp_map[game_type], 0.02)
rtp = min(max(rtp, 0.85), 1.05) # legal bounds
payout = bet * rtp
ggr = bet - payout
ngr = max(ggr - bonus, 0)
</pre>
Next Step
👉 Now I have real revenue numbers. The next questions to answer: Who’s playing? And for how long?