Kalshi Order Book Explained: Why It Only Shows Bids and How to Read the Real YES Price

AM

Alex Mercer· Founder, Arbitrage Agent

Published 2026-11-04 · Last updated 2026-11-04

Key takeaway

The Kalshi order book returns only YES and NO bids. How a NO bid becomes a YES ask, how to compute the spread, and why it matters for Polymarket Kalshi arbitrage.

If you read Kalshi's order book through the API for the first time, something looks missing: there are YES bids and NO bids, but no asks. That is deliberate, and it matters for arbitrage because the price you actually pay to buy YES is hidden in the NO side. This article explains the structure as Kalshi documents it and how to turn it into the numbers you need for a Polymarket Kalshi arbitrage check.

What the endpoint returns

Kalshi's documentation says the order book endpoint (GET /markets/{ticker}/orderbook) returns the current bids for one market and needs no authentication. The response is wrapped in an orderbook_fp object with two arrays, yes_dollars and no_dollars. Each entry is a two-element string array, price in dollars and number of contracts, for example ["0.4200", "13.00"] for 13 contracts at $0.42. Prices and counts are strings to support sub-penny prices and fractional contracts. The arrays are sorted in ascending price order, so the best bid is the last element.

Why only bids

A binary market pays $1.00 to one side. Because of that, the documentation states two equivalences:

  • A YES bid at price X is equivalent to a NO ask at $1.00 − X.
  • A NO bid at price Y is equivalent to a YES ask at $1.00 − Y.

In words: if someone is willing to pay $0.60 for YES, they are in effect offering to sell you NO at $0.40. Listing both sets of bids therefore describes the whole market. The same logic is behind the pair structure discussed in complete-set arbitrage.

Reading the best prices

Using the example in Kalshi's documentation: the best YES bid is $0.42 and the best NO bid is $0.56.

  • Best YES bid: $0.42 (what you would receive selling YES).
  • Best YES ask (implied): $1.00 − $0.56 = $0.44 (what you would pay buying YES).
  • YES spread: $0.44 − $0.42 = $0.02.

For the NO side the same steps apply with the roles swapped: best NO ask is $1.00 minus the best YES bid.

Why this matters for arbitrage

An illustrative example, not a live trade. Suppose you want to buy YES on Kalshi and NO on Polymarket. The Kalshi leg costs the implied YES ask, not the YES bid. If you plugged in the bid ($0.42) instead of the implied ask ($0.44), your combined cost would look $0.02 lower than it is, and a gap that does not exist would appear. The error is the same size as many real edges, which are small after fees, as covered in how to calculate net edge.

The book also shows depth. The size next to each price tells you how many contracts you can buy at that price before moving to the next level, which is what limits position size, as explained in the liquidity guide.

A checklist when parsing the book

  • Convert price and count from strings to a decimal type, not a float.
  • Take the best bid from the last element of each array.
  • Derive each ask as $1.00 minus the best bid on the opposite side.
  • Walk several levels if your size is larger than the top level.
  • Remember that a book is a snapshot; it can change before your order arrives. See order types for two-leg arbitrage.

Where Arbitrage Agent fits

Arbitrage Agent reads the books on both sides, applies fees and depth, and shows the net result for each validated pair in a live feed with a step-by-step guide. You place the orders yourself. See the plans or start with the Starter plan.

Related articles

Key terms: Orderbook · Spread · Implied Probability