Changelog

What's new

Everything that changed for you, newest first — what it does, which competitions it covers, and where to find it. Fixes and plumbing are left out; this page is only the parts you can see.

September 2026

Find a team in the predictions list

The predictions list now has a search box for teams, leagues and countries, and a control that folds the leagues without folding the days.

A search box, in the bar above the list. Type a team, a league or a country — Arsenal, La Liga, Spain — and the list narrows to the picks that match. Accents and punctuation do not have to match what you type: Atletico finds Atlético, and kokand1912 finds FC Kokand 1912. The counter beside the controls changes to read 3 of 40 picks, so you can always see how much the box is hiding.

It searches the picks that are already on screen, and nothing else. If you are looking at Today and the match is on Thursday, the box will not find it — widen the window to three or seven days first, and then search. That is deliberate: the box narrows what you are looking at rather than quietly going and fetching something else, so the number beside it is always a number you can check by clearing the box.

And a way to fold the leagues without folding the days. The list groups by day, and inside each day by league. Until now Collapse all was the only fold there was, and it took the whole day away with it. There is now a Collapse leagues button that leaves Today and Tomorrow open and closes the league bands underneath them — which is the view you want when you are counting how many competitions are on rather than reading the individual matches. It appears when the list is grouped by day; grouping by league has only one level to fold, and Collapse all already does that.

One small thing worth knowing: while there is text in the search box the groups open themselves, so a match can never be hidden inside a folded band you cannot see. Clear the box and your grouping comes back the way it was.

Open Predictions

Follow the leagues you care about

Pick the competitions you actually watch, and switch the whole app between just those and all of them.

One hundred and seven leagues had a fixture today. Until now you could look at all of them or at exactly one, and the app forgot even that choice when you reloaded the page. There was nothing in between.

Now you can keep a list. The button in the top bar says Choose leagues. Search by league or by country, star the ones you follow, and the button becomes a switch: your leagues, or all of them, one click apart. It applies everywhere fixtures are listed — All Matches, Live, Predictions, Confidence Picks, Today's Edge and History — so you set it once rather than per page.

Two things it deliberately does not do. It never filters your own saved picks: a bet you tracked stays visible whether or not you follow that league, because a list of your money is not a place for a filter to hide things. And it does not touch the league tables, which show one competition at a time anyway.

What the numbers beside each league mean. That is how many fixtures the competition has in the next seven days — what following it would actually bring you, rather than only that the league exists. The picker offers leagues that are playing; a competition that has not had a match in two years is not something we can honestly ask you to judge.

The Popular section is short on purpose. We have classified twenty-four competitions by tier, out of well over a thousand we collect. Rather than pad that list with a guess at what is popular, it shows the ones we have actually classified and says so. Everything else is a search away, grouped by country.

And a reset. If the list stops matching what you watch, Reset — unfollow all in the picker clears it in one go, with a confirmation that names how many are about to go. Clearing it shows every league again; nothing else you have saved is affected.

You need an account for this, because the list follows you between devices. Whether you are currently looking narrow or wide is remembered per device — the answer on a phone is often not the answer at a desk.

Open All Matches

Strategy Lab: pick a strategy on the left, read it on the right — and filter its record

The Strategy Lab is now a list beside a detail instead of a grid above one: search and sort the fourteen strategies, open one, and — on Pro — see its record recomputed for the leagues, price range, period and side you choose.

The page had a hidden step. Clicking a strategy card used to scroll you to a detail block under the grid, and nothing said so. Now the strategies are a list on the left and the one you picked opens on the right; on a phone the detail is its own screen with a back control, and the address bar names the strategy, so a link opens exactly what you were looking at. The list is searchable and sortable by return, win rate, signal count or name — within each family, so the six odds-movement rules and the eight pre-registered ones never get ranked against each other.

Filters recompute the record, on Pro. Above the equity curve you can now choose leagues, a price range, a period and (where a rule bets both ways) a side. Everything below — win rate, return, curve, signal log — is settled again on just those signals, by the same code that settles the full record. A strip says how many of the strategy's signals you are looking at, and below a hundred the page refuses to headline a return, because one league on thirty matches will show you almost anything.

What it does not do. The list always shows the full record, so sorting compares whole strategies. The filters are a Pro feature, like the threshold tuner and the full signal log. And nothing here has become a recommendation: the verdict badges are unchanged.

Open Strategy Lab

Two different numbers were both called edge

The Kelly calculator and the front page used the same word for two quantities that differ by the size of the price. If you ever compared one to the other, the comparison was wrong — here is what to re-check.

One bet, two honest numbers, one misleading word. Take a price of 2.50 and a 45% chance of winning. The Kelly calculator showed you Edge +12.5%. The front page advertises that we publish a pick when the edge clears a threshold, and quoted that threshold with a percent sign too. Both numbers were correct. They were not the same kind of number, and nothing on either page said so.

The calculator's figure is a return: what one unit staked pays back on average at that price. Our threshold is a difference between two probabilities: how far our estimate sits from what the market thinks once the bookmaker's fee is taken out. At a price of 2.50 the first is about two and a half times the second, for the same bet, and the gap grows with the price.

What to re-check. If you ever took a figure off the Kelly calculator and compared it to the threshold on our front page — or to the edge shown on a pick — that comparison did not mean what it looked like, and it flattered the bet. The two are not on the same scale: at a price of 2.50 a calculator reading is roughly two and a half times the size of the probability gap for the same bet, and at 5.00 it is roughly five times. Nothing you were shown about our own picks has changed, and no number moved: only the labels did.

What changed on the pages. The calculators now say expected value, or EV, for the return per unit staked, which is what it has always been. The word edge is now used for one thing only — the gap from a fair market price — and it is printed in percentage points rather than percent, because that is the honest unit for a difference between two probabilities and it is the thing that tells you at a glance that the two figures do not belong on the same scale.

One thing worth knowing about the Kelly page. It takes a single price you type in, and a single price still has the bookmaker's fee inside it. So that page can show you an expected value honestly, and it genuinely cannot tell you your edge over a fair market — for that the whole book has to be priced, which is what the fair odds calculator is for.

Open Guides

Eight more strategies in the Lab, and what we will not claim for them

Strategy Lab gains a second family of eight rules built on how fifteen bookmakers' prices move against the sharp line. Every threshold was frozen before the test, and the card on each one carries the study's own verdict: on the first test none produced a return we can call positive, and two — the favourite at the best price and the totals steam — later passed a second test on leagues they had never seen.

Strategy Lab now has two families. The six rules you know read the last hour of odds movement before kickoff. The eight new ones read something larger: eleven months of prices from fifteen bookmakers, Pinnacle among them, at four moments before kickoff, plus five seasons of closing prices across nineteen European leagues.

Each new rule is a hypothesis about the market as a system — that retail prices converge on the sharp line and a book that has not yet moved is value; that a sharp move keeps going; that heavy favourites are under-priced at the best available price; that the draw is neglected when nobody is favourite; that goals money in the totals market carries momentum; that a team collecting more points than its chances deserve is over-priced; that a league's home advantage drifts and the price lags it.

What we did before building them is the part worth reading. Every threshold was chosen on the first half of the data and frozen. The second half was then tested once. The badge on each card is that test's verdict, in the study's own words, and the honest headline is that on that first test none of the eight produced a return whose interval sits above zero. One passed on a closing-line-value measure, and the write-up explains why that number is not money. The market, it turns out, does not converge on the sharp line before kickoff; sharp moves tend to partly reverse rather than continue; and prices are calibrated in every regime we could name.

Four rules earned a second look the same day. They were tested again, with the same frozen thresholds, on eleven European leagues' earlier seasons that no rule had ever been fitted to. Two passed there — backing a heavy favourite at the best closing price, and following late money on the goals line — and two failed again. Each card now prints both results side by side. Read the small print before reading anything into it: the price is the best of many bookmakers at closing, the effect at any one bookmaker is a point or two, and the records on the fifteen-bookmaker data we collect ourselves stay where they were. The goals-line rule was then put to that data directly — the totals prices of the same fifteen bookmakers, with the rule sealed before the first price was fetched — and it failed there, both at the close and an hour before kickoff. The favourite-at-the-best-price rule was re-run on the same data with junk quotes excluded and, for the first time, an hour before kickoff, and failed there too. Both cards say so.

What these cards are for, then: the same thing the Lab has always been for. Each one shows its full graded history, split into the half the rule was fitted on and the half it was tested on, with every match, the price it would have taken and the result. You can move the thresholds and watch the record move — and see for yourself how quickly a promising number dissolves on the months it was never fitted to.

What they do not do. They have no live board: their prices are collected after the match, so they cannot fire before kickoff. New settled matches join the record each morning. And nothing here is a recommendation to stake money — that has not changed, and this study is the reason it will not.

Open Strategy Lab

Two simulations got their own pages

The bankroll simulation and the Martingale one were buried halfway down two articles. They are now pages of their own, in the calculators list, where you can find them again.

They were already there. You could not find them twice. One of them runs twenty-four bettors through a season and shows what changes when the only difference between them is how much they stake. The other asks how many losses in a row a doubling system survives on your own bankroll, and how likely that streak is over a normal run of bets. Both had been sitting in the middle of a long article, which is a fine place to meet something and a hopeless place to return to it.

They are now in the calculators list with the other seventeen, so you can reach them from the sidebar, from search, or by bookmarking the page.

What they actually do. Both simulate an imaginary bettor from numbers you type in. The bankroll one hands every simulated bettor a genuine, generous advantage and then shows that having one is not enough on its own — a large share of them still go broke, purely from how the stake was sized. The Martingale one is usually a surprise in the other direction: ten times the money buys you one or two more losses, not ten.

What they do not do. They are not predictions, and they do not touch your account or ours. Nothing you enter is sent anywhere or stored. They will not tell you whether you have an edge — the bankroll one assumes you do, on purpose, so that nothing you see there can be blamed on picking badly. And a simulated season is one sample: run either of them a few times and watch the shape rather than the ending.

Both are free, need no account, and work the same whether you are signed in or not.

Open Guides

The channels are findable from the site

We publish to Telegram and YouTube every day, and until now nothing on the site said so. There is a section on the home page and a link in the footer of every page.

We have been publishing every day and not telling you where. One match a day goes out on Telegram with the model's read on it, a scorecard of how the week's calls landed goes out on Mondays, and short videos go up on YouTube. None of that was linked from anywhere you would look. If you found the channel, you found it by accident.

There is now a section on the home page with both, a link in the footer of every page, and a pair of marks in the app itself: in the header at the top and under the content at the bottom, so you do not have to leave what you are doing to find them. The Telegram one takes you to the channel; there is also a link to our bot, which answers a few commands in a private chat if you would rather have it that way than follow a feed.

What is actually in the channel. One match a day, not every match. The model's read on it, in plain words. A weekly scorecard, wins and losses both. The occasional poll. Everything in it comes from the same numbers on this site, so following it gets you the day's match and how the model reads it without opening anything, not a different or better set of calls.

What this does not do. It is not a private tier and there is nothing in it that is held back from the site. It is not a tips channel: you will not be told what to bet, and nothing there claims an edge. The Friday chance-quality post covers the six leagues our expected-goals data spans, not all of the leagues on the site, and it stays quiet in weeks when the numbers have nothing striking to say rather than manufacturing something.

The channel is new. It has been running in its current form since early August, so there is not much history in it yet. The model's full record, including everything that lost, has always been on Track record and is not going anywhere.

We stopped calling it value

The My Picks dashboard used to head a group of fixtures 'Value — model beats the price'. It now says 'Model vs market'. The fixtures and the numbers are the same; the claim about them was one we cannot support.

On your My Picks dashboard, a green band used to sit above the first few fixtures reading "Value — model beats the price". The counter at the top of the same screen said "Value" with a number beside it. Both told you we had found bets worth more than they cost.

We had not, and we have taken the wording down.

We spent the last few days measuring our own forecasts against closing prices across thousands of finished matches. The finding was uncomfortable and clear: our model is at its worst precisely where it argues loudest with the price. When it agrees with the market's favourite it is nearly as good as the market. When it picks against, it is several times worse. So the bigger the "value" we were flagging, the less it was worth.

What the screen says now. The same fixtures, in the same order, with the same numbers. The band is headed Model vs market, and underneath it, furthest from the price. The counter reads Gaps. Where a fixture's number was shown as a green percentage, it is now in percentage points and in our ordinary accent colour, because it is the distance between two probabilities and not a return. Green in this app means a bet that won, and it had no business sitting on this.

What to re-check. If you saved a pick because the screen told you there was value in it, the number behind that pick has not changed and neither has our view of the match. What changed is what we are willing to promise about it. Your journal, your prices and your settled results are untouched.

Three help articles were wrong, and are now right. They said the Find value tab was empty because no league had passed our quality bar. That stopped being true on 11 August, when the bar became a label shown beside each league instead of a filter that removed it. They also called the Value Bets view "empty" on a free plan when it is in fact a paid view, which is a different thing. If you read those pages and concluded the feature was broken or switched off, it was neither.

What this does not do. It does not change the model, the fixtures we list, the order we list them in, or who can see what. Nothing was added and nothing was removed. Public match pages are unaffected — they have never shown a value figure, and still do not. If you preferred the old wording, the honest answer is that it was telling you something we cannot show to be true.

Scores now update while you watch

The score on All Matches used to be frozen at the moment you opened the page. It now refreshes on its own about twice a minute.

If you left All Matches open during a game, the score you were looking at was the score from when the page loaded. It did not move. A goal went in, the row kept the old score, and the only way to see it was to reload the page or switch days and come back. Opening a match from that list had the same problem: the pop-out showed the score and the minute as they were when you clicked, and then stayed there.

That is fixed. The score, the match minute and the switch to full time now refresh by themselves roughly every half minute, in the list and in the pop-out, for as long as you have them open. You do not have to reload anything.

What to re-check. Any score you read off All Matches while a match was in play, and anything you decided from it. If the page had been open a while, the score could have been several minutes behind. Finished matches were never affected, and neither was the Live page, which has always refreshed itself.

What this does not change. It refreshes the score, the minute and whether the match has ended. The rest of the row is unchanged until you reload or change the day. It also does not make the score arrive any faster than it did before, which was usually within a minute or two of the goal. The delay you were seeing was the page not asking again, not the score being slow to reach us.

One more place got faster. Who scored and when, in the match pop-out, used to wait on a slower schedule than the score itself did, so a goal could show up in the score several minutes before the scorer's name appeared under it. Those two now run much closer together.

Open All Matches

August 2026

A match time that said UTC was already your own time

The panel that opens when you tap a match labelled its kick-off time "UTC". The time was already in your timezone. If you were converting it by hand, stop.

If you have been adding your timezone offset to the kick-off time in the match panel, you were making it wrong. The panel that opens when you tap a match printed the word "UTC" under the kick-off time. The time above it was never UTC. It was already your own local time, the same time shown in the list you tapped from, and the same one the badge at the top of the page describes.

So the number was right and the label was wrong, which is the awkward way round: anyone who trusted the label and converted landed hours out.

There was a second half to it on the same three lines. The date printed above the time was a UTC date while the time below it was local, so a late kick-off could be filed under the previous day — a match at half past one in the morning your time, dated yesterday.

Both are fixed. The panel now shows the date, the time and your actual offset (GMT+2, or whatever yours is) as one consistent set, and it reads that offset from your device instead of assuming one.

What to re-check. Nothing that was saved — only what you worked out in your head. No kick-off time we showed you was ever wrong, and no bet, pick or result was affected. If you noted down a match time from that panel and adjusted it yourself, the adjustment is the part to undo.

Two other places had the same fault and were fixed with it: the timestamp on an AI match brief, and the kick-off column in the Martingale lab.

One place still shows UTC on purpose. History still groups and times past matches by UTC day, because its date filters work in whole UTC days and moving one without the other would put a match under the wrong heading. That is a larger change and it has not been made yet.

Open All Matches

Live scores on the home page were wrong

Matches in play were all shown as 0-0 on the home page, whatever the real score. If you read that panel today, read it again.

If you looked at the live matches on your home page today, the scores were wrong. Every match in play was shown as 0-0, no matter what was actually happening in it. A match that stood at 2-1 was shown as 0-0, and so was one at 1-1. Opening a match from that panel was no better: it showed the kick-off time of a game that had been running for over an hour, and no score at all.

Both are fixed. The panel now shows the real score, the minute, and which half the match is in, and opening a match shows the same thing.

What to re-check. Anything you concluded from that panel today. It was only that panel and the pop-out it opens. The Live page itself was always correct, and so was every match list with a date on it, so if you read the score anywhere else it was right.

The panel is easier to read now, too. The two teams sit one above the other with the goals lined up down the right-hand edge, the way a scoreboard normally works, instead of the score being buried in a line of text between two club names. Where we have a forecast for the ground, it appears next to the league name. Where we have a view on the match, it appears as a small tag on the row itself. Matches we do not model carry no tag, rather than a blank space that could be mistaken for one.

Recent results got the same treatment. Same layout, so the score is where you expect it, and every row now opens the match. It did not before.

One honest correction to a label. That panel used to be headed "Live · covered leagues", which suggested it only ever showed competitions we model. It never did, and it still does not. It shows whatever is being played, putting the matches we have a view on first. The heading now just says what it does, and the tags on individual rows tell you which is which.

Open Home

A track record you can interrogate

The record page now sorts, searches and filters, ranks every competition by return, and shows each one against the market instead of on its own.

The track record used to be a single list you could only read top to bottom, in an order nobody chose. It is now something you can ask questions of.

Sort and search. Every column sorts, and there is a search box for the competition you actually care about. The table opens on the competitions with the most settled picks behind them rather than in an arbitrary order, so the first rows you read are the ones that can carry a conclusion. Filters let you set a minimum sample, or look only at the leagues in profit or in loss. All of it works on a phone.

Against the market, not on its own. Each competition now shows our return next to what the market-implied favourite returned over the same fixtures. A return with nothing to compare it to means very little, and until now that comparison existed only for the site as a whole.

Two new charts. One ranks every competition by return. The other plots each one's return against the number of settled picks behind it, over a shaded band showing how much of that number is noise at that sample size. That second chart will often show most competitions sitting inside the band — that is the honest picture, and it is why we would rather draw it than leave you to assume a big percentage on twelve matches means something.

A twelve-month window, alongside season, 180, 90 and 30 days. More settled picks is the only real way to tighten these figures.

One thing that was wrong is now right. On the profit-over-time chart, the minus signs on the vertical scale were being cut off, so a chart of losses was labelled as though it were gains. If you read that chart before today, read it again.

Opening a competition's row now shows all three sources side by side and links straight to every settled pick in it — that feed carries a full season now rather than the last twenty-five, and you can search it by team.

The per-competition breakdowns, the charts and the pick feed are part of PRO. The headline record for each source — how often it lands and what it returned, with the sample behind both — stays visible to everyone, as it always has.

Open Track record

Bets stop asking you to settle them

A bet whose final score is running late now says who is chasing it and by when it refunds itself, instead of sitting in red under a Resolve button you never needed to press.

Your bets in My Picks already settle on their own. A match finishes, the score lands, and within ten minutes the bet is marked won or lost, the price you took is the price it settles at, and your balance moves. That has been true for a while and it has not changed.

What has changed is what happens on the days it goes slowly.

Occasionally a final score simply does not arrive. Not often — it is a fraction of a percent of matches, usually one obscure fixture while the rest of its league reports normally. When that happened, the bet turned red, a counter appeared saying it needed a result, and a Resolve button asked you to settle it by hand. All of that was misleading. Behind the scenes we keep re-checking for that score every half hour, and if it never turns up we void the bet and give you your stake back. Nobody had to press anything.

Now the bet says exactly that. It stays calm in your open bets with one line: still waiting on the final score, settles itself when it arrives, and if it never does, voided and refunded by a date we name. The date is a real one — five days after kick-off — and it is the same deadline the system works to, not a guess.

Resolve is still there, and for some bets it is still the only way. If you added a fixture we do not carry, we have nothing to look up and it is yours to settle. The same goes for bets on things we do not collect results for, such as cards or corners. Those keep the red button, because for them it is true. And if you already know a result and do not want to wait, you can settle any bet yourself at any time — it has always been an override rather than a chore.

What this does not do: it does not make results arrive any faster, and it does not change how anything is graded or what it pays. It changes only which bets we ask you to do something about — which should now be close to none of them.

Find value now shows something

The Find value tab lists the fixtures where our model's number is furthest from the bookmaker's, across the 25 leagues we both cover and can price, instead of sitting empty.

If you have opened Find value in My Picks, you have most likely found nothing there. That was not a glitch, and it was not an off-season — it was us.

The tab was built to list bets where our model beats the bookmaker's price, and it only showed you a league once that league had proved it beat the price over a year of past results. No league has proved that. So the tab showed nothing, month after month, while sitting under a heading that promised value picks.

It now shows a different thing, and it shows it every day. The tab lists the fixtures where our model's number is furthest from what the odds imply — the disagreements. That is a statement about our own model rather than a claim about your returns, and it is one we can make honestly on any given morning.

Every card tells you how that league has actually done. Under each fixture you will see something like "flat-staking these picks returned −13.7% ±7.9pp over 318 bets over the last year" — the real backtested figure for that league, with the margin of error beside it, whether it flatters us or not. Leagues we have tested and approved are listed first. Leagues we have never tested say so, which is not the same as having failed.

What it does not do. It does not tell you a bet will win, and none of these numbers are a forecast of profit — a disagreement means our model and the market see the game differently, and the market is often the one that is right. It covers roughly 25 leagues out of the 218 we carry: only fixtures we both have a model for and can find a price for can appear. The rest of the calendar is still there under Find a match, where you can plan any fixture yourself.

It is no longer locked away. On the free plan you now see the fixtures and the side our model favours. Pro shows the full list with both probabilities and the gap between them; Max adds the prices.

The World Cup tab is gone from this section. The tournament is over, so it had nothing left to plan and showed an empty pane. Every World Cup match, including the whole archive back to 2014, is still under Tournaments.

While we were there: adding a bet by hand used to fill in the price for you on match-result bets only. Over/under and handicap bets left the price box empty even when we had the number, so you typed it from memory. It now fills in for those too, and offers the goal lines and handicaps we actually hold a price for rather than a blank box. Double-chance prices are worked out from the match-result odds and labelled as such — check them against your bookmaker before you save.

Tofiko on a phone

Team names, tabs and the day's picks now fit a phone screen instead of being squeezed off it, and the app no longer opens with the menu covering the page.

If you have been using Tofiko on a phone, two things have been quietly in your way, and both are fixed.

The app opened with the side menu over the page. Not for long, but long enough to be the first thing you saw every time, and on a slower connection it sat there until the page finished loading. The menu now stays shut until you open it.

Team names were being squeezed out of their own rows. On My Picks, under Today, the day's picks were showing the club badges, the market and the price, but the names themselves had been compressed to a letter or two, or to nothing at all. The same thing was happening to saved matches on the Watchlist. Rows now give the names a line of their own on a narrow screen, so a pick reads as a match rather than as two crests.

While we were there: the My Picks tabs no longer run off the edge of the screen, so Watchlist, Analytics, Print slip, Export, Bookmakers and Settings are all reachable without knowing to swipe for them; and scrolling the Today tab no longer hides the tab bar behind the bankroll summary.

None of this changes a single number, a pick or a price. It was a layout problem, on phones only, and nothing on a desktop screen has moved.

Email sign-in links work again, and signing out now says so

Sign-in links sent to your email were failing when opened, and many were never delivered at all. Both are fixed. Signing out now confirms it instead of leaving you on the same page.

If you have tried to sign in with an emailed link recently and it did not work, it was us, not you. Please try again.

Two separate things were broken, and together they made email sign-in close to unusable.

The link itself failed when you opened it. The link was tied to the exact browser you asked for it from. That is fine in theory and useless in practice, because mail apps open links in whatever browser they prefer, which is often not the one you were just using. Open the link on your phone after requesting it on your laptop, or let iOS Mail hand it to Safari while you were in Chrome, and you got an error telling you the link had expired or been used. It had done neither. Links now work from any browser, on any device. Because they are no longer tied to your browser, they expire faster: you now have 15 minutes to use one.

Many of the emails never arrived. Sign-in mail was going out through a service we had never configured properly, which quietly refused to send more than a couple of messages an hour across the whole site. If two other people signed in before you, your email was simply never sent, with nothing to tell you so. Sign-in mail now goes out through the same provider as the rest of our email.

If you gave up on an account because the link never came or never worked, it should now work on the first try.

Signing out tells you it happened. Before, choosing "Sign out" left you looking at the same page with no confirmation, and if it silently failed you stayed signed in without knowing. Now you land on the homepage with a clear message, and on the rare occasion it fails, it says so and tells you that you are still signed in, which matters if you are on a shared or public computer.

Signing in with Google was never affected by any of this.

What a bet costs

A new page reports the bookmaker margin we measure on each market and each bookmaker, so you can see where the same bet is cheaper before you place it.

Every price has a fee built into it. Add up the implied probabilities of every outcome in a market and the total comes to more than 100 percent, and that excess is charged on every bet you place, whether it wins or loses.

What a bet costs now reports the margin we measure on the odds we collect, per market and per bookmaker, with the number of matches each figure rests on. The gap between the cheapest and the dearest book on the same market is wider than most people expect, and it is paid on every bet rather than only the losing ones.

Two limits, because they change how the page should be read. The measurement covers the bookmakers and competitions our odds feeds reach, which is a fraction of the fixtures on the site, not all of them. And the two price series are shown apart and are not comparable with each other: they are taken on different competitions at different moments before kickoff, so a bookmaker's figure in one series says nothing about its figure in the other. Compare books inside a series, never across two.

This is a measurement of the market's prices, not a forecast, and nothing on the page depends on our models being right.

Track record no longer prints a return it cannot stand behind

The return figures on Track Record are now withheld until enough bets have settled to mean anything, the page opens on the last 90 days instead of the new season, and a 180-day window has been added.

If you looked at Track Record over the past two days, you saw a return figure that should not have been there, and one of them was positive. Please do not treat anything you read on that page before today as a result.

Here is what went wrong. The page opened on the current season, and the season had just rolled over on 1 August, so it held two days of football. A return calculated from that many settled bets is not a small result, it is no result at all: at that sample the figure moves by tens of percentage points either way on luck alone. It happened to land positive, which reads as though something was making money.

Three changes. A return is now hidden entirely until at least 200 settled bets sit behind it, and instead of a number you see how many of those 200 have accumulated so far. The page opens on the last 90 days rather than the new season. And there is a new 180 days window, which is the longest we can score and by some distance the most trustworthy figure on the page.

Hit rate is still shown everywhere, including on the season tab. It survives a small sample far better than a return does, because it does not depend on the price. Only the return is withheld.

Each card now also states what each of its two figures is counted from, because they are not the same set: hit rate covers every settled pick, while the return covers only the ones we hold a recorded price for. Those two counts differ, and side by side without labels they looked like a contradiction.

What this does not do: it does not change any pick, any model, or anything you have tracked. And it does not make the numbers better. The honest 180-day figures are the ones now on the page, and you should read them as history rather than as a forecast.

Open Track record

July 2026

The model's forecasts are on the front page, without an account

Home now opens with a match of the day and six upcoming fixtures carrying the model's full 1X2 forecast — visible whether or not you are signed in.

Home used to lead with the signals list, and on a day when the model finds no disagreement with the market that list is empty — so a visitor who was not signed in could arrive at a page that was mostly a sign-up form. That was never the intent: the 1X2 forecast has always been free, and it is already published on our public match preview pages for anyone to read.

Now it is on the front page too. Home opens with a match of the day — the fixture with the most to say, not simply the next one to kick off — showing the pick, all three probabilities, and whether both families of models agree. Below it are the next six fixtures we have a forecast for, each with the same figures. None of it is blurred and none of it needs an account.

There is also a strip of the things that are true every day: how many matches are on, a clock counting down to the next kick-off anywhere in the world, how many fixtures ahead have a forecast, and how many of the leagues we model are in season. Below the board, eight cards for the rest of the site.

Your betting journal has a place on the page now too. If you track picks, it shows your balance, your profit and what is still open. If you have never tracked one, it offers to follow one of the forecasts above in a single click, which settles itself when the match finishes.

What has not changed: where the model disagrees with the market is still the paid part, and it is still further down the page — two of those a day without an account, five with a free one. Forecasts only exist for the leagues we model, so most of the fixtures in a given day's list will not have one, and a card that says the model sits above the market price is telling you the two numbers differ, not that the bet will win.

Open Home

Back a forecast without leaving the front page

Every fixture on Home now carries a Track button that logs the model's pick in My Picks and settles it when the match finishes.

Home shows the model's pick on seven fixtures — the match of the day and six more — and until now there was nothing to do about any of them without going somewhere else first. Each one now has a Track button. It saves the model's own pick for that match, and the entry settles itself when the match finishes, so your record builds without you writing anything down.

If you are not signed in the button still works: it remembers which fixture you wanted, takes you through sign-up, and saves the pick when you land back on the page.

Two things it deliberately does not do. It does not place a bet anywhere, and it does not choose a stake — it records what the model thinks so that you can see, later, whether following it would have been worth it. And it only offers the model's pick on the 1X2 market; anything else you want to track, you still enter yourself in My Picks.

The three labels beside the match of the day — which side the model backs, whether both of our methods agree, and whether the model rates its pick above the market's price — used to look like buttons and were not. They are now plainly labels, and each explains itself when you hover or tab to it.

Open Home

Tofiko opens on a summary now

A new Home view shows what is on today, what is coming, and where your money stands — instead of dropping you into the World Cup hub.

Opening Tofiko used to drop you into the World Cup hub. That was the right place to land in June; it stopped being the right place on 19 July, when the tournament ended.

There is now a Home view instead. It shows how many matches are on today and how many are in play, the signals coming up over the next six days, which covered leagues are between seasons and when each returns, and how the model has done over the last 90 days. If you track bets in My Picks, your balance, open bets and money at risk sit there too.

Home only shows a section when that section has something in it. On a quiet day in the middle of the off-season you will see a shorter page, not a screen of empty panels — and if we cannot reach something, it says so rather than pretending there was nothing to show.

The World Cup has not gone anywhere: it is still under Tournaments, now with past editions as well.

Open Home

Past World Cups, not just the last one

The World Cup section now opens on an edition picker — 2026, 2022, 2018 and 2014 — with every result and the group tables.

The 2026 World Cup finished on 19 July, and until now the section still opened as though it were being played. It now starts with an edition picker: 2026, 2022, 2018 and 2014.

2026 keeps everything it had — the group tables, the bracket, and the match pages with line-ups, the goal timeline and the statistics.

The three earlier tournaments are an archive. Every match and every score, laid out by the round it was played in, so extra time and penalty shoot-outs read as what they were rather than as a bare scoreline. 2018 and 2022 also have their final group tables; 2014 does not, because that is as far back as our data source publishes them.

What the older editions do not have is line-ups, goal timelines, match statistics or closing odds. Those were never collected at the time and cannot be recovered, so each archived tournament says so on the page rather than showing you an empty tab.

One correction while we were in there: the World Cup's league table page was published under the wrong name — it read "Iraq Cup". If you opened /standings/iraq-cup and wondered why it showed World Cup groups, that is why. It is now at the World Cup table, and the old address forwards there. The Women's World Cup was mislabelled the same way and is also fixed.

Open World Cup

Every league table, on its own page

218 league tables you can read and share without signing in — one page per competition, plus an index of all of them.

Each of the 218 competitions we cover now has its own page — for example the Premier League table — with played, won, drawn, lost, goals, goal difference, points and recent form, and the promotion, European and relegation places the competition itself decides.

These pages are public. You can send one to someone who has no account, and it opens on a phone without the app loading first. The index at all league tables lists every competition by country.

Most of them are finished seasons right now — the northern hemisphere is between seasons — and each page says so, with the date the season ended. Where a season is running, the page says when the table was last collected.

The interactive table is unchanged and still a click away from each page: Home and Away splits, the Form view, expected goals on the six leagues our chance data covers, and the club detail panel.

Open Standings

Expected goals on the league tables

A fifth Standings view comparing what a club created with what it collected — on the six leagues our chance data covers.

Every league table now has an xG view beside Total, Home, Away and Form. It puts each club's real numbers next to the ones its chances were worth: goals beside expected goals, points beside expected points, and the gap between them.

It covers the six competitions our chance-data provider publishes — the Premier League, La Liga, Serie A, the Bundesliga, Ligue 1 and the Russian Premier League. On the other 212 leagues the tab is not shown, rather than shown empty.

The gap is measured in points, not goals, and that is deliberate: read how to read an xG table for why, and expected points for what the number means. A large gap describes a season that has already happened — it is not a tip.

Open Standings

League tables, rebuilt

Home and Away splits, a Form table, the next opponent, and rows grouped by what the competition actually decides.

Standings used to be one table. It is now four views over the same competition:

  • Total, Home and Away — the same clubs ranked by where they played.
  • Form — the last five matches, with an arrow showing how far that run sits from the club's real position.

Rows are grouped by the outcomes the competition decides — promotion, the European places, relegation — and each group says what it is, rather than leaving you to count rows. Where a league publishes the fixture, the row also carries the next opponent and where that opponent currently sits.

Below the table you now get the provenance: which provider the numbers came from and when they were last collected.

Not every league supplies every part. Where a competition sends no split, no form string or no upcoming fixture, the column is absent rather than blank.

Open Standings

Strategy Lab: tune a rule, then watch it fire

Every published strategy is now a set of rules you can adjust, tested on matches it never saw, with a live board of fixtures meeting the rule right now.

Each strategy is now written as rules you can read and change — the market, the minimum odds, the leagues, the confidence band. Move a control and the record below it is recomputed for your version of the rule, not the published one.

Tuning is tested the honest way: the settings are fitted on older matches and scored on later ones the fit never saw. A rule that only looks good on the matches used to build it will look ordinary here, which is the point.

Firing now lists the upcoming fixtures that currently satisfy the rule. It is empty most of the time, and that is how a selective rule behaves — candidates usually only qualify in the last hour before kickoff, once the closing prices settle. An empty board is the rule declining to bet, not a fault.

The status on a strategy card describes how much evidence there is, not whether we endorse it. Read the record underneath before acting on any of them.

Open Strategy Lab

Today's Edge, as a dashboard

One screen for the day: what the models flag, split into the leagues they are calibrated on and the ones they are still exploring.

Today's Edge is now a dashboard rather than a list. It opens on the day's fixtures where a model disagrees with the market, and it separates two things that were previously mixed together:

  • Core — leagues the models are fitted and calibrated on.
  • Exploratory — leagues where a model runs but has not earned a calibration yet. These are labelled, every time they appear.

How many rows you see depends on your plan, and the screen says so instead of going blank. An empty day is stated as an empty day — off-season and quiet midweeks are real, and padding them with weak selections would be worse than showing nothing.

Open Today's Edge

Match previews you can link to

A public index of upcoming fixtures with a page per league and per match — readable without signing in, and shareable.

Match previews is a public section: an index of the leagues we cover, a hub per league, and a page per fixture with the model's read on it, the recent form of both sides and what the market is offering.

Because the pages are public, you can send one to someone who has no account. The deeper numbers — the model's edge over the price, the goal expectancies — stay inside the product for subscribers, and the page says which is which instead of hiding the boundary.

Coverage follows the season: leagues appear as their fixtures are published and drop out when they finish.

Open Match previews