The systems sandbox
Choose a system, a market and a bank. See what the historical closing prices returned.
The verdict
Martingale · Draw · All prices · 100 units
On this data this combination lost 19.09% of the units committed. 13,134 lines, 12,076 busts (91.94% of banks), across 1,106 team streams.
ROI: −19.09%. Bets: 341,636. Staked (including forfeited balances): 4,545,134.63 units. Returned: 3,677,535.98 units. Median bets per line: 15.0. Maximum drawdown across all lines combined: 869,241.14 units.
Same market and band, every system side by side
No progression beats flat staking in expected value on the same negative-expectation bets; flat staking itself pays the margin.
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.
Each cell shows ROI / bust share. All systems face the same eligible matches; stakes and the timing of fresh banks differ.
| System / bank | 10 units | 25 units | 50 units | 100 units | 250 units | 1,000 units |
|---|---|---|---|---|---|---|
| Flat (baseline) | −4.04% / 70.94% | −3.79% / 41.72% | −3.71% / 16.16% | −3.68% / 2.21% | −3.67% / 0.00% | −3.67% / 0.00% |
| Martingale | −18.73% / 97.61% | −20.12% / 96.01% | −19.65% / 94.30% | −19.09% / 91.94% | −17.98% / 87.61% | −19.70% / 79.31% |
| Fibonacci | −15.32% / 96.22% | −13.94% / 94.07% | −12.53% / 92.48% | −14.01% / 90.69% | −12.41% / 88.34% | −12.47% / 84.76% |
| d’Alembert | −5.98% / 96.16% | −5.80% / 92.93% | −4.79% / 89.09% | −4.37% / 83.61% | −4.13% / 73.24% | −4.18% / 51.22% |
What each system does
Flat Bet one unit every time, win or lose. Its stake sequence is 1, 1, 1, 1, 1, 1…
Martingale Double after a loss and return to one unit after a win. Consecutive losses give 1, 2, 4, 8, 16, 32…; at prices below 2.00 a win need not recover the earlier losses.
Fibonacci Use the common variant: move one step forward after a loss and two steps back after a win, stopping at the first step. The loss sequence is 1, 1, 2, 3, 5, 8, 13…; a win from 8 makes the next stake 3.
d’Alembert Add one unit after a loss and subtract one after a win, with a one-unit floor. Consecutive losses give 1, 2, 3, 4, 5, 6…
Method and limits
One stream follows each team through its played matches in date and match-ID order, without a season or gap reset. WIN and LOSE refer to that team at either venue: a home team’s WIN uses the home-win price, an away team’s WIN the away-win price. Each real match appears in two team streams, so observations are not independent.
WIN and LOSE are the same bets seen from the two teams: a home team’s win is the away team’s loss at the same price, so the two rows are not independent evidence.
All outcomes are at 90 minutes. Prices are Pinnacle closing (PSH/PSD/PSA, P>2.5/P<2.5 with is_closing = 1), otherwise the market average closing (AvgH/AvgD/AvgA, Avg>2.5/Avg<2.5). Unpriced matches and prices outside the selected band are skipped without changing the stream state. Band lower bounds are included and upper bounds excluded.
Goals markets also skip matches flagged as having an unknown 90-minute score, or missing either score. WIN, DRAW and LOSE settle on result_90 even when the score is unknown; an unknown result is skipped for these markets.
A line is one bank, not one winning cycle: returns stay in the bank. As soon as the next stake exceeds the remaining balance, the line busts and its remainder is lost; that remainder is included in staked units without counting another bet. The next eligible match starts a fresh bank at one unit. No empty replacement line is counted at the end; unfinished banks are included at their actual staked and returned amounts.
A FLAT line usually runs a team’s whole priced history, so the line count is approximately one per team; a new line starts only after a bank busts.
ROI is (returned − staked) / staked; bust share is busts / lines. The median includes busted and unfinished lines. Maximum drawdown is the worst peak-to-trough fall in cumulative settled profit across all lines combined, in date/match-ID order, home stream before away; adding a fresh bank is not profit. It combines the parallel team streams and is not a drawdown per bank.
This is descriptive, in-sample history with incomplete price coverage, not a forecast or a test on unseen data. Closing prices may not have been available to every bettor; limits, rejected stakes and execution costs are not modelled. Choosing a winning cell after seeing the table does not establish an edge.
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.
Not betting advice