Updown Venue Compare
updown_venue_compareThe same 15-minute crypto "up or down" window priced on polymarket.com, Polymarket US and Kalshi, side by side, with whether each pair is actually the same contract. Pass asset (btc | eth | sol | xrp | bnb) and window ("current" default, "next", "previous", or the window START as ISO such as 2026-10-27T14:15:00Z, on a 15-minute boundary). Per venue: question, Up bid / ask / mid / last, spread_pp, quote_state, volume WITH ITS UNIT, open interest, liquidity, settlement source, comparison basis, when it settles. THE VENUES ARE NOT ONE CONTRACT. Kalshi and Polymarket US settle on CF Benchmarks' BRTI (60-second average at the end against the same at the start): the same bet, so a gap between them is a real disagreement. polymarket.com settles on a Chainlink 60-second TWAP, end against start: same comparison shape, different feed, so a gap against either is partly the contract. pairs[] gives equivalent ("true"|"false"|"unclear"|"not_comparable") from resolution_diff for every pair, material_differences, mid_diff_pp (a minus b, in percentage points) and read_as in words. Measured over 30 days of settled windows the Chainlink and BRTI feeds settle a window differently about 1.2-1.8% of the time, almost entirely windows that ended near the threshold (see updown_divergence_rate). net_spread is computed only for the pair that is equivalent: the gap in mid terms and at top of book (buy Up where cheaper at the ask, Down where Up is dearer at 1 minus the bid) after BOTH venues' taker fees, each fee carrying its verified-as-of date. Top-of-book size is shown where the venue publishes it (Polymarket US); the Kalshi figure is not in its market payload, so read its order book before sizing. A venue with no market for the window is {status:"not_listed", reason}; one that could not be read is {status:"unavailable", refusal} -- never an empty object, and never the same thing. A one-sided book (typical Polymarket US just before a window is decided) has quote_state "bid_only", a null mid, and the last trade stands in labelled price_basis "last". Quotes are read venue by venue (cached up to 60 seconds), so a gap of a couple of points on a moving window is inside the skew. Only the 15m horizon is offered: it is the one where all three list the same up/down question. For the settled history of how often the venues disagreed, call updown_divergence_rate.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| asset | No | btc (default) | eth | sol | xrp | bnb. Coverage differs by venue; a venue that does not list the asset answers not_listed. | |
| window | No | "current" (default), "next", "previous", or the window START as an ISO-8601 timestamp on a 15-minute boundary, e.g. 2026-10-27T14:15:00Z. An unaligned timestamp is refused, not rounded. | |
| horizon | No | 15m (default and the only value offered). |