The systems sandbox

Martingale: the next win will fix it

The idea, in the seller’s words

The sales pitch: double after each loss and the next win recovers every loss plus a unit. It feels convincing because the losses look temporary, with recovery always just a win away.

The stake sequence

Illustration: 8 scheduled bets on a draw at decimal odds of 3.40, starting with 10 units. These are chosen example inputs, not historical results.

The same stake and bust rules as the historical replay are used. Once the next stake cannot be funded, the replay stops this bank and counts its unbet remainder as lost for ROI accounting only; the bettor still holds that money. The first blocked stake is shown but is not placed; later results cannot rescue this bank. This example adds no fresh bank.

Bet #ResultStakeBalanceBank status
1 Loss 1.00 9.00 Open
2 Loss 2.00 7.00 Open
3 Win 4.00 16.60 Open
4 Loss 1.00 15.60 Open
5 Loss 2.00 13.60 Open
6 Loss 4.00 9.60 Open
7 Loss 8.00 1.60 Cannot fund 16.00; the replay counts the 1.60 left as lost
8 Win 16.00 Required, not placed 1.60 Not placed: bank busted

Eight bets are not the long-run result; see the history table below.

Why it does not work

Staking does not change the price

If the price pays less than the true chance warrants, every unit staked loses money on average. Changing the stake cannot remove that margin. A realised ROI is history, not a measurement of the true expected return.

In the indexed Draw replay with 10 units, this system’s ROI was −18.73%. The matching flat comparison is below.

The bookmaker’s margin

The losses change shape

That recovery claim assumes an even-money payout and enough money to keep doubling. At other prices the recovery amount changes; at prices below 2.00 a win may not recover the losses. The bank can fail before the promised win.

A progression can trade many small recoveries for a rare, large bank failure. Repeating it keeps exposing the bank to that failure; a quiet stretch is not protection. A bust is a risk, not a prediction of when your next bank will fail.

For that same cell, 40,151 of 41,132 banks busted (97.61%). These are banks, not individual bets.

The bank and the bookmaker have limits

The bank is finite. Compare the indexed bank sizes below: more money can postpone a funding failure, but it also puts more money at risk. Bookmakers can cap or reject the required stake. Those bookmaker limits are not modelled here.

The worked example starts with 10 units; its balance column shows when this bank can no longer continue.

What the history says

Each cell shows ROI / bust share. All systems face the same eligible matches; stakes and the timing of fresh banks differ.

Historical rankings can differ: changing stakes changes the weight of each result. A positive cell selected from many combinations is an in-sample result, not evidence of a repeatable edge.

All prices

MarketBank unitsMartingaleFlat (baseline)
Draw10 −18.73% / 97.61% −4.04% / 70.94%
Draw25 −20.12% / 96.01% −3.79% / 41.72%
Draw50 −19.65% / 94.30% −3.71% / 16.16%
Draw100 −19.09% / 91.94% −3.68% / 2.21%
Draw250 −17.98% / 87.61% −3.67% / 0.00%
Draw1,000 −19.70% / 79.31% −3.67% / 0.00%
Team wins (home or away)10 −19.61% / 96.59% −4.87% / 69.89%
Team wins (home or away)25 −19.55% / 93.95% −4.61% / 37.78%
Team wins (home or away)50 −17.82% / 90.84% −4.53% / 11.81%
Team wins (home or away)100 −17.84% / 86.82% −4.51% / 0.36%
Team wins (home or away)250 −16.66% / 79.41% −4.51% / 0.00%
Team wins (home or away)1,000 −16.23% / 65.71% −4.51% / 0.00%

ROI is net return divided by committed stakes, including forfeited balances. Bust share is busted banks divided by all banks, including unfinished banks. Each team has its own stream, so a match appears in both teams’ histories and observations are not independent.

Returns stay in the bank. In the historical replay, the next eligible match after a bust starts a fresh bank. Closing prices use Pinnacle where available, otherwise the market average; unpriced matches are skipped. Price coverage is incomplete. This is descriptive, in-sample history, not a forecast.

Source: matches and match_odds → system_replays. Window: 2012-03-02 to 2026-09-28. Priced matches: 170,818 (distinct matches with at least one eligible market, before band selection). Computed 2026-09-30 08:58:43.