BetAgent

How it works

A statistical model, a price to beat, a gate that tests every change on matches it has never seen, and a record that is never edited. In depth, in plain words.

1. The models

Goals

Goals are modelled with a Dixon-Coles bivariate Poisson: each team gets an attack rating and a defence rating, home advantage is a separate term, the low-score cells (0-0, 1-0, 0-1, 1-1) get the Dixon-Coles correction because plain Poisson gets them wrong, and recent matches weigh more than old ones. From the two scoring rates the model reads the whole distribution: match totals (over/under every half-goal line), both teams to score, the first-half total, team totals.

Counts: corners, cards, fouls, offsides, shots on target

Each count is a rate model of its own. A team's rate for a stat is its own recent average, shrunk toward the league's average (a team with ten matches is trusted less than one with forty), adjusted for the opponent (a team that concedes many corners raises the other side's rate) and for home or away. Variance is not assumed to equal the mean: each stat carries a fitted dispersion, because cards and corners are more spread than Poisson says. The result is a probability for every line the market offers, for the match and for each team.

Referee and league effects

Cards and fouls depend on who referees. Each referee has a profile (cards, fouls and penalties per match, shrunk toward the league's referee average by how many matches we have on them). When the referee is announced, the card and foul rates move; when the referee is not known yet, those picks wait or are recorded as "referee unknown". Every league has its own baseline for every stat, and competition type matters: cup matches, European nights and South American cups are tracked separately because they behave differently.

2. The price to beat

Every estimate is blended with the bookmakers' consensus. The consensus is the de-vigged average of the prices recorded across many books, which is the market's own probability. The model's probability is shrunk toward that market probability by a weight that is fitted per stat and per competition type on settled data: where the model has not proven it beats the market, the weight is high and the market dominates; where it has, the model keeps more of its own view.

A pick exists only when the blended probability beats the price by a margin: the expected value at the best recorded price has to be positive after that shrink, and the line has to pass the price filter (enough books quoting it, a price that is not an outlier, not a tail line with almost no history). Most lines on most days do not pass. That is the point.

3. The gate

Nothing goes live because it looks good on the matches it was built on. Every change to a model, a weight or a rule is tested on matches it has never seen: a held-out window of settled matches, scored by log-loss and calibration against the market's own probability. The change goes live only when it is better than what runs now and better than the market on that window. The team-form baseline (just recent form, no model) is the floor: a version that does not beat it is discarded.

4. Weekly refits

Every Sunday morning the shrink weights, the base rates and the calibration are re-fitted on all settled data, and the candidate is tested on the last 14 days it did not train on. Each stat is promoted on its own and only if it is better; what is not better stays as it is. Every version is kept, so any promotion can be rolled back.

5. Closing-line value, the honest measure

Winning weeks happen to bad models and losing weeks happen to good ones. The measure that does not lie over a few hundred picks is closing-line value: the price we recorded against the price at kick-off, when the market knows most. A model that keeps beating the close has an edge whether this week won or lost. Both are shown on the transparency page, with the calibration bands (what we said would happen 60% of the time, how often it happened).

6. Two ledgers, never edited

Nothing in either ledger is edited or deleted. A settlement that turns out wrong (a corrected official stat) is reversed with a new row, not by changing the old one. The public record starts from the day the system was born and includes the losing weeks.

7. A day

8. What it is not

It is not a tipster, not a guarantee, not financial advice. Weeks lose, sometimes several in a row. The information is published for people who want to see a statistical model kept honest in public. Whether and how to use it is your decision and your responsibility; read the terms and disclaimer. 18+ only.