Skip to content
Odds & Markets

/methodology

Methodology

Every ranking on this site is reproducible from the definitions below. They are versioned, and each published issue prints the version it was built under, so a number published last month can still be checked against the method that produced it. The constants on this page are read from the module the board ranks from, not restated beside it.

Version
2026.09.2
Effective
2026-09-15
Venues compared
9
Of those, clickable
9

What this site publishes

Market prices as posted by each venue, with the time we observed them. Nothing here is derived from a model, no probability is estimated, no side is recommended and no team is ranked.

Source cadence

Two numbers, and they are not the same number today. The target cadence for pregame core markets is every 60 seconds. The cadence the poller actually runs at for venues on the odds vendor's feed is every 30 minutes, and that is the interval a pregame price is judged against, so the aging and stale thresholds below are multiples of it rather than of the target. A venue read from its own public API is seen on its own cadence and is judged on that one; which feed each venue arrives on is published at /status.

Both are printed because publishing only the target would be a false statement about our own service level, and judging prices against a cadence we do not run would mark every price on the board stale and leave no best price at all. When the poller's pregame lane reaches the target, the two numbers meet and this section says one thing.

There is no in-play comparison at launch: a claim of real time we cannot honour would be worse than a stated cadence of any length. Which feeds are actually recording right now is published at /status.

Definitions

Opener
The opener is the first price this site recorded for the selection at that venue, with the time it was recorded. It is not a claim about the venue's own opening line unless the feed supplied one, in which case that observation is the first entry in the log.
Current
The newest observation on record for a selection at a venue. A poll that finds the same price confirms the observation; it does not create a new one.
Movement
A move is a change of line or price at a venue. The board prints the opener, the current price, the number of moves and the time of the last one; the drawer holds the last 3 moves and the full intraday tape.
Retention
Move history is kept for 48 hours per event and market, up to 400 moves.

A poll that finds the same posting confirms it and is not a move, so a count of moves is a fact about the market rather than about how often we looked. The drawer holds the last 3 moves; the store keeps up to 400 per event and market for 48 hours.

Freshness states

The five freshness states, the condition for each, and whether it may win the best price.
StateConditionWins best
CurrentObserved within one expected source interval. That interval is the cadence the poller runs at, not the target cadence, which is why the two are printed separately above.Yes
AgingHas missed 1 expected interval. Still comparable, still able to hold the best price, and its age is printed.Yes
StaleHas missed 3 expected intervals, or has no observation on record at all. The last value stays on the board, marked, and can no longer be called the best price.No
UnavailableA state rule blocks the venue for this product. The price stays visible and muted, with the reason, the effective date and a link to the authority, and the cell carries no outbound link.No
IndicativeThe contract does not resolve on the same terms as the market it sits beside, under the reviewed mapping. The number is shown with its contract terms and never wins the best price.No

Precedence runs unavailable, then indicative, then age. A source is never silently dropped: removing one quietly is the single failure that makes the rest of a board unreadable.

Consensus

A derived column, not a venue: the consensus of the compared prices. It is never clickable and it never wins the best price, because nobody posts it. It is labelled CNS where it appears. Because no venue posts it, it cannot be clicked and it cannot hold the best price, and it is never presented as a price you could take.

Conversion formulas

A sportsbook posts American odds; an exchange posts a contract price in cents. Both are restated as dollars returned on a $100.00 stake so they can be compared. The restatement is arithmetic on the venue's own posted price. It is not a claim that a wager and an event contract are the same product: spread, partial fill, limits, fees, void rules, settlement wording and state availability can all make equal-looking values non-equivalent.

American odds to payout
Negative odds: stake × (100 ÷ |odds|) + stake. Positive odds: stake × (odds ÷ 100) + stake.
$100.00 at -110 returns $190.91, an implied 52.4 percent restated from that quote alone.
Contract cents to payout
(stake ÷ (cents ÷ 100)) × $1.00, before any settlement fee.
$100.00 at 52¢ returns $192.31 gross, and $190.46 net at a venue that deducts its fee from winnings at settlement.
Cents restated as American
For p = cents ÷ 100: at or above 0.5, −(p ÷ (1 − p)) × 100; below 0.5, ((1 − p) ÷ p) × 100. Both branches meet at a magnitude of 100, and 50¢ reads -100.
52¢ restates as -108. The native cents figure remains the quoted price; the restatement sits behind a toggle and never replaces it.

Fees

Each venue's own published method, never an estimate. A trading fee charged at the trade comes out of the same stake, so it buys fewer contracts and the net payout is below the gross. A fee taken from winnings at settlement is deducted in the net figure. A sportsbook publishes no separate fee: its margin is inside the posted odds, and its posted price is its price. A venue whose method this site cannot cite has no fee and no net stated: the gross is shown, the price is marked indicative, and it is not ranked.

Published fee method by venue.
VenueMethodChargedSource
KalshiTrading fee: 0.07 × contracts × price × (1 − price), rounded up to the centAt the trade, out of the same stake. Nothing at settlement. The net figure reflects it.Kalshi fee schedule, July 2026 update
Polymarket2% of winningsDeducted from winnings at settlement, and reflected in the net figure.Polymarket trading fees
ProphetXNot publishedNo fee and no net stated. Gross shown; the price is indicative and is not ranked.No citation on record
OG MarketsNot publishedNo fee and no net stated. Gross shown; the price is indicative and is not ranked.No citation on record

Worked on the same 52¢ ask: $100.00 returns $192.31 gross at any venue, $186.06 net at Kalshi after its trading fee, and $190.46 net at Polymarket after its settlement share. At ProphetX and OG Markets the net is not stated.

Best price

Every parameter of the best-price ranking, printed from the constant the board ranks with.
Method version1.1
Stake$100
Sidethe selection as listed, each side ranked separately
Ranking basisPayout net of fees, including stake
Gross payoutshown, never ranked on
Feeseach venue's published fee method, a trading fee taken at the trade or a share of winnings taken at settlement; a venue with no published method shows gross only and is not ranked
Order-book price sidethe executable ask
Roundingtwo decimal places at display; the comparison itself is unrounded
Eligible freshnessCurrent or Aging

The ranking is objective across every compared venue. A venue with no commercial relationship is ranked exactly like a venue that links out, labelled price only, and can win. There is no commercial weighting, no tie-break by relationship and no filter by relationship anywhere in the ordering. A candidate that cannot win stays in the result with the reason attached rather than disappearing from it. Ties break on the longest-standing observation and then on venue id, so the same inputs always rank in the same order.

A worked example of all of this, computed by the same functions, sits on the home page.

Rounding

two decimal places at display; the comparison itself is unrounded. Two figures that display identically can therefore sit in a definite order, and the order shown is the order of the unrounded numbers. Lines and native prices are never rounded at all: they are printed as the venue posts them.

Corrections

The price record is append-only. A correction is a later observation with its own timestamp, never an edit of an earlier one. Published issues carry a corrections note and the methodology version they were built under.

If we get something wrong, write to hello@oddsandmarkets.com. A correction that affects a published issue is attached to that issue, dated, and left attached. Open incidents and degraded functionality are published at /status.

Versioning

This document is version 2026.09.2, effective 2026-09-15. The version is bumped in the same change as any definition it describes, so the two cannot move apart. Any published artefact that states a number prints the version it was built under.