How the market line is computed
eo_market — de-vig, median, renormalise, and the coverage rule behind every published line.
source: "eo_market" is a derived line: an aggregate of several bookmakers and exchanges with
each one's margin removed. It is not any single book's price, and no contributing book is ever
named.
The steps
De-vig each contributor. A bookmaker's prices imply probabilities summing to more than 1 — the excess is their margin. Each contributor's prices are converted to probabilities and normalised so they sum to 1, recovering that book's implied fair view.
Take the median per outcome. Across contributors, the median fair probability — not the mean. A median is resistant to one book being briefly mispriced or stale, which is exactly the failure mode that matters here.
Renormalise. Medians taken independently per outcome don't necessarily sum to 1, so the set is rescaled until it does.
Convert back to a price. price = 1 / probability, published as decimal odds.
The consequence you can verify: the implied probabilities of a market's outcomes sum to almost
exactly 1. Sum 1/price across a market's outcomes and you should land within rounding distance
of 1.0 — a raw bookmaker market would sum to noticeably more.
The coverage rule
A line is published only when at least two independent contributors priced that outcome. One contributor is not a market, so no row is emitted at all rather than a single book's price wearing an aggregate's label.
book_count reports how many contributed — always present on eo_market, never below 2, typically
2–4. Treat it as a confidence signal: a line built from 2 contributors is thinner evidence than one
built from 4.
Why no book is named
Naming contributors would make the line a price-comparison surface, which is a different product with a different legal posture. The published line is a descriptive statistic about the market, not a shopping list. So there is no bookmaker name, no per-book price and no "via" attribution anywhere in the API — by construction, not by filtering.
What it is and isn't
eo_market describes what the market thinks. It carries no accuracy gate because it isn't a
forecast — it's a measurement of prices that existed. It is the right baseline to compare a model
against, and the right input for anything that needs a market-implied probability.
It is not our opinion. That's the model line, which is a separate source and held to a much stricter standard.
Freshness
Lines are appended only when something changes. Consecutive captures can be far apart without
the data being stale — a gap means the price held. Judge freshness by captured_at on the newest
row for a market, and see odds movement for reading a series.
For the conceptual background on de-vigging, the marketing site has a longer explainer at esportsodds.gg/learn/devig-fair-odds.