kalshi median 2.55h to 2.26h · polymarket median 0.02h to 5.30h
Scroll or drag the plot for time · drag the value axis to rescale · double-click it to reset
latency-v1 · Settled contracts with any volume at all, bucketed by volume rank WITHIN each venue — Polymarket's median market is three orders of magnitude larger than Kalshi's, so a shared dollar bucketing would put nearly all of Kalshi in one bucket and compare nothing. 24.4% of Kalshi's settled markets never traded and are excluded: ranking those ties by row order produced a bottom-decile wobble that was row order, not a finding. Kalshi's anchor is close_time, when trading stops. Polymarket's is endDate, a deadline the event can beat — 28.8% of its markets resolve early, a median of 162 hours before it. Those are excluded from the settled population rather than averaged in as negative latency. The two anchors are close in meaning, not identical, and no single cross-venue number is honest without this line. 1,886 Kalshi markets are closed with no settlement timestamp and sit outside every quantile here. 1,859 of them have zero volume — untraded hourly FX and index strike ladders, not a settlement backlog; only 27 carry any volume. Polymarket exposes no equivalent state: closedTime, umaEndDate and the resolution instant are the same timestamp, so its censored set is unobservable rather than empty.
kalshi median 2.55h to 2.26h · polymarket median 0.02h to 5.30h
Every value plotted for a past date could have been computed on that date. Normalised series expand their window rather than scaling against the full history, so nothing here is drawn using information that did not exist yet — which is also why the early years of a normalised series are dropped rather than shown against a range of one.