Track record — nothing hidden
Every pick we've published, with its actual outcome. Wins and losses. Numbers refresh as new matches finish. Below you can verify tomorrow's picks are committed to before kickoff.
Overall record
All published predictions. Not filtered.Past performance does not predict future results. Figures are statistical model outputs, not advice or a guarantee of any outcome.
What do "units", "ROI", and "hit rate" mean?▾
Historical performance
Peak 7.3u · trough -24.9u
Green ≥ 60% · Amber 50-60% · Red < 50%
Monthly performance
Hit rate and returns per calendar month, from graded picks only. The live record starts 1 September 2026, so months before that are absent rather than empty. A rolling 12 months is shown; use the range filter above for older periods.
Hit rate by month: September 2026: 74.0 percent from 500 picks.
Profit and loss by month, in units: September 2026: minus 22.77 units.
Month by month
September 2026
- Hit rate
- 74.0%
- Profit / loss
- −22.77u
- ROI
- −4.6%
- Graded picks
- 500
- Wins
- 370
- Losses
- 130
- Avg odds
- 1.32
Rolling hit rate — time windows
If our verified hit rate drops below 55% in any calendar month, all Silver, Gold and Diamond subscribers get the following week free — no ticket, no questions. This page is the source of truth for that number.
Tomorrow's picks — published before kickoff
Picks are written to the record before the matches kick off, and this site serves that stored slate rather than re-ranking on each visit. So a pick you see here is the same pick that gets graded afterwards — win or lose, it stays on the record.
The fingerprint below is a SHA-256 of the slate exactly as the API is serving it now. You can recompute it yourself and confirm this page is not showing you something different from the model's output. What it is not: we do not yet store past fingerprints, so it cannot prove the slate is unchanged since yesterday. Retaining a daily hash is the next step, and until it ships we will not claim it.
How to verify (click)
# 1. Grab the same slate this page hashed, straight from the model
curl "https://bankerai-production.up.railway.app/picks?mode=upcoming&n=25" \
| python3 -c "import sys,json; json.dump(json.load(sys.stdin)['picks'], open('picks.json','w'))"
# 2. Recompute the commitment hash (Python)
python3 -c "
import hashlib, json
with open('picks.json') as f: picks = json.load(f)
rows = [f\"{p['date']}|{p['league']}|{p['home']}|{p['away']}|{p['pick_team']}|{p['pick_prob']:.4f}|{p['fair_odds']:.2f}\"
for p in picks]
print(hashlib.sha256(('\n'.join(rows)).encode()).hexdigest())
"
# 3. Compare with the fingerprint shown above ↑
# Matching means this page is serving the model's real output, unedited.Every pick in the current filter
Graded up to 2026-09-12. 198 newer picks are still awaiting results. Outcomes come from the official results feed, which publishes a few days after kickoff — nothing is held back, and nothing is graded by hand.
| Date | Match | Pick | Confidence | Fair odds | Actual | Result |
|---|---|---|---|---|---|---|
| 2026-09-12 | 🏴 Chelsea vs Hull | Over 2.5Total goals | 54%·Moderate | 1.85* | 2–2 | Won |
| 2026-09-12 | 🏴 Middlesbrough vs Norwich | Under 2.5Total goals | 54%·Moderate | 1.85* | 4–3 | Lost |
| 2026-09-12 | 🇸🇪 AIK vs Vasteras SK | AIKDraw no bet | 69%·Strong | 1.45* | 1–4 | Lost |
| 2026-09-12 | 🏴 Harrogate vs Tamworth | YesBoth teams to score | 54%·Moderate | 1.85* | 3–1 | Won |
| 2026-09-12 | 🇪🇸 Real Madrid vs Vallecano | Real MadridDraw no bet | 81%·High | 1.23* | 4–1 | Won |
| 2026-09-12 | 🇮🇹 Catanzaro vs Carrarese | NoBoth teams to score | 54%·Moderate | 1.85* | 1–0 | Won |
| 2026-09-12 | 🇳🇴 Rosenborg vs Tromso | Rosenborg +0.5Asian handicap | 69%·Strong | 1.45* | 5–3 | Won |
| 2026-09-12 | 🏴 Sheffield Weds vs Wigan | YesBoth teams to score | 54%·Moderate | 1.85* | 0–0 | Lost |
| 2026-09-12 | 🇧🇷 Gremio vs Vasco | Gremio +0.5Asian handicap | 83%·High | 1.21* | 1–2 | Lost |
| 2026-09-12 | 🇷🇺 Fakel Voronezh vs Baltika | YesBoth teams to score | 54%·Moderate | 1.85* | 2–2 | Won |
| 2026-09-12 | 🏴 Swansea vs Burnley | Burnley +0.5Asian handicap | 83%·High | 1.21* | 3–1 | Lost |
| 2026-09-12 | 🏴 Watford vs Stoke | Watford +0.5Asian handicap | 69%·Strong | 1.45* | 1–2 | Lost |
| 2026-09-12 | 🇺🇸 Columbus Crew vs New York Red Bulls | Columbus CrewMatch result | 52%·Moderate | 1.92* | 0–1 | Lost |
| 2026-09-12 | 🏴 Charlton vs Portsmouth | YesBoth teams to score | 66%·Strong | 1.51* | 0–0 | Lost |
| 2026-09-12 | 🏴 Ayr vs Inverness C | DrawMatch result | 52%·Moderate | 1.91* | 1–3 | Lost |
| 2026-09-12 | 🇵🇹 Casa Pia vs Porto | Porto +0.5Asian handicap | 83%·High | 1.2* | 1–4 | Won |
| 2026-09-12 | 🇹🇷 Eyupspor vs Rizespor | RizesporMatch result | 53%·Moderate | 1.9* | 0–2 | Won |
| 2026-09-12 | 🇺🇸 FC Cincinnati vs Charlotte | Over 2.5Total goals | 67%·Strong | 1.5* | 3–3 | Won |
| 2026-09-12 | 🇸🇪 AIK vs Vasteras SK | AIKMatch result | 53%·Moderate | 1.9* | 1–4 | Lost |
| 2026-09-12 | 🇲🇽 Toluca vs Atlas | TolucaMatch result | 64%·Moderate | 1.56* | 5–2 | Won |
| 2026-09-12 | 🇵🇹 Casa Pia vs Porto | PortoMatch result | 64%·Moderate | 1.56* | 1–4 | Won |
| 2026-09-12 | 🇺🇸 DC United vs Atlanta Utd | DC UnitedMatch result | 53%·Moderate | 1.87* | 0–0 | Lost |
| 2026-09-12 | 🇳🇱 For Sittard vs Ajax | Ajax +0.5Asian handicap | 84%·High | 1.18* | 1–5 | Won |
| 2026-09-12 | 🇳🇱 Cambuur vs Nijmegen | Over 2.5Total goals | 68%·Strong | 1.48* | 3–0 | Won |
| 2026-09-12 | 🇮🇹 Atalanta vs Cagliari | Atalanta +0.5Asian handicap | 85%·High | 1.18* | 1–2 | Lost |
Fair odds are the model's own price (1 ÷ its probability), not a bookmaker quote. Leagues whose results feed carries no market — currently all of them — have no bookmaker price to compare against, so returns shown here are modelled, not achieved.
How grading works
- Predictions are saved immediately, before kickoff, and the site serves that stored slate — so the pick you saw is the pick that gets graded.
- Win/loss grading happens only after official match results become available from our data provider.
- Different leagues publish at different times, so some settle days before others.
- A missing recent result means the score isn't published yet — not that a prediction was deleted or hidden. Losses are counted the same way wins are.
Showing 25 of 500 picks in this filter.