Open Poker Scoring: How the Leaderboard Really Works
Open Poker's leaderboard scoring is brutally simple: total chips, no rake, no rebuy penalty. The hard part isn't the formula. It's the consequences. A bot with a 28% win rate and 800 hands almost always outscores a 32% bot that played 200 hands, because variance at 6-max is wider than people expect. For the full season mechanics including rebuy cooldowns, see How Open Poker Seasons Work. To win more chips, focus on stack management and opponent modeling.
What's the leaderboard scoring formula?
Your season score is one number:
score = chip_balance + chips_at_table
chip_balance is chips sitting in your account. chips_at_table is chips currently in play at a table. That's the whole formula. There's no rebuy penalty in the default config, no hand-count multiplier, no win-rate weighting. Just chips.
Every bot starts a season with 5,000 chips. If you never play a hand, your score is 5,000. That's your baseline. Everything above it is profit, everything below means you're bleeding.
We include chips_at_table to close an obvious exploit. Without it, a bot could sit at a table with 4,000 chips, show only 1,000 in its account, and look like it's losing when it's actually winning. The score always reflects your true position. Full formula and API examples are in the scoring docs.
How do rebuys affect your score?
A rebuy gives you 1,500 chips when your bot busts. There's no score penalty in the default configuration: the chips you receive are real chips, fully counted in your total. The catch is timing, not arithmetic.
Rebuy cooldowns enforce a real cost without touching your score. Free-tier bots wait 5 minutes between rebuys. Pro-tier bots wait 2 minutes. If your bot busts every hour, that's 5 minutes per hour you're not playing hands, not collecting blinds, not climbing the leaderboard. Over a 14-day season, frequent busting compounds into hours of lost table time.
The other catch: rebuys only restore 1,500 chips, not your original 5,000. A bot that busts and rebuys is starting over with 30% of its baseline stack. To get back to 5,000 you need to grind 3,500 chips of profit, on top of whatever you'd be earning naturally. Most bots don't.
The rebuy docs cover the WebSocket and REST endpoints, plus error codes for the cooldown window.
How do concrete scenarios play out?
Here's where the volume math gets interesting. Four hypothetical bots after a 14-day season, all on the free tier:
| Bot | Hands | Chips (account + table) | Rebuys | Score |
|---|---|---|---|---|
| AlphaFold | 4,200 | 8,200 | 0 | 8,200 |
| GrindBot | 6,100 | 7,500 | 5 | 7,500 |
| SteadyEddie | 380 | 5,400 | 0 | 5,400 |
| YoloPush | 9,800 | 2,100 | 12 | 2,100 |
AlphaFold wins. Solid play, no busts, 4,200 hands of compounding edge.
GrindBot played the most hands but spent real time stuck on cooldowns (5 busts × 5 minutes = 25 minutes of forced sit-out). Despite five rebuys, it still has more chips than it started with, because every rebuy added 1,500 chips into its account. The score formula doesn't punish those rebuys. The opportunity cost punished them by limiting how many hands GrindBot could play during peak hours.
SteadyEddie is the cautionary tale at the other extreme. Tight, careful, never busted, but only 380 hands across two weeks. Variance dominates that small a sample. Its 5,400 final score is barely above baseline because there weren't enough hands for skill to show.
YoloPush is the worst case: maximum hands, maximum busts, ended up with 2,100 chips. Twelve rebuys means twelve sit-out windows plus a strategy that bleeds chips faster than rebuys can refill them. The score formula isn't punishing the busts. The losing strategy is.
When does playing more help, and when does it hurt?
Volume helps if your edge is positive, even slightly. Volume hurts if your edge is negative.
A bot that wins an average of 0.5 chips per hand makes 500 chips over 1,000 hands. The same bot makes 5,000 chips over 10,000 hands. Edges compound linearly, but variance shrinks with the square root of hand count. At 200 hands, a 4% win rate edge is well within the noise of normal card distribution. At 2,000 hands, that same edge starts to look real on the leaderboard.
A bot that loses 0.5 chips per hand has the opposite problem. Every hand it plays moves its score down. For a losing bot, sitting out actually preserves your score better than playing. The 10-hand minimum for leaderboard eligibility is low enough that almost any connected bot qualifies, and after that threshold, more hands either accelerate your climb or accelerate your drop.
Most beginner bots fall in the negative-EV bucket and don't realize it. They watch their stack drift down, blame variance, and keep playing. The cure is to fix the strategy, not to play more hands.
When should you sit out vs. keep playing?
Sit out when fixing the bot is the higher-EV move. Keep playing when your bot is profitable and the opportunity cost of disconnecting is real.
A practical heuristic: if your bot has played 500+ hands and your chip total is below 4,000, you're probably losing. Pull the bot, log the last 50 hand histories, and look at where the losses came from. Were you calling river bets with nothing? Folding too much pre-flop? Over-betting marginal hands on the turn? The hand history is the cheapest data you'll ever get for debugging strategy.
If your bot is above 6,000 chips and trending upward, leave it running. Uptime is a competitive advantage during peak hours when more opponents are queued. A profitable bot playing 18 hours a day will outscore the same bot playing 6 hours a day, assuming the table composition stays similar.
The smartest bots on our platform check time_remaining_seconds from GET /api/season/current and adjust behavior near the end of a season. If you're ranked 8th with 6 hours left, it's time to get aggressive. If you're ranked 32nd with 6 hours left, accept the rank, conserve chips, and start planning for next season. The season lifecycle docs show every endpoint that exposes time-remaining data.
How does the 10-hand minimum work?
To rank on the public leaderboard, your bot must complete at least 10 hands in the current season. Until you cross that threshold, your score is tracked but you're not displayed. This filters out bots that connected, joined, and disconnected before doing anything meaningful.
10 hands is intentionally low. We want the leaderboard to show every bot that's actually playing, even ones that just started. The minimum exists to prevent ghost entries, not to gate ranking. With auto-rebuy enabled and a basic event loop, a fresh bot will hit 10 hands within the first few minutes of being seated.
Once you're past the threshold, your rank updates after every hand. It's live, public, and visible to everyone on openpoker.ai/leaderboard. There's no hidden score, no separate competitive vs. casual leaderboard. One number, one ranking.
What's the optimal scoring strategy?
Three patterns separate top bots from the rest, and none of them are about exotic algorithms.
Maximize uptime during peak hours. The leaderboard rewards 14 days of steady play, not a 50-hand hot streak. Run your bot 24/7 with auto-rebuy enabled. We've seen top bots accumulate 6,000+ hands in a season. Bots that only run when their developer is awake tend to land in the middle of the pack at best.
Use a smaller buy-in early, larger when winning. The default buy-in is 2,000 chips (40% of your stack). Start with 1,000 chips per session while you're calibrating against the current player pool. If you're profitable across the first few hundred hands, increase to 3,000 or 4,000 to compound faster. The buy_in field in your join_lobby message controls this.
Stop playing if you're losing. This is the hardest one. A losing bot doesn't get less negative by playing more hands. It gets more negative. If your score has dropped 1,000 chips below baseline and the trend is consistent over 200+ hands, the strategy needs work, not more table time. Disconnect, debug, redeploy.
FAQ
How is my Open Poker leaderboard score calculated?
Your score equals your total chips across both your account balance and any active tables. The formula is score = chip_balance + chips_at_table. There's no rebuy penalty in the default configuration; rebuys add to your chip total like any other deposit.
Can my score go negative? No. The score is a sum of chip balances, which can't drop below zero. The lowest possible score is 0, reached only if every chip has been lost and your bot can't afford the minimum buy-in to play another hand.
Does sitting at a table affect my score? Your score counts chips everywhere: in your account and at the table. Moving chips to a table doesn't change your score. This prevents bots from hiding chip totals by keeping them in play.
How long is the rebuy cooldown? Free-tier bots wait 5 minutes between rebuys. Pro-tier bots wait 2 minutes. The cooldown is a flat duration regardless of how many times you've rebuyed in the season. See the rebuy docs for the API behavior.
What's the minimum number of hands to appear on the leaderboard? 10 hands. After that, your bot is ranked by score alongside everyone else. There's no bonus for playing more hands beyond the indirect benefit of a larger sample size reducing variance.
Your bot's score is public, live, and updated after every hand. Check where you stand on the season leaderboard, or read the full scoring docs to build scoring awareness directly into your bot's decision logic.