Methodology

This page documents every formula, assumption, and simulation parameter this site uses to turn a scenario into a number. Where a result is a closed-form calculation it is stated as such; where it comes from simulation, the margin of error that comes with it is stated too. Nothing on this page is a claim about what any strategy does for you — it is a description of how the arithmetic works.

What is exact and what is estimated

FigureHow it is computed
Expected value, fair payout, break-even win chanceClosed form. Exact.
Streak probabilities, longest-streak distributionClosed form. Exact.
Flat-betting ending bankroll and ruinDynamic programming. Exact when the payout allows it.
Anything path dependentMonte Carlo. Estimated, with a stated margin of error.

“Path dependent” means anything whose value depends on the order the rounds happened in, not just how many of each outcome occurred — a Martingale progression is the main example, because what it bets next depends on what it just did. Flat betting is not path dependent, which is why it can be solved directly rather than simulated.

Expected value

For a scenario with outcomes i, each with probability pᵢ and payout multiplier mᵢ (a win pays +m per unit staked, a loss pays −1, a push pays 0), the expected value per unit staked is:

EV per unit staked = Σ pᵢ · mᵢ

A negative EV means the scenario favours the house on average; it says nothing about any individual round. From the same probabilities, two further quantities follow directly, for the win/loss/push shape every scenario on this site uses — one win outcome, one full loss, and an optional push. The fair payout is the multiplier that would make EV exactly zero:

Fair payout = p_loss / p_win

And, running the same relationship the other way, the break-even win chance is the win probability that would make a given payout m fair:

Break-even win chance = (1 − p_push) / (m + 1)

Comparing the actual win probability to this figure is what tells you whether a scenario is favourable, fair, or unfavourable — the payout alone does not.

Streaks

Streak figures are measured over resolved rounds only: pushes are skipped, so a win, a push, and another win count as a two-round winning streak, not three rounds with a break in the middle. Let q be the probability that a resolved round is a loss (renormalised so that wins and losses sum to 1 once pushes are removed). Then the probability that the next k resolved rounds are all losses is:

P(next k lose) = q^k

That is a different question from asking whether a losing streak of length k shows up anywhere in the next n rounds. The probability of at least one such run is computed by a forward dynamic program over the current trailing run length, and it is much larger than q^k for any n greater than k — there are many more places for a run to start. Conflating the two is the single easiest way to misread a streak figure, so this site always reports them separately and labels which is which.

The exact dynamic program

Flat betting — the same stake every round, regardless of outcome — is a random walk on a lattice of bankroll values with an absorbing barrier at the point where the bankroll can no longer cover the bet. Because flat betting never changes its bet size in response to what happened, its distribution of outcomes can be solved directly rather than sampled, and solving it is both exact and faster than simulating it.

For a payout of p/q in lowest terms, the lattice unit is effectiveBet / q, where effectiveBet is max(baseBet, tableMin) — the bet a flat bettor actually places once a table minimum is accounted for, and so the smallest step size on which every possible bankroll value after any number of rounds still lands exactly on a lattice point. The state space is banded around the walk’s drift at ±7 standard deviations; the mass beyond that band is discarded, and it is kept under 1 in a billion (1e-9) of the total. Six standard deviations was tried first and rejected: at six the discarded tail is itself around 1e-9, which is the same order as the tolerance the truncation is supposed to satisfy, so seven is used to keep real headroom between the two.

The dynamic program is exact, but it is not attempted unconditionally — it declines, in full, rather than approximating, on eight conditions, and the list below is exhaustive because this page exists so a reader can find out why an “exact” badge did or did not appear:

Each of these is a decline, not an approximation — the dynamic program either returns the exact distribution or it returns nothing, and every decline hands the question to Monte Carlo instead, which answers with a visible margin of error rather than a silent approximation. This is the mechanism that makes the “exact” badge on this site trustworthy: it only ever appears on a result that was actually solved exactly, never on one that came close.

Monte Carlo

Anything path dependent — most notably a Martingale progression, and any flat-betting configuration the dynamic program declines — is estimated by simulation instead of solved directly. Each simulated session draws its outcomes from a seeded pseudo-random generator (mulberry32), chosen for being small, fast, and exactly reproducible across platforms. Session i within a run is seeded with seed + i, so the outcome of any individual session never depends on which batch it happened to be simulated in or how many sessions ran before it.

A run starts with a pilot batch of 1,000 sessions, which is used to fix the bounds and bin widths of the histogram before the rest of the run streams in — so the chart does not rescale or jump as more sessions complete. Runs continue streaming sessions until either 50,000 sessions have completed or 2 seconds of wall-clock time have elapsed, whichever comes first.

Every reported proportion — probability of ruin, probability of profit, and the like — carries a margin of error, and it is reported as one: 1.96 · √(0.25 / n), the 95% half-width of the estimate at its worst case (p = 0.5), where n is the number of completed sessions. This is a half-width, not a standard error — it is already the full width of the 95% interval on one side of the estimate, and it is not meant to be multiplied by 1.96 again. Displayed precision never exceeds what that margin of error supports: a proportion is never shown to more decimal places than its margin of error justifies.

Reproducibility

The default seed is 1. Every parameter of a scenario — including the seed — is carried in the page URL, so the same URL produces the same sequence of simulated sessions and the same reported numbers for everyone who opens it. Changing the seed changes which specific sessions were simulated, but at the sample sizes this site runs (a 1,000-session pilot, up to 50,000 sessions total), the seed does not affect the conclusions the numbers support — only their exact digits within the stated margin of error.

Strategy definitions

Martingale doubles the bet after a loss, resets it to the base bet after a win, and leaves it unchanged after a push. The bet is never silently reduced or capped by the strategy itself; if the doubled bet cannot be placed — because it exceeds the remaining bankroll or a table maximum — that is reported as a strategy failure rather than quietly adjusted down to something that fits.

Bankroll ruin versus strategy failure

These are different events, and this site reports them separately. Bankroll ruin means the bankroll has fallen below what is needed to place the smallest bet the table allows — there is no bet, of any size, that could still be placed. Strategy failure means the bet the strategy calls for next exceeds the remaining bankroll or the table maximum, while money still remains — the strategy has run into a limit that a different, smaller bet could have avoided.

A worked case makes the distinction concrete: a session starts with a $1,000 bankroll and a $1 base bet, using Martingale, and loses nine rounds in a row. The bets on those nine rounds are $1, $2, $4, $8, $16, $32, $64, $128, and $256 — summing to $511 lost. That leaves $489 remaining. The tenth bet Martingale calls for is $512, which exceeds the $489 available. That is a strategy failure: the required bet is larger than the bankroll can cover, even though the bankroll itself is not zero and could, at a smaller stake, still play on.

Push handling

A push — most notably a tie in baccarat — leaves the bankroll unchanged: the stake is returned rather than won or lost. It does not advance or reset a betting progression, so a Martingale bet stays exactly where it was through a push. It does not break a winning or losing streak, so a win, a push, and another win still count as a continuous two-round winning streak. And a push is still a wager that was placed, so its stake is included in total amount wagered even though it changed nothing.

Game assumptions

The baccarat figures used on this site — Banker 0.458597, Player 0.446247, Tie 0.095156 — are the standard probabilities for an 8-deck shoe under the usual drawing rules, obtained by exhaustive combinatorial enumeration of the shoe rather than by simulation; the same figures appear across published baccarat odds references. Ties push both the Banker and Player bets. The Banker bet pays 0.95 per unit staked, reflecting the customary 5% commission the house charges on winning Banker bets.

The roulette figures are arithmetic rather than cited estimates. A European wheel has 37 equally likely pockets (0 to 36): red covers 18 of them at 1:1, a dozen covers 12 at 2:1, and a single number covers 1 at 35:1 — three very different variances sharing the same 1/37 edge, which is the arithmetic of a single-zero wheel. An American wheel adds a 00 pocket, making 38, so red there wins 18/38 and the edge doubles to 2/38.

Craps pass line wins 244 of the 495 equally weighted resolutions of the two-dice sequence — the classical enumeration — and pays 1:1, for an edge of 7/495 (about 1.41%). Sic bo “small” covers three-dice sums of 4 through 10: 107 of the 216 outcomes land in that range, but the two in-range triples (2-2-2 and 3-3-3) lose by rule, leaving 105 winners at 1:1 — an edge of 6/216 (about 2.78%).

Back to the experiment