WCBBUAPB 22 TAR 31· 3:35 - 2ndUCLCOMO–RCL3:00 PMUCLBET–DOR3:00 PMUCLMNC–RBL3:00 PMWCBBCAM–NCSU6:00 PMWCBBDEL–VT6:00 PMWCBBLAS–RUTG7:00 PMCFBTOL–SAC7:00 PMNBAPHI–DET7:00 PMNBAATL–WSH7:00 PMCFBBALL–MASS7:00 PMWCBBDETM–ILL7:00 PMWCBBNOLA–ALA7:00 PMCBBUMES–HPU7:00 PMCBBLONG–JOES7:00 PMCBBFDU–BTLR7:00 PMNBAMIL–BOS7:30 PMCBBCSUN–WICH7:30 PMWCBBUTC–WKU7:30 PMCFBCMU–EMU7:30 PMNBACHI–NY7:30 PMNBACHA–BKN7:30 PMNHLOTT–BUF7:30 PMNHLCHI–FLA7:30 PMNBACLE–OKC8:00 PMWCBBSTET–LOU8:00 PMNBAUTAH–NO8:00 PMCBBSELA–AUB8:00 PMNBAIND–MEM8:00 PMWCBBJKST–GCU8:00 PMWCBBFDU–TEX8:00 PMWCBBMORG–COLO8:00 PMWCBBLIU–TXST8:00 PMCBBNKU–SDAK8:00 PMNBAMIN–HOU8:30 PMCBBRAD–CAL9:00 PMNBATOR–DEN9:00 PMWCBBCBU–ORST9:00 PMNBAPOR–PHX9:00 PMNBADAL–SA9:30 PMAll scores
bandwagon.Newsletter
Axle 2.078% straight up465 games
Markets · method

How Bandwagon reads prediction markets

Sources, de-vigging, matching, cadence, and the record against the model.

Market prices from Kalshi and Polymarket, shown for analysis. Bandwagon does not take or place wagers. How this works

What this is, and is not

Bandwagon shows and analyses prices that two prediction markets publish about sports. It does not trade, has no buy button and is not run by either market. Where a market is a Bandwagon partner, a line marked "Ad · Bandwagon earns a commission" links to it beside its prices; the prices, the gaps and the model are the same whether a market is a partner or not, and no partner pays for or changes them. "Kalshi" and "Polymarket" are the names of the markets being described. The numbers sit beside Bandwagon's own model (a rating-based probability from the results the site collects, its method) and the crowd's picks (people choosing a side in the app). Nobody is graded.

Sources

Only the operators' own public APIs: Kalshi's public market-data endpoints and Polymarket's public Gamma API. Nothing is taken from an odds aggregator or a sportsbook. Every row stores the source, the source's market id and the time it was read. Each request carries a User-Agent that names Bandwagon and a contact address, and the requests are spaced and counted (below).

MarketAPITerms readStatus
Kalshihttps://api.elections.kalshi.com/trade-api/v2kalshi.com/legal/terms
2026-10-28 · Public market-data endpoints need no key (docs.kalshi.com quick start: market data). The terms page itself was not retrievable when read (HTTP 429); review before launch.
reading
Polymarkethttps://gamma-api.polymarket.compolymarket.com/tos
2026-10-28 · Gamma is public and unauthenticated. The Terms (s.4.2) bar scraping tools on the site and require a written agreement for market-data distributors; they do not license API data. Owner decision recorded in docs/MARKETS.md.
reading

From a price to a probability

The price. The source's own displayed probability for "yes": the midpoint of the best bid and ask when both are quoted and within ten cents of each other, otherwise the last trade. A market with no quote and no trade has no price and is not shown.

De-vig. The prices of a game's mutually exclusive results (home and away, plus the draw in soccer) are divided by their sum so they add to 100%; the sum minus one, the overround, is stored with the number. A soccer game missing a result is not published, because normalizing a partial set would hand the missing result's share to the others. Outside soccer, a single side's price stands as it is with the other side as its complement, and the number is marked not de-vigged. Season-long markets are shown at their raw price: a field of outcomes quoted in whole cents adds to a little over 100%, and the page says so rather than hiding it.

Time. Every market number is shown with the time its price was read, US Eastern. Games show the price from the last pass before kickoff as the closing price once they are final.

Matching a market to a game or team

A market is shown only when it maps. A game market maps when both teams resolve to exactly one catalog team each, by name, short name, abbreviation, alias or a city that only one team in the league uses, and exactly one game between them starts near the time the market gives. High confidence means every name matched a catalog name and the start times agreed closely; medium means a team was found by its city alone, by the reviewed override file, or the start times were further apart. Anything else is unmapped: kept, logged once with the reason, never shown and never guessed (FCS and lower-division opponents that are not in the catalog are the common case). Fixes are lines in a reviewed file in the repository.

MarketKindMappingMarkets
Kalshiawardhigh609
Kalshicricket matchhigh130
Kalshifutures championhigh185
Kalshifutures championmedium155
Kalshifutures championunmapped15
Kalshifutures win totalhigh42
Kalshifutures win totalmedium600
Kalshigame winnerhigh162
Kalshigame winnermedium518
Kalshigame winnerunmapped388
Polymarketawardhigh889
Polymarketcricket matchhigh90
Polymarketfutures championhigh252
Polymarketfutures championmedium5
Polymarketfutures championunmapped15
Polymarketfutures win totalhigh31
Polymarketgame winnerhigh535
Polymarketgame winnermedium210
Polymarketgame winnerunmapped207

How often it is read

Games starting within 48 hours are read every ten minutes; everything else, including the season-long markets, the award markets and the check for resolved markets, hourly. A price is stored on every read; the per-game probability is stored when it moves by half a point or an hour passes. The requests each pass spends, measured from the run log over the last two days:

MarketPassRuns, last 2 daysRequests per runMost in one run
Kalshiaward29813
Kalshifull591654
Kalshinear245837
Kalshiresolve4801
Polymarketaward181313
Polymarketfull481732
Polymarketnear245714
Polymarketresolve4879

The record: market against model

Every night each resolved game is scored. The market's number is its last de-vigged probability from the day before kickoff to kickoff; the model's is its last stored line before kickoff; both are scored on the event "the home side wins" (a draw counts as not winning), with Brier score, log loss and how often the favored side won, on the same games. Resolved season-long markets are scored on their price a week before they resolved; the model has no title probability, so those rows are the market's alone. The record is published as it stands, including where the market is better than the model.

LeagueGamesWhonBrierLog lossStraight-up
College footballKalshi gamesKalshi price530.16650.502779%
College footballKalshi gamesBandwagon model530.14990.478981%
College footballPolymarket gamesPolymarket price530.1650.498879%
College footballPolymarket gamesBandwagon model530.14990.478981%
Premier LeagueKalshi gamesKalshi price100.24980.693250%
Premier LeagueKalshi gamesBandwagon model100.27110.734860%
Premier LeaguePolymarket gamesPolymarket price100.25090.69550%
Premier LeaguePolymarket gamesBandwagon model100.27110.734860%
NBAKalshi gamesKalshi price390.20150.582367%
NBAKalshi gamesBandwagon model390.2270.640662%
NBAPolymarket gamesPolymarket price390.20320.586167%
NBAPolymarket gamesBandwagon model390.2270.640662%
NFLKalshi gamesKalshi price140.17940.539879%
NFLKalshi gamesBandwagon model140.18550.552464%
NFLPolymarket gamesPolymarket price140.17860.538171%
NFLPolymarket gamesBandwagon model140.18550.552464%
NHLKalshi gamesKalshi price440.22250.635358%
NHLKalshi gamesBandwagon model440.22990.651459%
NHLPolymarket gamesPolymarket price440.22350.637359%
NHLPolymarket gamesBandwagon model440.22990.651459%

The model's numbers are on the same games the market was scored on. 0.25 Brier and 0.693 log loss are a coin flip.

What it does not tell you

A market price is a crowd of traders' view with their own fees and positions; it is not a fair price, a forecast Bandwagon vouches for or a recommendation. Thin markets move on small trades; the liquidity and volume the source reports are shown where they exist. Method version 1.0; the code is in the repository (docs/MARKETS.md).

Where Bandwagon's Kalshi and Polymarket prices come from, how they are de-vigged and matched to games and teams, how often they are read, and the running record of market versus model. Market prices from Kalshi and Polymarket, shown for analysis. Bandwagon does not take or place wagers.