Two tapes, one fixture
Kalshi vs Polymarket in soccer 1X2 markets, part 1 of 4: where a same-time comparison of the two venues exists across 1,973 matched fixtures, and how far apart their last trades print.
My previous post measured how much trading takes place in soccer 1X2 markets on Kalshi and Polymarket: counts, volume and timing, without looking at prices. This series looks at the prices, on the same matched regular-time markets (home win, draw, away win), in four parts:
- Part 1 (this post). Where the two tapes are active at the same time, and how far apart their latest trades sit: by competition, outcome, matchup, and the side of the market each trade came from.
- Part 2. Fees and roles. Which way of pairing the two tapes, taking or resting on each venue, leaves anything after both fee curves; how that changes with the freshness cutoff and the price level; how often it stands. Then the same screens on other market types, events and sports.
- Part 3. Resting on both venues. Where the resting pair’s edge sits by price, where each venue’s book sits, which venue moves first, how soon the second order trades once the first has filled, and a replay of resting orders against recorded order books.
- Part 4. Starting small. Which of the resting orders earn their place, how tight the cross-venue guard should be, and how small an order and how much cash a first real-money test needs.
Parts 1 and 2 look backward. Each comparison pairs a trade with the other venue’s most recent trade: two prints that have already happened, seen after the fact, with nothing said about what followed. Parts 3 and 4 look forward: which venue moves first, how soon the other side trades, and what resting orders would have filled.
The unit throughout is the trade reference. On each venue, fills within the same second on the same outcome and the same taker side are combined into one volume-weighted average price (VWAP) and treated as a single print. Nothing here uses order books.
Summary
1X2 is the largest market type on both soccer tapes. Kalshi: 49.5% of trade rows and 46.6% of contracts. Polymarket: 36.7% and 35.7%, before older untagged markets.
A same-time comparison exists in four groups. Premier League and Champions League in play at a 60 s cutoff, the World Cup at 5 s in play and 10 s in its last pregame hour. No fixture dominates: the busiest holds at most 3.07% of a group’s observations.
The other venue prints within seconds. After a Kalshi trade in the Premier League, Polymarket prints within 5 s in 47.6% of cases and within 60 s in 93.6%. The reverse direction is faster; the World Cup is near-instant.
Polymarket prints below Kalshi, except on draws. Mean absolute gap 1.28 c in the Premier League, 0.69 c in the World Cup. Polymarket is at least 1 c below on 41.3% of Premier League prints and at least 1 c above on 14.6%. The draw is two-sided, and the favourite of an unequal fixture carries the widest offset.
Which side each trade came from sets the sign. Kalshi’s flow is buy-heavy and prints at its ask. For Premier League team wins, Polymarket’s bid-side print averages 1.51 c below Kalshi’s ask-side print, while its ask-side print averages only 1.10 c above Kalshi’s bid side. Like-for-like sides are within half a cent.
The gap does not depend on the freshness cutoff. Mean absolute gap 1.34 / 1.31 / 1.28 c at F = 5 / 10 / 60 s in the Premier League. F sets how much of the clock is in scope and how long one venue’s reference can stand alone: a measure of single-leg exposure, not of the gap.
Nothing in this part says whether a gap exceeds the cost of trading it, or what the prices did next.
Data and definitions
The sample contains 1,973 fixtures across 10 competition-season groups, with scheduled kickoffs from September 12, 2025 to August 11, 2026. Each fixture has a Polymarket and a Kalshi regular-time 1X2 market linked to the same API-Football fixture. The previous trade-count post used an earlier 1,942-fixture snapshot.
The time reference is scheduled kickoff, including for the in-play windows: elapsed wall-clock minutes, halftime included, not the match clock. “In play” means 0–105 minutes after scheduled kickoff; the 55-minute split used in one diagnostic is a clock split, not an observed halftime.
| Term | Meaning here |
|---|---|
| Print (trade reference) | Fills within one second on one venue, outcome and taker side, combined into a volume-weighted average price. The pooled leg merges both taker sides. |
| Buy / sell | Always the taker’s action: a trade record carries only the side that crossed the book, so buy is a taker buying YES (printed at the ask) and sell a taker selling YES (printed at the bid). Nothing in this part assigns a role: routes, which read the same print from the resting maker’s side, are introduced in part 2. |
| Fresh pair | Both venues’ latest prints are at most F seconds old; a pair’s age is the age of its older print. F looks backward. Raising F never changes the prices an observation uses: at a given print, the other leg is always that venue’s latest print. F only decides whether the observation is in scope. |
| Observation | A print on either leg while the other leg is fresh. Per-print statistics weight each observation equally; per-second statistics weight it by how long the pair then stays fresh. |
| Forward horizon H | Whether the other venue prints strictly later and within H seconds of a trade. H looks forward; F and H are independent. |
| Signed gap | Polymarket price minus Kalshi price, in cents per $1 contract. Negative means the Polymarket reference is lower. |
| Team win | Home and away priced separately, then pooled for reporting. It is not a combined contract. |
| Matchup class | A fixture is balanced or unequal from its pregame prices: the VWAP of the last 30 pregame minutes on each venue, averaged across venues and normalised to a 1X2 probability. Unequal when |qhome − qaway| / (qhome + qaway) exceeds 0.30. In an unequal fixture the favoured side is strong and the other weak; the draw is always the draw. |
1. Where the trading is
Trades per fixture is the number to keep in mind for everything that follows. The World Cup traded about 18× the Premier League and 67× Ligue 1 per fixture, and Kalshi printed 1.7× as many trades as Polymarket per Premier League fixture and 4.5× per World Cup fixture. A single freshness cutoff therefore keeps a very different share of each group’s clock, which is why section 2 selects groups before comparing prices.
1X2 within each venue’s soccer tape
A 1X2 market prices the regular-time result of one match as three contracts: home win, draw, away win. On Kalshi it is the game series of each competition; on Polymarket it is the moneyline sports market type, which carries the draw as its third outcome. The table measures this type against everything else in my raw soccer pulls: every market type on both venues, every series and condition, to about August 2026 (4.5 GB and 145 million trade rows on Kalshi, 5.0 GB and 62 million on Polymarket). Trade rows are raw fills, not the per-second prints used below; contracts are Kalshi count and Polymarket size. This is the universe the study is cut from, not the linked fixture population above.
| Venue | 1X2 market type | Files | Share of bytes | Share of trade rows | Share of contracts |
|---|---|---|---|---|---|
| Kalshi |
game
|
50,448 | 43.4% | 49.5% | 46.6% |
| Polymarket |
moneyline
|
58,863 | 24.7% | 36.7% | 35.7% |
On Kalshi, 1X2 is half the tape by trade rows; the next type, match totals, has 12.5%. On Polymarket, moneyline holds 36.7% of rows, and a further 32.6% of rows (41.8% of contracts) sit in older markets that carry no market-type tag, some of which are 1X2 markets too, so the Polymarket share is a floor. Totals are next at 12.8%.
2. Is there a fresh pair to compare?
Availability is measured over the entire clock of every fixture, outcome and window, including the seconds in which nothing traded. A venue is fresh when its latest print is at most F seconds old.
2.2 Where the rest of the clock goes
At any instant, a market is in one of four states: both venues fresh, only Kalshi fresh, only Polymarket fresh, or neither. “Neither fresh” means neither venue traded in the preceding F seconds; it does not mean data are missing.
At F = 60 s, the Premier League in-play clock splits into 78.3% both fresh, 15.7% only Kalshi fresh, 2.63% only Polymarket fresh and 3.38% neither; the Champions League into 69.7%, 18.7%, 4.43% and 7.2%. At F = 5 s, both venues are fresh for 83.2% of the World Cup in-play clock but only 18.9% of the Premier League’s. The excluded clock is mostly one-sided: Kalshi has printed recently and Polymarket has not.
2.3 Groups entering the price study
A competition-season × window qualifies when both venues are fresh for at least 70% of its clock at F = 60 s (coverage rounded to a whole percent, which is how the Champions League qualifies at 69.7%). Each qualifying group then uses the smallest cutoff among 5, 10 and 60 s that reaches 70%. Four groups qualify:
| Competition | Window | Both fresh at F = 5 s | F = 10 s | F = 60 s | F used |
|---|---|---|---|---|---|
| Premier League 2025/26 | In play (0–105 min) | 18.9% | 34.0% | 78.3% | 60 s |
| Champions League 2025/26 | In play (0–105 min) | 18.9% | 31.1% | 69.7% | 60 s |
| World Cup 2026 | In play (0–105 min) | 83.2% | 93.2% | 99.1% | 5 s |
| World Cup 2026 | Last hour before kickoff | 67.9% | 85.1% | 99.6% | 10 s |
This is a scope rule for the fresh-pair comparisons, not a ranking of profitability. Groups that do not qualify simply have too little time with both venues recently active for a same-time price comparison; an asynchronous strategy in those groups is a different question.
Fixture concentration. Every rate below pools observations across a group’s fixtures, so a few busy matches could dominate it. For each group, the curve counts fresh prints on the two cross-side action pairs of section 4 (a Polymarket buy against a Kalshi sell, or the reverse) per fixture at the group’s F, busiest fixture first.
| Group | Fixtures | Fresh observations | Busiest fixture | Busiest 5 | Busiest 10% of fixtures | Gini | Median per fixture |
|---|---|---|---|---|---|---|---|
| Premier League 2025/26 · in play · F = 60 s | 339 | 1,299,032 | 1.09% | 5.2% | 26.2% | 0.40 | 3,054 |
| Champions League 2025/26 · in play · F = 60 s | 189 | 768,173 | 3.07% | 12.9% | 36.7% | 0.55 | 2,099 |
| World Cup 2026 · in play · F = 5 s | 104 | 1,838,197 | 1.5% | 7.4% | 15.9% | 0.19 | 17,622 |
| World Cup 2026 · last pregame hour · F = 10 s | 104 | 594,744 | 1.94% | 9.1% | 18.4% | 0.24 | 5,276 |
The busiest fixture holds at most 3.07% of its group’s observations and the busiest five between 5.2% and 12.9%. The Champions League is the most uneven (Gini 0.55; its busiest tenth of fixtures holds 36.7%, and its busiest fixture has 11× the median fixture’s observations), the World Cup in play the most even (0.19). The pooled rates that follow describe their group rather than a handful of matches; their uncertainty is nonetheless closer to the fixture count than to the observation count.
2.4 Which leg goes stale
The four states above pool both taker sides of each venue. Section 4 compares prints from one side of each venue, a Polymarket buy against a Kalshi sell for instance, and such a pair is fresh only when both those sides printed within F seconds.
Per taker side, the picture is one-sided in a different way. In the Premier League at F = 60 s, the four pure pairs are fresh on only 44.9%–68.7% of the in-play clock, against 78.3% pooled, and the missing leg is each venue’s sell side: PM buy / K sell spends 22.0% of the clock with only Polymarket fresh, because Kalshi’s sell-side print is stale, while PM sell / K buy spends 32.9% with only Kalshi fresh. buy/buy is the best-covered pair (68.7%) and sell/sell the worst (44.9%). In the World Cup’s last pregame hour at F = 10 s the asymmetry is extreme: PM sell / K buy is 58.0% “only Kalshi fresh”. Kalshi’s buy-heavy flow, which section 4 sees from the price side, is the same fact seen from the activity side.
2.5 After a trade, how soon does the other venue trade?
This asks about trade seconds rather than the whole clock. For each source-venue trade second, does the destination venue print strictly later and within H seconds? Same-second prints do not count as a response, and a trigger is eligible only when its entire H-second future lies inside the window.
The curves are hockey sticks. After a Kalshi trade second in the Premier League in play, Polymarket prints again within 1 / 5 / 10 / 60 s in 13.8% / 47.6% / 64.7% / 93.6% of eligible cases; the Champions League behaves the same (53.6% within 5 s). The reverse direction is faster everywhere (69.4% within 5 s in the Premier League), and the World Cup in play is at 87.9% (Kalshi → Polymarket) and 99.0% (Polymarket → Kalshi) within 5 s. These are waiting probabilities, not evidence that one venue’s trade causes the other’s.
3. How far apart are the last trades?
An observation is a print on either venue while the other venue’s latest print is at most F seconds old, at each group’s own cutoff. The signed gap is Polymarket minus Kalshi, pooled over both taker sides; a gap of −2 c means the Polymarket reference is 2 c below Kalshi’s.
3.1 By outcome
Per print weights each observation equally; per second weights it by how long the pair then stays fresh before the next print or expiry. The centre bucket holds gaps strictly between −1 and +1 c, the adjacent buckets hold the exact one-cent gaps both venues quote, and the end buckets are open at ±4 c. The dashed line marks the mean signed gap per print, placed on the bucket scale. Every panel in this section shares one y axis.
For all outcomes pooled, the Premier League in-play sample has a 1.28 c mean absolute gap with 20.8% of fresh prints at least 2 c apart; the Champions League 1.43 c and 20.6%; the World Cup in play 0.69 c and 4.57%; the World Cup’s last hour 0.57 c and 4.16%. These use different cutoffs (60, 60, 5 and 10 s), so they mix activity and freshness effects; section 3.3 separates them.
The gap is not symmetric. In the Premier League, Polymarket prints at least 1 c below Kalshi on 41.3% of observations and at least 1 c above on 14.6%, a pooled mean of −0.44 c. The draw is more two-sided than team wins: Polymarket is at least 1 c above on 18.7% of draw prints against 13.5% of team-win prints, and at least 1 c below on 36.0% against 42.8%.
3.2 By matchup class and team role
The same distribution, with each in-play fixture first classed as balanced or unequal from its pregame prices (definitions above). In a balanced fixture the rows are the two team wins and the draw; in an unequal fixture, the strong side, the weak side and the draw. The label is built from the last 30 pregame minutes, so it is fixed before the first in-play observation; it is not applied to the World Cup’s last pregame hour, whose prints would be classifying themselves. Unequal fixtures supply 62.2%–79.9% of each group’s prints; fixtures without a usable label are at most 0.13% and are dropped here.
The favourite of an unequal fixture is where Polymarket prints lowest relative to Kalshi: a mean gap of −0.56 c in the Premier League and −0.73 c in the Champions League, against −0.40 c and −0.19 c on the weak side and −0.50 c and −0.40 c for team wins in balanced fixtures. The draw is close to zero in every class (−0.18 c and +0.04 c in unequal fixtures, −0.25 c and −0.06 c in balanced ones) and two-sided. In the Premier League and the World Cup the weak side has the smallest absolute gap (1.13 c and 0.60 c): it is the lowest-priced of the three contracts, where the two venues’ quotes sit closest in cents.
3.3 Across the freshness cutoff
The pooled distribution’s summary at F = 5, 10 and 60 s for each group. A tighter cutoff keeps fewer prints, but not different ones.
The mean absolute gap is 1.34 / 1.31 / 1.28 c at F = 5 / 10 / 60 s in the Premier League, 1.34 / 1.36 / 1.43 c in the Champions League and 0.69 / 0.68 / 0.68 c in the World Cup in play; the share of prints at least 2 c apart moves by about a point (21.8% to 20.8% in the Premier League). Whatever the cutoff admits or excludes, the two tapes disagree by the same amount. The cutoff is therefore better read as a bound on how long one venue’s reference can stand while the other is silent, the exposure of a leg done on one venue before the other prints again, than as something that changes the gap. Part 2 finds the same flatness after fees.
4. Which side each trade came from
Two pooled last trades do not describe prices anyone could trade at. A taker buy prints at its venue’s ask and a taker sell at its bid, so the nine squares of each panel split the prints by the taker side on each venue; all pools both sides and repeats section 3. Each square shows the mean signed gap, the share of prints at least 2 c below and above zero, and the print count; blue means Polymarket printed lower, red higher.
| Pair (PM action / Kalshi action) | Reads |
|---|---|
| buy / sell | Polymarket ask-side print against Kalshi bid-side print. Positive is the ordinary state, an ask above the other venue’s bid; negative means the two references were crossed. |
| sell / buy | Polymarket bid-side print against Kalshi ask-side print. Negative is the ordinary state; positive means crossed. |
| buy / buy | Both ask-side: how the two venues’ asks compare. |
| sell / sell | Both bid-side. |
The cross-side pairs show the ordinary cross-venue spread, and it is not symmetric. For Premier League team wins, sell/buy averages −1.51 c and buy/sell +1.10 c: Polymarket’s bid side sits further below Kalshi’s ask side than Polymarket’s ask side sits above Kalshi’s bid side. Pooled over both sides, Polymarket prints lower than Kalshi (−0.44 c in the Premier League, −0.21 c in the World Cup in play): Kalshi’s flow is buy-heavy and prints at the ask, the same fact section 2.4 saw as Kalshi’s stale sell side. For draws the wider side is the other one (sell/buy −1.41 c, buy/sell +1.71 c in the Premier League; −1.21 c and +1.95 c in the Champions League). In a cross-side square, the tail on the crossed side (at least 2 c below zero for buy/sell, at least 2 c above for sell/buy) is how often the two references were crossed by at least 2 c, before any fee.
The same-side pairs compare like with like and are small: buy/buy −0.36 c and sell/sell −0.06 c for Premier League team wins, sell/sell +0.34 c for draws.
Home and away are not separated because their pooled gaps agree to within 0.2 c in every group; the cross-venue mechanics are symmetric between them.
By matchup class and team role
Kalshi’s premium over Polymarket is concentrated on the favourite. sell/buy averages −1.84 c on the strong side of unequal Champions League fixtures against −1.27 c on the weak side (−1.56 c and −1.34 c in the Premier League), while buy/sell is narrower on the strong side (+0.95 c against +1.24 c in the Premier League). On draws, Polymarket’s ask side sits highest above Kalshi’s bid side in unequal fixtures (buy/sell +2.08 c against +1.75 c in balanced Champions League fixtures).
Part 2 attaches the two venues’ fee curves and a taker or maker role to each of these pairs. Here they are descriptions of where the prints sat.
What is not measured
Everything above is a description of the trade tape. It establishes where the two venues print differently, on which side and by how much. It does not establish that any of it could be captured:
- There are no historical order books, so available size and queue position at the reference prices are unknown.
- Fees and roles are part 2’s subject. Nothing here says whether a gap exceeds the cost of trading it.
- The price after each observation is part 3’s subject. Whether a gap persists, closes toward one venue, or reverses is not examined here.
- No confidence intervals or fixture-clustered uncertainty are supplied. Comparisons are descriptive for this sample.
Data, methods and updates
This is a dated static snapshot. The page contains 11 interactive charts, each with its plotted aggregates downloadable as CSV and Plotly JSON, and a snapshot manifest with source hashes and the fixture date range. The source notebook is available without outputs; it requires the local research modules and curated inputs, so on its own it does not recreate the pipeline. The publication notes describe the build.
Method notes:
- Both venues’ regular-time home/draw/away markets are linked to common API-Football fixtures. Market linkage is distinct from actual trading coverage.
- Availability is weighted by fixture × outcome × window seconds, including silence; intervals are split at window boundaries. Prints before the analysis window are unavailable, so initial freshness refers to the observed window.
- Gap observations occur when either leg prints and the other is fresh. Time weights use the duration until the next print, capped by the remaining freshness allowance.
- Group selection uses whole-percent coverage at F = 60 s and the smallest of 5, 10 and 60 s that reaches 70%.
- Trade waiting uses strictly later destination prints with forward-window boundary censoring (about 2% of triggers); rates are pooled over trade seconds, not averaged across fixtures.
- The matchup label is the shared fixture label of my pregame relative-strength study (VWAP of the last 30 pregame minutes, venues averaged where both are usable, threshold 0.30), joined on the fixture only.