Read this first. This prices the 90-minute result of a group-stage match. It's not built for knockouts (extra time and penalties change everything) or dead rubbers (teams rest starters once qualified). Ratings reflect team strength, not lineups or injuries. Fair (no-vig) lines aren't edge until you de-vig the book's price. Use the de-vig tool below, and beat the closing line, not the opener.
The Engine
Price a match pick two teams
Win / Draw / Loss
ρ-sensitivity band (the draw & AH-0 prices depend on an uncalibrated ρ, so here is the range)
Totals
Asian Handicap ladder
Cover probabilities from Team 1's side
Win = your bet wins, Push = stake returned, Loss = bet loses. Quarter lines (e.g. -0.75) split the stake. The pick'em line (fair odds near even) is highlighted.
| Line (T1) | Win % | Push % | Loss % | Fair odds |
|---|
De-vig & edge finder
Is it actually value? enter the book's prices
Type the sportsbook's American odds. The tool strips the vig (proportional method) and compares the market's true probability to Voros. Edge is the gap, never the raw fair line. Leave a field blank to skip it.
Model lenses
Voros line, with a correlation-aware reality check
Voros prices the line (it's the only model with a native draw). Fogle and Elo only confirm direction. They are not independent votes: Voros–Fogle r = 0.92, Voros–Elo r = 0.93 (77 to 87% shared variance). Treat agreement as one shared signal counted three times, not three confirmations.
All 72 group matches
Precomputed board click a header to sort, click a row to load it
Every group-stage fixture priced at the current ρ. This is the data the moneyline page consumes. Draw % and the tightest games (closest to a coin flip) are where AH-0 and draw-no-bet value tends to hide.
| Match | Site | T1 win | Draw | T2 win | xGoals | AH-0 T1 | O2.5 |
|---|
How it works & what to distrust
The engine (verified to machine precision against Voros's own sheet)
Each team carries a log-goal rating and a scale (an additive over/under dial). For a match:
logit = (rating1 - rating2) + 0.342455 × HFA
goal_share = 1 / (1 + e^(-logit))
λ_total = exp(0.758236 + 0.235143×|logit| + (scale1 + scale2) + 0.0094)
λ1 = λ_total × goal_share, λ2 = λ_total × (1 - goal_share)
Two Poisson draws give the scoreline; a Dixon-Coles correction lifts the low-score draws (0-0, 1-1) that independent Poisson understates. Win/draw/loss, the handicap ladder, and totals all fall out of the resulting score grid. My re-implementation reproduces Voros's own logit and λ columns to machine precision across all 72 fixtures.
What to distrust (the gauntlet's surviving cautions)
- ρ is uncalibrated. Without realized goal-margin data, ρ is a literature default. The draw and AH-0 prices, exactly the bets you'd target, carry real model uncertainty, which is why the ρ-band is shown.
- The models are redundant. 0.92 to 0.93 correlation means "all three disagree with the market" is usually a shared blind spot, not three confirmations. The lens panel flags it but won't bless it.
- Voros's edges sit on its thinnest data. Its biggest disagreements with consensus are CAF and AFC sides. Treat those as leads to chase down, not locks.
- Squad / vintage. Ratings reflect team strength, not June 2026 lineups or injuries. Confirm form before betting.
- Closing line. A fair-line edge is only an edge if it beats the de-vigged closing price.