Every moving part, explained

How everything
works

The short version: we read what bookmakers are charging for a game, strip out their margin to recover the real probability, and write that number down before kickoff so it can be graded afterwards. While the game is playing we keep pricing it, and if a call we published gets strongly ahead we tell you — because that is when a cash-out is worth taking. Games no bookmaker is quoting yet get a rating of our own, built from results, and it is always labelled as such. Everything below is the long version, including the parts that are switched off and why.

I

The NFL pipeline

Six stages. Every number on the board is the output of this exact sequence, and each stage names the feed it came from.

  1. 01

    Read the schedule

    Every game of the season — the Hall of Fame game, three preseason weeks, the regular season and the play-offs — with its stage, week, quarter scores and live clock. This is the backbone: it describes a whole season, which an odds feed cannot, because a bookmaker only lists what it is currently pricing.

    source · API-Sports
  2. 02

    Take the market price

    Five bookmakers quote each game in this feed — Bet365, Pinnacle, Marathon, BetVictor and 1xBet — on the moneyline, the handicap and the total. We average them in implied-probability space rather than averaging the odds themselves, which would bias the result. One measured limitation: books only start quoting about a day or two before kickoff, so most of the season carries no market price at any given moment.

    source · API-Sports odds
  3. 03

    Remove the vig

    A bookmaker prices a two-way market to about 104-108%, not 100%. That overround is their margin, and it is the reason raw odds overstate every outcome. We strip it out so the probabilities are fair and sum to exactly 100%. This is the single most important step, and it is what separates a price from a probability.

    method · de-vig
  4. 04

    Rate the rest ourselves

    A game no book is quoting still gets a number, from an Elo rating built only from completed results — margin of victory counted logarithmically so one blowout cannot dominate a season, last season regressed towards the mean and carried forward, preseason weighted at a quarter because starters sit. It is capped at 95%, because no football game is a certainty. It is shown marked est and never blended into a market price.

    model · Elo power ratings
  5. 05

    Write the call down

    Before kickoff, the board's read is stored in the database: the side, the probability, the lines and what each signal said. Separately, as the game approaches, the last price we see is stored as the closing line. The database refuses a closing price once kickoff has passed, so a number seen after the whistle can never be recorded as one seen before it.

    method · capture
  6. 06

    Grade it in public

    Each finished game is settled against the real final score and scored by Brier — the squared error of the stated probability, where 0.250 is a coin flip. Calls stored before kickoff are labelled as captured; older ones, priced after the fact from odds that outlive the game, are labelled as reconstructions. Both are published, including when the number is bad.

    output · the record
II

The alert, on a real game

Stage 05 stores a call before kickoff. This is what that buys you once the game is being played — the same live model, replayed against the real scoring plays, including the ones where it stayed quiet.

Worked example · a real game

Commanders at Ravens

Before kickoff the board called Ravens at 59%. Here is what happened next.

  1. Q1 10:16Commanders 07 RavensRavens 78%+19pp

Alert sent — cash-out window open

“We called Ravens at 59% before kickoff. They are now 78% to win it. If you took that call, your sportsbook's cash-out is likely showing a strong number right now.”

Final: Commanders 341 Ravens.

Recomputed from the same live model that runs in production, against the real scoring plays of this game. An alert reports a position, not advice — cash-out happens at your sportsbook. 21+ where permitted.

III

When an alert fires, and when it doesn't

Three conditions, all required. Each one exists to rule out a different way of being annoying or wrong.

  1. 01

    The position has to be in profit

    A bet returns the ratio between the price you took and the price now. So a call is worth banking exactly when our live model puts it above the probability we published before kickoff — at that point cashing out returns more than the stake, and below it less. No absolute level is required: a call made at 45% and now running at 55% is in profit, and one made at 85% and still at 85% is not, however commanding it looks.

    line · any profit
  2. 02

    It has to have improved on what we published

    Any improvement at all counts, so windows are common and many are slight. That is a deliberate trade: more of them, each worth less, and some on positions that go on to lose. A sportsbook also prices its own cash-out with a margin, so a position barely in profit here may be close to break-even there.

    margin · none
  3. 03

    The game has to still be running

    Cash-out only exists before the final whistle. Once a game ends the bet simply settles and there was never a decision to make, so an alert then would be an email about something you cannot act on.

    rule · in play only
IV

Your account, and what we keep

What it unlocks

The live board, the archive terminal and your account page. The landing page, the method page, the results record and the golf terminal are open to everyone — the gate is on the working boards, not on the evidence.

What we store

An email address and a password. The password is hashed with bcrypt inside the database and never reaches this application, so a compromise of the site cannot reveal it. There is no name, no payment detail and no tracking profile.

How the session works

Signing in sets a cookie signed with a secret only the server holds. Nothing about the session is stored server-side, and the cookie cannot be forged or replayed against the database directly.

What alerts would mean

Cash-out alerts are built but switched off, and no email has ever been sent. Turning them on is a deliberate act, not a side effect of a deploy — and when it happens it sends one message per game, never a repeat of the same one.

V

The golf terminal

A separate board with a separate source, and one important difference worth stating plainly.

Where it comes from

Data Golf, which supplies the tournament field, live position during a round, and player skill ratings broken down by driving, approach, short game and putting.

Why it is not de-vigged

The probabilities in that feed sum to exactly 1.0, which means they are a model's output rather than a set of bookmaker prices. There is no margin in them to strip, so de-vigging would be meaningless — and the board says model rather than market for that reason.

How an outright field is handled

Where a real bookmaker field is priced, a 150-player market cannot be de-vigged by simple proportion the way a two-way market can. It is solved with the power method: raising every implied probability to an exponent found by bisection until the field sums to one.

What it does not have

No capture, no closing lines and no cash-out alerts. Those are built on the NFL board and have not been extended here, so the golf record is a live read rather than a graded one.

VI

The college terminal

The same machinery as the NFL board pointed at a far bigger, far more thinly priced season.

Same model, different league

College football is the same two-way market as the NFL — no draw — so the de-vig, the goal-free win probability and the capture path are shared rather than rewritten. What is new is a normaliser: this feed uses its stage field to name the division rather than the season phase, and a college week 19 is a late week rather than a play-off round.

Why only FBS

The season carries 1,679 games across FBS, FCS and Division II/III. Only FBS is priced by bookmakers in any depth, so the board takes those 874 and leaves the rest — a game nobody quotes is a game the board can say nothing about.

Coverage is the first number

This feed quotes a minority of the slate, including real FBS matchups that bookmakers certainly price. So the record reports how many finished games could be graded at all, beside how many were called right. Unpriced games count as neither hits nor misses: a board can always look more accurate by saying less.

When a price appears

Roughly a day or two before kickoff, not weeks ahead. That is why the board is driven on a schedule rather than by whoever happens to visit — the window in which a call can honestly be stored is narrow, and a Saturday slate resolves inside an afternoon.

VII

The World Cup archive

A different sport and a different model. The tournament is over, so this terminal is a finished record rather than a live board — and because football has a draw, its market is three-way and a goal model does work the NFL never needs.

  1. 01

    Pull the odds

    Every market starts as real bookmaker prices. For each fixture we read the moneyline (home/draw/away) from every bookmaker that prices it, then average them into a consensus — more books, more reliable.

    source · The Odds API
  2. 02

    Remove the vig

    Bookmakers price every market slightly above 100% — that overround is their margin. We strip it out (“de-vig”) so the probabilities are fair and sum to exactly 100%. This is the single most important step.

    method · de-vig
  3. 03

    Fit a goal model

    For each fixture we solve for the pair of Poisson scoring rates whose implied win/draw/loss best matches the fair market. That score matrix gives us every goal market — over/under, BTTS, clean sheets, the most-likely scoreline and the full correct-score grid.

    model · Poisson
  4. 04

    Render the desk

    The dashboard consumes normalised JSON from server-side routes, so the interface is identical whether the data is live or sample. Upstream calls are cached and shared across visitors to respect the free quota.

    output · the terminal
VIII

The tabs

Eight views onto the same de-vigged consensus and goal model.

Live

In-play scores, recent results and upcoming kickoffs, refreshed while a game is actually on.

Matches

Per-fixture win/draw/loss, expected goals, over/under lines, clean sheets and the correct-score grid.

Winner

Every team's probability of lifting the trophy, de-vigged from the outright market.

Predictor

Pit any two teams — even unscheduled — through the same goal model, with a neutral-venue toggle.

Goal Threat

Players ranked by their chance to score in the next fixture, from anytime-goalscorer odds.

Bets

A backtest of the model's flat-stake picks against real settled results — honest P&L, not a sales pitch.

Edge

Where the fair price beats the best bookmaker price: positive expected-value spots from line shopping.

Groups

Group standings and qualification context for the tournament structure.

IX

Where the data comes from

Every board in both terminals, and the feed behind it — including the ones running on sample data. This is the same text the info point beside each board shows, so the two can't drift apart.

NFL terminal

BoardAPI-Sports — schedule, live scores and five books of prices
One feed does all of it. API-Sports' American Football endpoint carries the whole calendar — the Hall of Fame game, all three preseason weeks, the regular season and the play-offs — and states each game's stage, week, quarter scores and live clock outright. The same feed carries prices from five bookmakers: Bet365, Pinnacle, Marathon, BetVictor and 1xBet, quoting the moneyline (Home/Away), the handicap (Asian Handicap) and the game total (Over/Under). We average those in implied-probability space and strip the bookmaker margin out, so what you see sums to exactly 100% rather than the 104-108% a book actually prices. The bookmaker count on each game tells you how many were behind that number. One honest limitation, measured rather than assumed: books only start quoting a game about a day or two before kickoff. Five were quoting a game eleven hours out and none were quoting the games three days out. A game nobody is quoting yet still appears, carrying our own power rating instead — marked est, and never mixed into the market number, because a rating built from scorelines and a price built from money are different kinds of claim. Play-off fixtures stay off the board until the teams are known.
EdgeNot currently available
This board looks for an outcome where a single bookmaker pays longer than the whole market's de-vigged price, which is expected value if the consensus is right. It needs each book's individual quote to compare against the consensus. The current feed gives us a consensus but not a reliable per-book breakdown across every market, so rather than show a number we cannot stand behind, the board shows nothing. It is off, not broken, and this note will change when the underlying prices support it again.
MovementNot currently available
Movement compares a game's price now against the same market a couple of days earlier, which requires an archive of historical odds. Our previous provider sold one; the current feed has no historical endpoint at all, so there is no earlier price to compare against and this board is off. It is worth saying what would bring it back: we already store our own call and the closing line for every game, so once enough games have passed through that, movement can be rebuilt from our own records rather than bought.
StandingsAPI-Sports, falling back to ESPN — live standings
Records, points and streaks come from API-Sports' American Football feed, cached for an hour, with ESPN's public standings as a fallback if that plan does not cover the running season. Note what the table shows before the season opens — these are preseason records, because that is the phase being played; the board switches to regular-season records the moment week 1 starts, and preseason results never carry into them. The 1–7 playoff seeds are computed here rather than taken from a feed: four division winners ranked by win percentage, then the three best remaining teams per conference, the same rule for live and sample rows alike.
LeadersNot currently available
Player touchdown props do exist in the current feed, but at a single bookmaker. De-vigging is the act of averaging across books and removing their collective margin; with one quote there is no consensus to average and no way to tell the book's margin from its opinion. Showing that single price beside numbers built from five books would misrepresent what it is, so this board stays empty rather than dressing one quote up as a market read.

World Cup terminal

LiveAPI-Football — live fixtures feed
Scores come from API-Football (/fixtures), including the live elapsed minute, and refresh automatically while this tab is open. The Odds API scores feed is a fallback.
MatchesThe Odds API — bookmaker H2H, de-vigged
Match win/draw/loss probabilities come from a de-vigged consensus of bookmaker moneyline (H2H) odds. Goal and scoreline markets are read off a Poisson model fitted to that same consensus.
GroupsAPI-Football — group standings
Group tables come straight from API-Football (/standings) and update as results land. The top two of each four-team group advance.
WinnerThe Odds API — outright winner market, de-vigged
Tournament-winner odds are a de-vigged consensus of the 'FIFA World Cup Winner' outright market across every available bookmaker.
PredictorModel — Poisson over de-vigged team strengths
For unscheduled pairings there is no direct market, so team strengths are derived from the de-vigged outright odds and run through the same Poisson model used everywhere else.
Goal ThreatAPI-Football — tournament top scorers
The leaderboard is real top-scorer data from API-Football (/players/topscorers), ranked by goals then assists. If unavailable it falls back to The Odds API anytime-goalscorer probabilities.
BetsBacktest: API-Football · live tracker: The Odds API
The backtest replays finished WC2026 fixtures against their real pre-match consensus odds (captured offline from API-Football) through the same tested engine. The live tracker settles model-favourite bets against live results from The Odds API.
EdgeThe Odds API — best price vs de-vigged consensus
The value list compares every bookmaker's best price against the sharp de-vigged consensus for the same outcome, and shows only those where the price beats fair value (+EV). It shares the matches odds cache, so it costs no extra quota. Alongside it, the goals-market edges compare our Poisson read against API-Football's own over/under prices per fixture. An empty list is the normal state of an efficient market, not a failure.
InjuriesAPI-Football — injuries & suspensions
Team news from API-Football (/injuries): players ruled out or carrying a late fitness doubt, deduped to each player's latest status. Availability materially affects match outcomes.
SignalsFusion — Market + Model live · Social & Online coming
CacheOut fuses independent signals per match. Two are live and genuinely fused: the Market signal (a de-vigged consensus of bookmaker odds) and a second Model read (API-Football's own win/draw/loss prediction). The Social signal (sentiment across X, Reddit, TikTok and YouTube) and the Online signal (virtual online-league results) are modelled placeholders, shown but not yet contributing, until their feeds are connected.
X

What the numbers mean

Every term on a match card, in plain language. The same definitions power the in-app tooltips.

Win / Draw / LossW/D/L
The chance the home team wins, the match is drawn, or the away team wins. The three add up to 100% — they're a de-vigged consensus of bookmaker moneyline odds.
Expected goalsxG
The average number of goals the model expects each team to score in this match. It's the scoring rate that feeds every goal market below — not a prediction of the exact final score.
Both teams to scoreBTTS
The probability that both teams score at least one goal (i.e. the final score is not a clean sheet for either side).
Clean sheetCS
The probability a team concedes zero goals — i.e. keeps a clean sheet. 'CS BRA' is the chance Brazil's opponent fails to score.
Over / UnderO2.5
The probability the two teams combine for more than a given number of goals. 'O2.5' is the chance of 3 or more total goals; the Under is simply 100% minus the Over.
Most likely scorelineMost likely scoreline
The single exact score with the highest probability under the model. Even the likeliest scoreline is usually well under 20% — football is high-variance, so treat it as the modal guess, not a forecast.
Correct-score gridCorrect-score grid
A heatmap of every exact scoreline's probability (home goals down the side, away goals across the top). Brighter cells are more likely; it's the full picture the 'most likely scoreline' is drawn from.
De-vigged (vig removed)VIG
Bookmakers price every market slightly above 100% — that overround is their margin (the 'vig'). We strip it out so the probabilities are fair and sum to exactly 100%. The 'VIG' figure is how much was removed.
Bookmaker consensusbooks
These numbers aren't one bookmaker's view — they're an average across every bookmaker that priced the market. 'N books' is how many fed this fixture; more books means a more reliable consensus.
Consensus odds (decimal)ODDS
The actual decimal price a bet would get, averaged across bookmakers — still including the margin. Decimal odds of 2.50 means a winning £1 stake returns £2.50 (£1.50 profit). These are the real prices behind the de-vigged percentages.
Win probabilityWin %
Each team's chance of winning the game, from a de-vigged consensus of bookmaker moneylines. The NFL market is two-way (no draw priced), so the two percentages add up to 100%. The split bar underneath shows the same number visually — the centre tick is 50/50.
Point spreadSpread
The bookmakers' points handicap for the game, shown against the home team. 'Chiefs -3.5' means the market makes the Chiefs a 3.5-point favourite: they must win by 4+ to 'cover'. A plus number means the home side is the underdog and can lose by up to that many points and still cover.
Cover probabilityCover %
The chance the home team beats the spread — wins by more than the handicap — de-vigged from the spread market's two prices. It hovers near 50% by design: bookmakers set the line so both sides are roughly a coin flip.
Game total (over/under)O/U
The market line for the two teams' combined points, priced as Over or Under. 'O 44.5 52%' means a 52% de-vigged chance the teams combine for 45+ points. Higher totals mean the market expects a shootout; lower, a defensive grind.
Model pickModel pick
The side the de-vigged bookmaker consensus makes the favourite, with its win probability. Because these probabilities come from the market itself, betting the pick at market prices has no built-in edge — it's a read on expectations, not betting advice.
Playoff seedSeed
The team's current playoff position in its conference: seeds 1–4 go to the four division winners (ordered by record), seeds 5–7 to the three best non-winners (wild cards). Seven teams per conference make the playoffs; the 1 seed gets the only first-round bye.
Point differential+/-
Season points scored minus points allowed. A positive number means the team has outscored its opponents overall — a steadier quality signal than the win-loss record, which can swing on close games.
Anytime touchdownAnytime TD
The probability a player scores a touchdown at any point in their next game, de-vigged from bookmaker anytime-TD props. Rushing and receiving TDs count; a quarterback's passing TDs do not.
CapturedCaptured
The call was written to the database while the game was still unplayed, and the timestamp says when. It matters because the alternative is pricing a finished game from odds that outlive it: honest, but reconstructed, and you would have only our word that the number was not chosen once the score was known. Only a captured call can be graded without that caveat.
Brier scoreBrier
The average squared error of the stated probability. Lower is better, and 0.250 is what you would score by calling everything a coin flip. It exists because a hit rate alone flatters a 51% call that wins and punishes a 90% call that loses, when the first was barely an opinion and the second was a real claim.
Closing-line valueCLV
How the board's price compares with where the market finished before kickoff. The closing line is the sharpest price a market produces, so beating it consistently is the usual evidence that a model knows something. Measured in percentage points, and over a small sample it is mostly noise.
Closing lineClosing line
The last price the market showed before kickoff. It is the price the most money has been bet into, which is why it is treated as the market's best guess and used as the benchmark rather than the opening price.
Fair priceFair
The decimal odds a probability implies with no margin attached — 50% is 2.00, 80% is 1.25. A bet struck at the fair price has an expected value of exactly zero by construction, so a profit at fair prices is variance rather than edge. A real bookmaker prices below fair; that difference is how they make money.
Unitu
One flat stake. Results are quoted in units rather than currency because this site has never taken a bet and a pound sign would imply that it had. Ten units a call means every call is staked the same, so no single result can dominate the record.
Return on investmentROI
Profit divided by everything staked, not by the number of bets. Backing ten calls at ten units each stakes 100 units, so a 12-unit profit is a 12% ROI. It is the figure that makes a long run of small stakes comparable with a short run of large ones.
Hit rateAccuracy
The share of calls that named the winner. Read it beside the Brier score rather than alone: a board that only ever calls heavy favourites will post a high hit rate while saying almost nothing, and one that takes real positions will post a lower one while being better informed.
CoverageCoverage
How much of the finished slate could be graded at all. A game the odds feed never quoted carries no call, so nothing was ever claimed about it and it counts as neither a hit nor a miss. Coverage sits beside the record because a board can always look more accurate by saying less.
No priceNo price
No bookmaker in the feed was quoting this game when the board last looked, so there is no market to de-vig and the board makes no call. It is ordinary rather than broken — this feed carries a minority of the college slate — and a game with no price never enters the record.
Cash-out windowCash-out window
A published call that is now worth more in play than the price it was published at, while the game is still running. That is the only period in which a sportsbook's cash-out is worth taking: once the whistle goes the bet simply settles and there was never a decision to make. The board reports the window; the exit happens at your own sportsbook.
Variance, not edgeVariance
A run of winning calls priced from de-vigged odds is not evidence of beating the market. The fair price already contains everything the market knows, so betting it breaks even in the long run and any short-run profit is the swing you would expect from chance. The record here measures whether the probabilities are well calibrated, not whether following them makes money.
XI

The honest part