layer docs

How we measure sports gaps#

When the same game trades on Kalshi and Polymarket US, the two prices should match. Sometimes, for a moment, they don't: both sides of a game can be bought for less than $1 after both venues' fees. People measure these moments in different ways and get very different answers. This page sets out exactly how Layer measures them, what we found, and what the data can't tell you.

What we record#

Layer's recorders keep every order book update that Kalshi and Polymarket US send for the sports markets Layer has matched across the two venues. Each update is stamped with the time it reached Layer's server. Since 11 November 2026, the files also carry a heartbeat every second, so a gap in the recording shows up as a gap rather than as a quiet market.

Each night, the books are rebuilt from those files and replayed on one clock, game by game, from an hour before each game starts to the end of play.

A gap, and a spread#

At every book change, the replay asks: can both sides of the game be bought for under $1, after both venues' taker fees, at the prices and sizes actually on the books? Both ways round are checked: YES on Kalshi with NO on Polymarket US, and the reverse.

  • A gap runs from the first book change where at least one whole contract locks a profit to the first where none does.
  • One price move often opens, closes and reopens a gap within a few milliseconds, so gaps on one game less than 250 ms apart count as one spread.
  • For each spread we keep how long it stayed open, the best profit per contract during it, and the number of contracts that would have locked the most profit.

A move, and who moved first#

A move is either venue's price (the midpoint of its best bid and ask) moving 3¢ or more within 2 seconds. Each move is counted once:

  • The leader is the venue whose price got 2¢ past where it was 2 seconds earlier first.
  • The lag is how much later the other venue got there, within 30 seconds.
  • Under 1 second counts as together: updates from the two venues can reach Layer up to about 0.1 seconds apart.
  • The next 10 seconds of the same game are part of the same move.

Why our gaps look shorter than other people's#

Most tools check prices every quarter-second to half-second. A tool that checks every half-second can only see a gap that happens to be open at one of its checks, and it will measure that gap as one check long. Layer records every change instead.

On Sunday 8 November 2026 (game winners), Layer recorded 298 spreads. Read back every 250 ms, the same data shows 85; read every 500 ms, it shows 40, and each one looks exactly one check long. Both methods see real gaps. Checking at intervals hides the short ones and rounds the rest up to the interval.

What we found#

Game winners, 4–10 November 2026 (215 games: NBA, NFL, NHL and college football):

  • 1,767 spreads cleared both venues' fees, from 68 to 782 a day.
  • Half closed within 59 ms, and 74% within 100 ms. 28 stayed open for 1 second or more.
  • The median profit was 0.86¢ a contract at the spread's best moment.
  • A stricter test: still open 250 ms after it opened, and still locking at least $1 and at least 1¢ a contract after fees at that point. At most 30 of the 1,767 passed. On 8 November, 0 of 298 did; on 1 November, 4 of 308.

Who moved first, counted once per move (game winners):

Day Moves Both venues within 1 s Kalshi moved first Polymarket US followed Kalshi (median) Kalshi followed Polymarket US (median)
1 Nov 2026 725 83% 82% 149 ms 352 ms
8 Nov 2026 920 80% 81% 149 ms 363 ms

From 12 November 2026, the nightly stats use this rule for every day.

Limits#

  • No fills. These numbers come from recorded order books, not trades. On 8 November, only about a third of game-winner spreads kept their quoted size for as long as they were open, so a real fill is usually smaller, or none.
  • Our clock. Times are when each update reached Layer. Polymarket US updates reach Layer a median 58 ms after Polymarket US's own timestamp, Kalshi's 14 ms after Kalshi's, so part of any Polymarket US lag is delivery time.
  • Recorder outages. When a venue's recording goes quiet for more than 5 seconds, its prices count as unknown until it resumes, so nothing is measured across the gap. On 7 November 2026 the Kalshi recorder went quiet many times that evening.
  • Spread and total markets. Some Kalshi spread and total markets stopped updating in Layer's recording while they kept trading, so their books looked frozen for minutes. Game-winner markets were not affected. Until the cause is found and fixed, the nightly stats cover game winners only, and any spread or total number Layer quotes comes from a one-off check with the frozen books removed (such as 8 November 2026, where 17 windows reached a 9.4% return or more and none lasted longer than 239 ms).

Corrections#

  • 11 November 2026: the first version of the lead/lag stats scored each venue as leader separately, so one move was counted twice, and its lag counted only the slowest followers. That gave a "Kalshi catches up to Polymarket US" median of 2.1 seconds, which was wrong; counted once per move it is about 0.35 seconds. The stats were fixed the same day, and earlier days' moves are no longer served.

Check it yourself#