In the simulation below, a cash player with a 4 bb/100 win rate and 30 buy-ins went broke in 2.3% of 20,000 simulated 1-million-hand careers. With 20 buy-ins the figure was 8.1%, and with 50 it was 0.23%. Tournament risk is much higher: with a 20% ROI and 100 buy-ins, 21.5% went broke. This is a model with assumptions, not a promise.
What is risk of ruin in poker?
Risk of ruin is the probability that a bankroll drops to zero before it can recover. It depends on three inputs: the player’s average profit, the volatility around that profit, and the bankroll size. A positive win rate does not remove ruin risk, because losing streaks can arrive before the long-run edge shows up. Bankroll is measured here in buy-ins: one buy-in is 100 big blinds in cash and one tournament entry (including fee) in tournaments.
How was the simulation built?
The study uses Monte Carlo simulation, which repeats a random process many times and counts outcomes. Each scenario simulated 20,000 players with a fixed random seed (20261020), using Python 3 and NumPy. A player is ruined if bankroll touches zero at any checkpoint. All inputs below are assumptions chosen for this guide, not measurements of real players.
- Cash model: results arrive in blocks of 100 hands and follow a normal distribution. Standard deviation is 80 bb per 100 hands. Two win rates were tested: 4 and 2 bb/100. Horizon: 10,000 blocks (1,000,000 hands), plus the first 1,000 blocks (100,000 hands) as a shorter check. Bankrolls: 20, 30, 50, and 100 buy-ins of 100 bb.
- Tournament model: every entry costs one buy-in. The player cashes 15% of the time. When cashing, the payout in buy-ins follows a lognormal distribution with sigma 1.2, scaled so the average return gives the target ROI. Two ROI levels were tested: 20% and 10%. The resulting standard deviation per tournament was 6.25 buy-ins (ROI 20%) and 5.73 (ROI 10%), measured from the model. Horizon: 5,000 tournaments, plus the first 1,000 as a shorter check. Bankrolls: 50, 100, 200, and 300 buy-ins.
- Not modeled: rakeback and bonuses, stake changes, tilt, game selection, taxes, withdrawals, and changing skill. Every result is independent of the previous one.
What does the simulation show for cash games?
Risk falls steeply as bankroll rises. At a 4 bb/100 win rate, going from 20 to 50 buy-ins cut ruin risk from 8.1% to 0.23%. The closed-form formula RoR = exp(−2 × win rate × bankroll ÷ variance) is shown alongside as a cross-check, and the two agree closely. The 95% margin on simulated values is about ±0.4 points at 8% and ±0.07 points at 0.23%.
| Bankroll | 4 bb/100: simulated, 1M hands | 4 bb/100: formula | 4 bb/100: simulated, 100k hands | 2 bb/100: simulated, 1M hands | 2 bb/100: formula |
|---|---|---|---|---|---|
| 20 buy-ins | 8.1% | 8.2% | 7.2% | 27.8% | 28.7% |
| 30 buy-ins | 2.3% | 2.4% | 1.8% | 14.7% | 15.3% |
| 50 buy-ins | 0.23% | 0.19% | 0.10% | 4.3% | 4.4% |
| 100 buy-ins | 0 of 20,000 | 0.0004% | 0 of 20,000 | 0.20% | 0.19% |
Own Monte Carlo simulation, 20,000 players per scenario, SD 80 bb/100. Win rates are assumptions.
The win rate matters as much as the bankroll. Halving the win rate to 2 bb/100 raised ruin risk at 50 buy-ins from 0.23% to 4.3%. The median simulated player at 4 bb/100 finished 1,000,000 hands about 39,955 bb ahead, and about 19,828 bb at 2 bb/100. The shorter 100,000-hand horizon always shows less risk than the one-million-hand horizon, because the player has less time to hit a bad stretch.
What does the simulation show for tournaments?
Tournament variance is much larger. A single entry loses one buy-in 85% of the time and occasionally returns a very large payout, so downswings last longer. At ROI 20%, a 100-buy-in bankroll was ruined in 21.5% of 5,000-tournament runs, and 300 buy-ins brought that down to 0.95%.
| Bankroll | ROI 20%: 5,000 events | ROI 20%: first 1,000 | ROI 10%: 5,000 events | ROI 10%: first 1,000 |
|---|---|---|---|---|
| 50 buy-ins | 46.2% | 42.8% | 66.7% | 58.1% |
| 100 buy-ins | 21.5% | 17.6% | 44.2% | 30.9% |
| 200 buy-ins | 4.9% | 2.3% | 19.0% | 6.0% |
| 300 buy-ins | 0.95% | 0.15% | 7.9% | 0.6% |
Own Monte Carlo simulation, 20,000 players per scenario, ITM 15%, lognormal payouts (sigma 1.2). 95% margin of error: about ±0.7 points at the highest values and ±0.1 to ±0.4 at the lowest.
Even a 20% ROI player with 50 buy-ins was ruined in nearly half of the simulated runs. At a 10% ROI, a 200-buy-in bankroll still carried a 19.0% chance of ruin over 5,000 events. Over a shorter 1,000-event horizon the same bankrolls look safer, because fewer events leave less time for a long losing run.
How should cash and tournament results be compared?
The two tables use different units, so the comparison is about shape rather than exact equivalence. A cash player with 50 buy-ins and a 4 bb/100 win rate faced a 0.23% ruin chance over one million hands. A tournament player with 50 buy-ins and a 20% ROI faced 46.2% over 5,000 events. The measured standard deviation of 6.25 buy-ins per tournament entry explains most of the gap: one result swings the bankroll far more than one cash-game session does. Cash-game buy-ins are also a poor unit for the comparison, since a cash player can lose several buy-ins in a session while tournament losses are capped at one entry.
What are the limits of this model?
- Inputs are guesses. Real win rates and ROI are uncertain. Lower true edges raise every number in the tables, as the 2 bb/100 and 10% ROI columns show.
- Normal and lognormal shapes are simplifications. Real tournament payout structures differ by field size and event.
- Checkpoint monitoring. Cash results are checked after each 100-hand block, so ruin that happens and recovers inside a block is missed. This slightly understates risk.
- Players change behavior. The model never moves down in stakes or stops playing, which real players often do.
The results are an educational illustration. They are not advice to wager a specific amount.
How can readers reproduce the numbers?
The condensed code below reproduces the method. Parameters are listed in the comments, and seed 20261020 gives repeatable output.
import numpy as np, math
rng = np.random.default_rng(20261020)
N = 20_000 # simulated players per scenario # CASH: bb results per 100-hand block ~ Normal(winrate, sd)
def cash(winrate, sd=80, blocks=10_000): ruined = {B: 0 for B in (2000, 3000, 5000, 10000)} # bankroll in bb for _ in range(N // 2000): x = rng.normal(winrate, sd, size=(2000, blocks)) low = np.cumsum(x, axis=1).min(axis=1) for B in ruined: ruined[B] += (low <= -B).sum() return {B: n / N for B, n in ruined.items()} # MTT: lose 1 buy-in unless in the money (15%);
# payout in buy-ins ~ LogNormal(mu, 1.2), mean tuned to the ROI
def mtt(roi, itm=0.15, sigma=1.2, T=5000): mu = math.log((1 + roi) / itm) - sigma**2 / 2 ruined = {B: 0 for B in (50, 100, 200, 300)} for _ in range(N // 1000): paid = rng.random((1000, T)) < itm pay = np.exp(rng.normal(mu, sigma, (1000, T))) * paid low = np.cumsum(pay - 1, axis=1).min(axis=1) for B in ruined: ruined[B] += (low <= -B).sum() return {B: n / N for B, n in ruined.items()} # Closed-form check for cash: RoR = exp(-2 * winrate * B / sd**2)
For related reading, see the poker strategy section and the tournament coverage. Large-field events, such as those covered in the WSOP section, fall at the high-variance end of the tournament model above. Bonus and rakeback terms vary by room (see poker bonuses) and are not included in these results.
Where can players find help with gambling problems?
Poker involves financial risk and is not suitable for everyone. Players who feel gambling is becoming a problem can call or text the National Problem Gambling Helpline at 1-800-MY-RESET (1-800-697-3738); the National Council on Problem Gambling (NCPG) also lists 1-800-522-4700 as still active. More information is at ncpgambling.org. Only wager money that can be lost. Players must be of legal age in their state.
Verified on October 20, 2026.
The post Poker Bankroll Management: What a Simulation Shows appeared first on Poker News Daily.





