The complete settled record behind our published figures — wins and losses, with the entry price we actually took. Downloadable, and computed from the database on every page load rather than written down once.
It is published so it can be checked. Every number on this page is the sum of rows in the file below; if your arithmetic disagrees with ours, ours is wrong and we want to hear about it.
Recompute the ROI yourself: download the file, divide net profit by total staked across whichever rows you like, and you should land on the same figure this page shows. Live signals are the only paid part of OddsFlow — you pay for timing, never for proof. This settled record is free, public and recomputable; verification never sits behind the paywall.
31,812 settled bets, 2026-01-25 to 2026-09-07. A seven-day delay applies, so the most recent week is not included here or in the download.
Across this record the models won 15234 bets and lost 12260, and returned +11.70% on stake. That is not a contradiction. A bet has two numbers — how often it lands, and the price paid for it. A service winning 70% of its bets at odds of 1.20 loses money; one winning 40% at 3.00 makes it. Win rate is the easiest metric to inflate, which is why it is the one most often published alone.
Every competition is listed, including the losing ones. 21 of 125 fall below 50 settled bets and are flagged: at that size a single quarter-line settling the other way moves the return by whole percentage points, so those rows describe variance, not skill. They are shown because omitting them would turn this table into a selection of whichever competition got lucky.
| Competition | Bets | Matches | W–L | Return |
|---|---|---|---|---|
| La Liga | 1,737 | 164 | 877–693 | +18.00% |
| FIFA World Cup | 1,442 | 100 | 590–693 | -0.20% |
| Brasileirão Série A | 1,321 | 115 | 607–594 | +13.80% |
| Serie A | 1,276 | 134 | 607–505 | +14.30% |
| Premier League | 1,211 | 134 | 625–464 | +23.20% |
| Bundesliga | 1,027 | 98 | 535–400 | +28.70% |
| Saudi Pro League | 1,025 | 80 | 546–377 | +16.30% |
| Brasileirão Série B | 1,021 | 120 | 439–423 | +7.90% |
| Ligue 1 | 1,017 | 110 | 538–403 | +26.00% |
| Chinese Super League | 925 | 61 | 454–352 | +26.90% |
| J1 League | 791 | 98 | 371–347 | +2.90% |
| Eredivisie | 688 | 65 | 329–294 | -1.90% |
| Major League Soccer | 630 | 69 | 310–222 | +18.80% |
| Liga Profesional Argentina | 530 | 62 | 270–163 | +18.60% |
| Primeira Liga | 529 | 59 | 266–211 | +16.10% |
| UEFA Conference League | 479 | 85 | 255–189 | +12.90% |
| Eerste Divisie | 475 | 43 | 207–216 | -2.00% |
| Süper Lig | 469 | 49 | 219–208 | -5.50% |
| UEFA Champions League | 378 | 52 | 221–143 | +20.50% |
| EFL Cup | 375 | 41 | 175–162 | +4.70% |
| Turkish 1. Lig | 355 | 52 | 185–92 | +25.60% |
| 2. Bundesliga | 354 | 33 | 188–119 | +21.80% |
| Ligue 2 | 345 | 37 | 183–112 | +18.90% |
| Leagues Cup | 344 | 42 | 156–157 | -1.10% |
| Allsvenskan | 339 | 34 | 166–134 | +11.20% |
| Segunda División | 332 | 37 | 146–113 | +9.40% |
| Peruvian Primera División | 318 | 40 | 149–125 | +9.60% |
| Ekstraklasa | 310 | 37 | 128–107 | +9.50% |
| Eliteserien | 308 | 25 | 156–97 | +19.60% |
| NWSL Women | 301 | 39 | 156–105 | +22.00% |
| Egyptian Premier League | 298 | 32 | 148–93 | +15.80% |
| Swiss Super League | 297 | 24 | 159–121 | +23.90% |
| Chilean Primera División | 293 | 29 | 147–112 | +15.10% |
| Championship | 286 | 47 | 150–94 | +22.70% |
| Serie B | 280 | 27 | 145–80 | +25.50% |
| Torneo Federal A | 276 | 60 | 112–91 | +6.50% |
| Colombian Primera A | 274 | 39 | 134–77 | +23.60% |
| Liga I | 270 | 33 | 125–101 | +14.50% |
| League One | 258 | 43 | 123–92 | +13.40% |
| Ecuadorian Liga Pro | 257 | 37 | 151–74 | +30.60% |
| Belgian Pro League | 253 | 34 | 119–107 | +15.20% |
| K League 1 | 249 | 70 | 106–108 | +5.20% |
| Superliga | 245 | 27 | 128–82 | +19.50% |
| League Two | 228 | 43 | 127–84 | +19.50% |
| Belgian First Amateur Division | 227 | 30 | 99–90 | +3.50% |
| Czech Liga | 223 | 28 | 117–77 | +19.90% |
| Paraguayan División Profesional - Clausura | 217 | 29 | 107–74 | +22.70% |
| USL Championship | 213 | 48 | 104–63 | +22.90% |
| Scottish Premiership | 212 | 19 | 92–95 | +1.70% |
| NB I | 204 | 22 | 99–67 | +21.00% |
| CAF Champions League | 197 | 13 | 60–76 | -7.80% |
| Tweede Divisie | 191 | 27 | 93–70 | +9.80% |
| South African Premier Soccer League | 187 | 22 | 89–50 | +18.80% |
| Austrian Bundesliga | 180 | 19 | 89–75 | +5.50% |
| Indian Super League | 172 | 14 | 90–76 | +12.60% |
| Spanish Primera División RFEF - Group 1 | 164 | 18 | 53–75 | -14.80% |
| Serbian SuperLiga | 150 | 26 | 88–39 | +30.30% |
| HNL | 149 | 18 | 59–77 | -1.30% |
| Belarusian Premier League | 146 | 26 | 51–65 | -8.20% |
| Greek Super League | 139 | 17 | 65–38 | +25.20% |
| Sammarinese Campionato | 139 | 14 | 79–43 | +31.60% |
| Spanish Primera División RFEF - Group 2 | 139 | 18 | 72–35 | +26.60% |
| Coppa Italia | 132 | 19 | 65–52 | +9.90% |
| Frauen Bundesliga | 132 | 12 | 62–49 | +13.30% |
| K League 2 | 127 | 25 | 48–47 | +6.40% |
| Uruguayan Primera División - Apertura | 126 | 29 | 48–45 | -0.60% |
| DFB-Pokal | 126 | 13 | 54–65 | -5.20% |
| CAF Confederation Cup | 121 | 8 | 34–64 | -29.90% |
| CONMEBOL Libertadores | 119 | 15 | 52–46 | +10.80% |
| Club Friendlies | 115 | 78 | 54–43 | +6.60% |
| Bolivian Primera División | 114 | 28 | 50–42 | +7.50% |
| Liga MX | 110 | 24 | 46–39 | +9.30% |
| Kazakhstan Premier League | 107 | 22 | 43–52 | -10.20% |
| Brazilian Serie C | 107 | 28 | 45–30 | +21.10% |
| FA WSL | 104 | 7 | 56–25 | +33.00% |
| 3. Liga | 101 | 24 | 60–17 | +47.90% |
| Superettan | 100 | 29 | 36–20 | +22.90% |
| UAE Pro League | 100 | 18 | 30–51 | -26.70% |
| Slovak Super Liga | 100 | 19 | 37–41 | -5.10% |
| Russian Premier League | 99 | 18 | 38–45 | -2.60% |
| Thai League 1 | 96 | 7 | 26–35 | -18.30% |
| Portuguese Segunda Liga | 92 | 29 | 44–36 | +2.80% |
| Cypriot 1st Division | 91 | 12 | 46–34 | +9.40% |
| Primera División Femenina | 91 | 14 | 44–29 | +19.80% |
| Macedonian First League | 90 | 17 | 33–33 | +2.40% |
| Bulgarian First League | 89 | 25 | 26–46 | -20.60% |
| Ligat Ha'al | 86 | 16 | 33–42 | -11.80% |
| Ukrainian Premier League | 83 | 17 | 35–15 | +34.10% |
| Malawian Super League | 83 | 19 | 34–24 | +14.40% |
| Liga Panameña de Fútbol | 82 | 19 | 34–33 | +4.80% |
| Challenger Pro League | 82 | 23 | 48–25 | +20.30% |
| Slovenian 1. SNL | 76 | 17 | 29–28 | +2.60% |
| Copa Do Brasil | 73 | 10 | 37–29 | +7.10% |
| Irish Premier Division | 73 | 12 | 43–19 | +34.40% |
| CONMEBOL Sudamericana | 67 | 10 | 27–28 | -1.10% |
| UEFA Europa League | 66 | 16 | 25–38 | -33.80% |
| Ligi kuu Bara | 59 | 20 | 20–26 | -15.50% |
| Omani Professional League | 59 | 9 | 25–16 | +12.70% |
| Feminine Division 1 | 58 | 4 | 28–8 | +44.00% |
| Russian Cup | 57 | 10 | 21–30 | -17.40% |
| Erovnuli Liga | 55 | 16 | 22–16 | +6.80% |
| Canadian Premier League | 54 | 15 | 30–18 | +26.70% |
| Kvindeliga | 53 | 8 | 27–21 | +8.70% |
| EFL Trophy | 53 | 8 | 20–30 | -19.00% |
| Polish Cupsample too small | 40 | 27 | 20–14 | +15.30% |
| Russian First Leaguesample too small | 38 | 15 | 20–10 | +33.70% |
| Austrian 2. Ligasample too small | 35 | 20 | 18–15 | +7.40% |
| Damallsvenskansample too small | 31 | 13 | 17–9 | +21.10% |
| Qatar Stars Leaguesample too small | 31 | 10 | 17–10 | +24.10% |
| English FA Cupsample too small | 22 | 2 | 17–2 | +70.90% |
| Veikkausliigasample too small | 17 | 13 | 9–6 | +12.40% |
| Copa Riosample too small | 15 | 2 | 7–8 | -6.50% |
| KNVB Bekersample too small | 15 | 9 | 10–5 | +26.80% |
| Georgian Liga 3sample too small | 14 | 11 | 9–2 | +44.50% |
| Saudi King's Cupsample too small | 14 | 10 | 7–6 | +5.20% |
| Greek Cupsample too small | 14 | 11 | 6–6 | -4.80% |
| UEFA Champions League Womensample too small | 13 | 11 | 7–4 | +20.00% |
| Myanmar National Leaguesample too small | 11 | 4 | 7–0 | +75.10% |
| Scottish League Cupsample too small | 8 | 6 | 4–3 | +19.90% |
| Peruvian Copa De La Ligasample too small | 6 | 3 | 1–3 | -36.60% |
| Malaysian FA Cupsample too small | 5 | 3 | 3–1 | +32.50% |
| Croatian Cupsample too small | 4 | 4 | 2–2 | -1.20% |
| Taça de Portugalsample too small | 4 | 3 | 3–0 | +85.00% |
| Community Shieldsample too small | 1 | 1 | 0–1 | -100.00% |
| Trophée des Championssample too small | 1 | 1 | 1–0 | +80.00% |
Row-level, one line per settled bet, with the minute and scoreline at entry, the odds recorded before the outcome was known, and the settled profit or loss.
A Dixon-Coles model estimates each side's scoring and conceding rates, adjusted for the opponent, with older matches carrying less weight. It also corrects the low-score dependency that a plain Poisson model gets wrong — 0-0, 1-0 and 1-1 are not independent outcomes in practice.
A side can win 1-0 having been outplayed. Training on results alone teaches the model the wrong lesson, so shot quality enters the estimate: xG measures what a team actually created rather than what fell for it that day.
The fixture is simulated thousands of times from those rates. The output is a distribution rather than a single scoreline: the probability of each exact score, each 1X2 outcome, each goals line and each Asian handicap.
The model probability is compared with the probability implied by the offered price. A bet is only recorded when the gap between them is wide enough. That is why most fixtures produce no bet at all — in most matches the market is already right, and betting into it just pays the margin.
Stated here so that anyone quoting this record is not caught out by them later.
If you use this in a story or a paper, this is the reference we would ask for.
OddsFlow AI, "Settled Predictions Record" (2026-01-25–2026-09-07). Retrieved from oddsflow.ai/open-data.
This page is the archive. The running record, updated after each match, is here.