FootballEdgeSeason 2026/27Self-updating record
The record

Everything we tested,
including what failed.

Three full seasons, replayed match by match with every price set before the result was known. No selections removed afterwards. Here is all of it.

Season by season

CLV is closing line value — how much better than the closing price the model's picks were, which is the honest measure of whether it saw something real. Simulated ROI is what fixed reference stakes would have returned in the replay — no money was staked, and the number depends entirely on the staking rules chosen. We treat it as reference data from the collector, not gospel.

SeasonCLVSimulated ROINote
2023/24-0.03%-18.8%the unseen exam — the filter died here
2024/25+1.36%-5.6%tuned season
2025/26+2.46%-11.2%tuned season
Read that table honestly. Positive closing line value in two seasons out of three, and a simulated return that came out negative in all three. A model can be genuinely ahead of the market and still not clear the bookmaker's margin. That is why this project runs as a data engine and a public record — the simulation is the evidence behind that call, and we publish it rather than hiding it.

Model skill against a placebo

The same machinery run on scrambled data, subtracted from the real thing. Anything that survives is signal rather than the testing procedure fooling itself. This is the part that held up every time, including on the season the model had never seen.

SeasonSkill vs placebo
2023/24+0.69
2024/25+0.53
2025/26+0.70

Real, replicated, and far too small to bet.

The exam we failed

We found what looked like an edge across two seasons — the model's strongest disagreements, excluding home wins, beating the close by about two points. We froze the rules and tested them on a third season the model had never touched.

It came out flat against the closing price and lost heavily on money. Both pillars broke: conviction stopped concentrating the edge, and the "never back home teams" rule reversed outright. That is what a pattern fitted to the past looks like when it finally meets fresh data.

The full write-up →

Model vs market, league by league

Every settled paper pick is a disagreement with the market — the model claimed an edge, the price said otherwise. This is how those disagreements have gone, league by league. CLV is closing line value: whether the price the model took beat the closing price, the honest measure of whether it saw something real (shown only where a closing price was captured).

LeagueFixtures read right Calls W–LAvg edge taken Avg CLVRef P/L
La Liga5 of 165–11 (3v)+19.6 pts-10.65% (n=13)-5.09u
Serie A3 of 103–7 (3v)+16.1 pts+4.80% (n=10)-2.60u
Ligue 15 of 95–4 (2v)+16.8 pts-5.92% (n=9)+0.42u
Championship5 of 85–3 (1v)+15.0 pts-3.18% (n=7)+4.51u
Bundesliga2 of 62–4 (2v)+14.8 pts-1.26% (n=7)-0.91u
Premier League2 of 62–4 (2v)+19.6 pts-0.79% (n=8)-2.10u

The live paper record, 2026/27

The fourth exam runs in public. Every high-conviction call is published before kick-off and settled afterwards, judged on beating the closing price and on profit at the price taken. The bars were written down before the season started and cannot be moved.

22 of 55 fixtures read right · CLV -3.36% on 54 closed price(s) · paper P/L at a £1 reference stake: £-5.77

Leg level: 77 calls published · 66 settled (22 won / 33 lost / 11 push) · 9 pending. Legs on the same fixture rise and fall together — 77 calls across 77 fixtures is closer to 77 separate opinions than 77. Count fixtures, not chips.

Closing line value over time — the running average across settled fixtures. This is the honest version of a tipster's profit graph: it can climb or fall, and it stays up either way. Faint dots are single fixtures; the line is the running mean. Counted per fixture (not per leg), so it can read a touch below the leg-level headline above.

-20%+0%+20%-3.36%first settled fixturelatest

Paper profit and loss over time — the graph every tipster shows, drawn our way: £1 a call, one call per fixture, every loss in, and it stays up when it falls. Three seasons of testing said this line does not climb; watch whether the season agrees.

£-8£-4£+0£+4£-5.7715 Aug15 Sep
DateMatchLeague Flagship call — the biggest disagreement logged Odds takenResult LegsFixture Avg CLV
19 SepAthletic Club v AlavesLa LigaAlaves, draw no bet3.84 ✓78hpending1
19 SepBrighton v ArsenalPremier LeagueBrighton, draw no bet3.36 ✓78hpending1
19 SepQPR v PrestonChampionshipPreston, draw no bet3.41 ✓78hpending1
19 SepEintracht Frankfurt v SC FreiburgBundesligaunder 3.5 goals1.73 ✓77hpending1
19 SepCardiff v CharltonChampionshipunder 2.5 goals2.26 ✓75hpending1
19 SepMillwall v West HamChampionshipMillwall, draw no bet2.93 ✓75hpending1
18 SepBrentford v ChelseaPremier LeagueBrentford, draw no bet2.12 ✓83hpending1
18 SepMonaco v LensLigue 1Lens, draw no bet2.46 ✓58hpending1
16 SepLevante v Athletic ClubLa LigaLevante, draw no bet2.26 ✓83hpending1
15 SepBristol City v LincolnChampionshipLincoln, draw no bet2.57 ✓58hwon 0-11read right-15.0%
15 SepMiddlesbrough v MillwallChampionshipMillwall or the draw2.62 ✓30mwon 2-21read right+0.0%
14 SepTorino v AS RomaSerie ATorino or the draw2.38 ✓80hlost 0-21read wrong-1.7%
13 SepReal Sociedad v Atletico MadridLa LigaReal Sociedad, draw no bet2.11 ✓83hlost 0-31read wrong-9.0%
13 SepNapoli v BolognaSerie ABologna, draw no bet3.57 ✓80hlost 1-01read wrong+19.8%
13 SepManchester United v Manchester CityPremier LeagueManchester United, draw no bet2.26 ✓79hlost 0-11read wrong+0.8%
13 SepRB Leipzig v Hamburger SVBundesligaHamburger SV or the draw3.16 ✓53hlost 5-01read wrong-2.2%
12 SepSunderland v ArsenalPremier LeagueSunderland or the draw2.36 ✓45mlost 0-21read wrong+0.0%
12 SepAtalanta v CagliariSerie ACagliari or the draw2.30 ✓10hwon 1-21read right+7.2%
12 SepAthletic Club v ElcheLa LigaAthletic Club under 1.5 goals2.30 ✓80hwon 1-11read right-8.9%
12 SepStrasbourg v MonacoLigue 1Strasbourg, draw no bet2.23 ✓79hpush 1-11push/void-7.0%
12 SepOsasuna v EspanyolLa LigaOsasuna, draw no bet1.55 ✓6hlost 0-21read wrong-2.0%
12 SepFC Augsburg v Bayer LeverkusenBundesligaFC Augsburg, draw no bet3.22 ✓77hpush 2-21push/void+17.6%
11 SepWest Ham v WrexhamChampionshipWest Ham under 1.5 goals2.25 ✓59hlost 6-01read wrong-1.2%
07 SepElche v Real SociedadLa LigaElche, draw no bet2.05 ✓83hlost 2-31read wrong-16.7%
06 SepAngers v RennesLigue 1Angers, draw no bet2.80 ✓79hlost 1-21read wrong-2.2%
05 SepAS Roma v AtalantaSerie AAS Roma under 1.5 goals2.18 ✓30mlost 2-11read wrong+0.0%
05 SepAthletic Club v Atletico MadridLa LigaAthletic Club, draw no bet2.01 ✓78hwon 3-01read right-3.5%
05 SepBayer Leverkusen v Union BerlinBundesligaBayer Leverkusen under 2.5 goals1.66 ✓77hlost 4-01read wrong-7.9%
05 SepWerder Bremen v RB LeipzigBundesligaWerder Bremen, draw no bet2.91 ✓77hwon 3-11read right-6.6%
05 SepFiorentina v TorinoSerie ATorino, draw no bet3.01 ✓29hwon 1-21read right+7.8%
04 SepParis Saint Germain v MonacoLigue 1Paris Saint Germain under 2.5 goals1.75 ✓11hwon 1-21read right-8.5%
04 SepGenoa v ComoSerie AGenoa, draw no bet3.37 ✓82hlost 1-41read wrong-9.7%
04 SepVfB Stuttgart v 1. FC KölnBundesliga1. FC Köln or the draw2.62 ✓82hlost 4-11read wrong-0.8%
04 SepLyon v AuxerreLigue 1Auxerre or the draw2.57 ✓9hlost 3-11read wrong-4.9%
03 SepToulouse v LilleLigue 1Toulouse, draw no bet2.58 ✓10hlost 0-11read wrong-6.1%
01 SepSwansea v WatfordChampionshipSwansea under 1.5 goals1.84 ✓34hlost 2-01read wrong+1.0%
01 SepPortsmouth v DerbyChampionshipDerby, draw no bet2.75 ✓30mwon 0-21read right+0.0%
31 AugBarcelona v Rayo VallecanoLa LigaRayo Vallecano +2 on the Asian handicap1.96 ✓83hlost 5-21read wrong-30.4%
30 AugLazio v GenoaSerie AGenoa over 1.0 goals2.79 ✓82hlost 1-01read wrong
30 AugParis FC v NiceLigue 1over 2.0 goals1.55 ✓77hwon 3-01read right+1.6%
29 AugSevilla v Atletico MadridLa LigaSevilla, draw no bet2.49 ✓83hlost 1-31read wrong-13.3%
29 AugLyon v Le HavreLigue 1Le Havre +1 on the Asian handicap2.07 ✓82hwon 1-11read right+0.3%
29 AugBorussia Dortmund v Hamburger SVBundesligaHamburger SV over 1.0 goals2.94 ✓80hlost 2-01read wrong
29 AugTottenham v NewcastlePremier Leagueunder 3.0 goals1.80 ✓32hwon 0-21read right-1.5%
29 AugStrasbourg v LensLigue 1Strasbourg, draw no bet2.49 ✓79hwon 2-11read right-12.6%
29 AugLevante v Real BetisLa LigaLevante, draw no bet2.36 ✓79hwon 5-21read right+0.3%
29 Aug1. FC Köln v 1899 HoffenheimBundesliga1. FC Köln, draw no bet2.18 ✓77hwon 3-21read right-2.5%
29 AugUnion Berlin v Eintracht FrankfurtBundesligaUnion Berlin, draw no bet1.82 ✓77hpush 3-31push/void-6.3%
29 AugLiverpool v Nottingham ForestPremier LeagueNottingham Forest +1 on the Asian handicap2.10 ✓75hwon 2-21read right-0.7%
29 AugMiddlesbrough v West BromChampionshipWest Brom +1 on the Asian handicap1.61 ✓75hlost 3-11read wrong-5.8%
28 AugAlaves v VillarrealLa LigaAlaves, draw no bet2.19 ✓83hwon 1-01read right-4.0%
28 AugCrystal Palace v Manchester CityPremier LeagueCrystal Palace, draw no bet3.77 ✓83hlost 1-41read wrong+2.8%
28 AugLille v Paris Saint GermainLigue 1Lille, draw no bet3.24 ✓82hpush 2-21push/void-14.0%
27 AugBarcelona v Athletic ClubLa LigaAthletic Club +1 on the Asian handicap2.42 ✓83hlost 2-01read wrong-28.2%
26 AugReal Madrid v Real SociedadLa LigaReal Sociedad +1 on the Asian handicap2.37 ✓59hlost 4-11read wrong-31.6%
25 AugValencia v Real BetisLa LigaValencia, draw no bet1.86 ✓83hlost 0-11read wrong-3.0%
24 AugFulham v ChelseaPremier LeagueFulham, draw no bet2.69 ✓83hlost 2-31read wrong-1.7%
24 AugAS Roma v FiorentinaSerie AFiorentina +1 on the Asian handicap1.74 ✓34hlost 4-01read wrong+6.3%
23 AugElche v BarcelonaLa LigaElche +1 on the Asian handicap2.65 ✓83hvoid1push/void
23 AugTorino v AC MilanSerie ATorino over 1.0 goals2.27 ✓82hpush 1-21push/void
23 AugAtalanta v SassuoloSerie ASassuolo +1 on the Asian handicap1.96 ✓82hpush 2-11push/void+0.3%
23 AugNewcastle v LiverpoolPremier LeagueNewcastle, draw no bet2.73 ✓79hpush 2-21push/void-7.9%
23 AugLe Havre v MonacoLigue 1Monaco under 2.0 goals1.56 ✓79hwon 0-11read right
23 AugAngers v LilleLigue 1Angers over 1.0 goals2.67 ✓29hlost 0-21read wrong
23 AugManchester City v BournemouthPremier LeagueBournemouth +1 on the Asian handicap2.10 ✓77hpush 2-11push/void+1.7%
22 AugEspanyol v Real MadridLa LigaEspanyol +1 on the Asian handicap2.13 ✓83hvoid1push/void
22 AugGenoa v NapoliSerie AGenoa, draw no bet3.36 ✓82hlost 0-21read wrong+14.9%
22 AugParma v CagliariSerie ACagliari, draw no bet2.09 ✓82hwon 0-11read right+3.0%
22 AugValencia v Celta VigoLa LigaValencia over 1.0 goals1.61 ✓81hlost 0-01read wrong
22 AugUdinese v ComoSerie AUdinese over 1.0 goals2.79 ✓80hpush 1-11push/void
22 AugWrexham v WatfordChampionshipWrexham under 1.0 goals3.28 ✓50hpush 1-11push/void
21 AugReal Betis v Real SociedadLa LigaReal Betis over 2.0 goals3.88 ✓83hlost 1-01read wrong
20 AugRayo Vallecano v AlavesLa Ligaover 2.0 goals1.99 ✓83hpush 1-11push/void+11.8%
16 AugEspanyol v LevanteLa LigaLevante over 1.0 goals2.40 ✓67hlost 3-01read wrong
15 AugAlaves v GetafeLa LigaAlaves over 1.0 goals2.05 ✓44hwon 3-01read right
15 AugStoke City v SwanseaChampionshipSwansea over 1.0 goals1.82 ✓40hwon 1-21read right
15 AugNorwich v West BromChampionshipWest Brom, draw no bet2.75 ✓40hwon 1-21read right-1.3%

✓ verified price. The tick beside each odds figure is how long before kick-off that price was captured and written to the ledger by the collector — nothing is priced after the fact, and the closing price it is judged against is the last one seen before kick-off.

Every leg, one row per call — the full ledger view
DateMatchLeagueCall Odds takenModelEdge (pts) ResultCloseCLV
19 SepAthletic Club v AlavesLa LigaDraw no bet · away3.8441%+16.4pending
19 SepBrighton v ArsenalPremier LeagueDraw no bet · home3.3646%+18.1pending
19 SepQPR v PrestonChampionshipDraw no bet · away3.4141%+13.5pending
19 SepEintracht Frankfurt v SC FreiburgBundesligaOver/Under · under 3.51.7368%+13.1pending
19 SepCardiff v CharltonChampionshipOver/Under · under 2.52.2656%+13.9pending
19 SepMillwall v West HamChampionshipDraw no bet · home2.9358%+26.4pending
18 SepBrentford v ChelseaPremier LeagueDraw no bet · home2.1258%+14.0pending
18 SepMonaco v LensLigue 1Draw no bet · away2.4650%+12.2pending
16 SepLevante v Athletic ClubLa LigaDraw no bet · home2.2662%+21.4pending
15 SepBristol City v LincolnChampionshipDraw no bet · away2.5753%+16.7won 0-13.02-15.0%
15 SepMiddlesbrough v MillwallChampionshipDouble chance · draw/away2.6249%+12.8won 2-22.62+0.0%
14 SepTorino v AS RomaSerie ADouble chance · home/draw2.3852%+12.1lost 0-22.424-1.7%
13 SepReal Sociedad v Atletico MadridLa LigaDraw no bet · home2.1161%+16.8lost 0-32.32-9.0%
13 SepNapoli v BolognaSerie ADraw no bet · away3.5742%+16.0lost 1-02.98+19.8%
13 SepManchester United v Manchester CityPremier LeagueDraw no bet · home2.2656%+14.6lost 0-12.242+0.8%
13 SepRB Leipzig v Hamburger SVBundesligaDouble chance · draw/away3.1643%+12.6lost 5-03.231-2.2%
12 SepSunderland v ArsenalPremier LeagueDouble chance · home/draw2.3656%+16.3lost 0-22.356+0.0%
12 SepAtalanta v CagliariSerie ADouble chance · draw/away2.3056%+15.1won 1-22.146+7.2%
12 SepAthletic Club v ElcheLa LigaHome team goals · under 1.52.3054%+13.4won 1-12.53-8.9%
12 SepStrasbourg v MonacoLigue 1Draw no bet · home2.2359%+17.8push 1-12.402-7.0%
12 SepOsasuna v EspanyolLa LigaDraw no bet · home1.5573%+12.3lost 0-21.585-2.0%
12 SepFC Augsburg v Bayer LeverkusenBundesligaDraw no bet · home3.2245%+16.0push 2-22.736+17.6%
11 SepWest Ham v WrexhamChampionshipHome team goals · under 1.52.2562%+20.9lost 6-02.28-1.2%
07 SepElche v Real SociedadLa LigaDraw no bet · home2.0561%+15.8lost 2-32.459-16.7%
06 SepAngers v RennesLigue 1Draw no bet · home2.8050%+17.1lost 1-22.867-2.2%
05 SepAS Roma v AtalantaSerie AHome team goals · under 1.52.1856%+13.0lost 2-12.182+0.0%
05 SepAthletic Club v Atletico MadridLa LigaDraw no bet · home2.0167%+21.1won 3-02.083-3.5%
05 SepBayer Leverkusen v Union BerlinBundesligaHome team goals · under 2.51.6671%+14.5lost 4-01.8-7.9%
05 SepWerder Bremen v RB LeipzigBundesligaDraw no bet · home2.9147%+15.6won 3-13.117-6.6%
05 SepFiorentina v TorinoSerie ADraw no bet · away3.0143%+12.3won 1-22.79+7.8%
04 SepParis Saint Germain v MonacoLigue 1Home team goals · under 2.51.7568%+14.3won 1-21.914-8.5%
04 SepGenoa v ComoSerie ADraw no bet · home3.3740%+12.8lost 1-43.733-9.7%
04 SepVfB Stuttgart v 1. FC KölnBundesligaDouble chance · draw/away2.6250%+13.9lost 4-12.64-0.8%
04 SepLyon v AuxerreLigue 1Double chance · draw/away2.5749%+12.6lost 3-12.705-4.9%
03 SepToulouse v LilleLigue 1Draw no bet · home2.5853%+17.1lost 0-12.751-6.1%
01 SepSwansea v WatfordChampionshipHome team goals · under 1.51.8463%+12.2lost 2-01.824+1.0%
01 SepPortsmouth v DerbyChampionshipDraw no bet · away2.7548%+14.3won 0-22.752+0.0%
31 AugBarcelona v Rayo VallecanoLa LigaAsian handicap · away +21.9670%+22.0lost 5-22.816-30.4%
30 AugLazio v GenoaSerie AAway team goals · over 1.02.7951%+17.0lost 1-0no close captured
30 AugParis FC v NiceLigue 1Over/Under · over 2.01.5574%+13.8won 3-01.53+1.6%
29 AugSevilla v Atletico MadridLa LigaDraw no bet · home2.4956%+18.9lost 1-32.871-13.3%
29 AugLyon v Le HavreLigue 1Asian handicap · away +12.0765%+18.9won 1-12.065+0.3%
29 AugBorussia Dortmund v Hamburger SVBundesligaAway team goals · over 1.02.9453%+20.6lost 2-0no close captured
29 AugTottenham v NewcastlePremier LeagueOver/Under · under 3.01.8065%+12.8won 0-21.83-1.5%
29 AugStrasbourg v LensLigue 1Asian handicap · home +02.4955%+16.4won 2-12.844-12.6%
29 AugLevante v Real BetisLa LigaAsian handicap · home +02.3661%+20.5won 5-22.352+0.3%
29 Aug1. FC Köln v 1899 HoffenheimBundesligaAsian handicap · home +02.1857%+13.1won 3-22.236-2.5%
29 AugUnion Berlin v Eintracht FrankfurtBundesligaAsian handicap · home +01.8265%+12.1push 3-31.94-6.3%
29 AugLiverpool v Nottingham ForestPremier LeagueAsian handicap · away +12.1063%+17.5won 2-22.111-0.7%
29 AugMiddlesbrough v West BromChampionshipAsian handicap · away +11.6171%+13.0lost 3-11.71-5.8%
28 AugAlaves v VillarrealLa LigaAsian handicap · home +02.1960%+17.1won 1-02.28-4.0%
28 AugCrystal Palace v Manchester CityPremier LeagueDraw no bet · home3.7752%+27.3lost 1-43.664+2.8%
28 AugLille v Paris Saint GermainLigue 1Asian handicap · home +03.2450%+21.1push 2-23.764-14.0%
27 AugBarcelona v Athletic ClubLa LigaAsian handicap · away +12.4254%+14.7lost 2-03.366-28.2%
26 AugReal Madrid v Real SociedadLa LigaAsian handicap · away +12.3752%+12.1lost 4-13.46-31.6%
25 AugValencia v Real BetisLa LigaDraw no bet · home1.8662%+12.3lost 0-11.916-3.0%
24 AugFulham v ChelseaPremier LeagueDraw no bet · home2.6960%+25.4lost 2-32.74-1.7%
24 AugAS Roma v FiorentinaSerie AAsian handicap · away +11.7474%+19.4lost 4-01.634+6.3%
23 AugElche v BarcelonaLa LigaAsian handicap · home +12.6580%+44.8void
23 AugTorino v AC MilanSerie AHome team goals · over 1.02.2766%+24.4push 1-2no close captured
23 AugAtalanta v SassuoloSerie AAsian handicap · away +11.9667%+18.2push 2-11.95+0.3%
23 AugNewcastle v LiverpoolPremier LeagueAsian handicap · home +02.7359%+24.1push 2-22.96-7.9%
23 AugLe Havre v MonacoLigue 1Away team goals · under 2.01.5678%+17.4won 0-1no close captured
23 AugAngers v LilleLigue 1Home team goals · over 1.02.6754%+18.5lost 0-2no close captured
23 AugManchester City v BournemouthPremier LeagueAsian handicap · away +12.1063%+18.3push 2-12.069+1.7%
22 AugEspanyol v Real MadridLa LigaAsian handicap · home +12.1379%+34.6void
22 AugGenoa v NapoliSerie AAsian handicap · home +03.3645%+17.1lost 0-22.926+14.9%
22 AugParma v CagliariSerie AAsian handicap · away -02.0962%+16.9won 0-12.03+3.0%
22 AugValencia v Celta VigoLa LigaHome team goals · over 1.01.6174%+14.8lost 0-0no close captured
22 AugUdinese v ComoSerie AHome team goals · over 1.02.7949%+14.7push 1-1no close captured
22 AugWrexham v WatfordChampionshipHome team goals · under 1.03.2842%+13.7push 1-1no close captured
21 AugReal Betis v Real SociedadLa LigaHome team goals · over 2.03.8840%+15.3lost 1-0no close captured
20 AugRayo Vallecano v AlavesLa LigaOver/Under · over 2.01.9972%+24.6push 1-11.78+11.8%
16 AugEspanyol v LevanteLa LigaAway team goals · over 1.02.4067%+26.9lost 3-0no close captured
15 AugAlaves v GetafeLa LigaHome team goals · over 1.02.0561%+14.7won 3-0no close captured
15 AugStoke City v SwanseaChampionshipAway team goals · over 1.01.8270%+18.6won 1-2no close captured
15 AugNorwich v West BromChampionshipAsian handicap · away -02.7547%+12.5won 1-22.788-1.3%

12 settled call(s) show no CLV because no closing price was captured for that market — the gap is shown, not filled in.

The early-season window

For a club’s first few games the model still leans on last season’s data, and that is where its ugliest misreads have come from (documented on the wrongs page). The rule was pre-registered on 19 August, before the results it applies to were known: a call sits inside the window if at kick-off either club had completed fewer than 5 league matches this season. Same untouched rows, split two ways — the full record above is always the headline, whichever view looks better.

ViewFixtures read right Calls W–LAvg CLV Ref P/L
Inside the early-season window20 of 5220–32 (11p)-3.23% (n=51)£-7.96
Outside the window2 of 32–1-5.42% (n=3)£+2.19
£0 staked, and that is not a slogan. Every row is a paper call, logged automatically before kick-off when the model's disagreement with the market clears a bar that was written down before the season started — and settled in public, losses included. The P/L column is what a fixed £1 reference stake would have returned; no such stake exists.