kalshi-yes-no-semantics draft
What Yes and No contracts mean on a Kalshi binary market, what each price represents, and why the two prices both exist
- Tags
- kalshi contracts binary-market probability fundamentals
- Vocabulary
- yes_contract
- A claim that pays $1 if the market resolves Yes and $0 if it resolves No. Price is quoted in cents (0-100); the cent price is the implied probability of Yes-resolution treated as a fair price.
- no_contract
- The mirror — a claim that pays $1 if the market resolves No and $0 if it resolves Yes. Price in cents; implied probability of No-resolution.
- cents_pricing
- Kalshi's native price unit. A price of 65 cents means a $0.65 payment for a contract that pays out $1 on the right resolution. Equivalent to an implied probability of 0.65.
- yes_designation
- The per-market choice of which outcome is labelled 'Yes' and which is 'No'. Made by Kalshi when the market is created and varies market-by-market — it is NOT a fixed convention like 'home team is always Yes'.
- complement_relation
- On a single binary market, yes_price_dollars + no_price_dollars sum to $1.00 (per Kalshi's docs for matched fills). The cent prices on the order book do not sum to exactly 100 — the gap is the implicit cost of crossing the spread plus fees.
- buy_no_vs_sell_yes
- Two ways to take the same economic position. Buying No at X cents costs the same payoff structure as selling Yes at (100 - X) cents, modulo execution differences (maker/taker side, queue position, fee schedule).
A Kalshi binary market is two contracts trading on opposite sides of a yes/no question. Buying a Yes contract at X cents is a promise to pay X cents now in exchange for $1 if the market resolves Yes (and $0 if it resolves No). The No contract is the mirror — pay Y cents now, receive $1 if the market resolves No. Because the resolution is a single binary event, exactly one contract pays and exactly one expires worthless. The cent-denominated price is, by construction, the implied probability of the side it bets on, treated as if the price were fair.
The reason both prices exist on the book at the same time is that every trade has a counterparty: someone selling Yes at 47¢ is taking the same economic position as someone buying No at 53¢ (modulo fees and execution). Kalshi's order book matches both sides, so both Yes-side and No-side prices are quoted simultaneously and are visible to all participants.
For Mimir's purposes, the load-bearing facts are: (1) the Yes designation is set per-market by Kalshi and you cannot assume Yes = favorite or Yes = home team; (2) Yes and No prices in cents are implied probabilities of their respective outcomes; (3) buying the opposite side is equivalent to selling the same side, but execution costs may differ. Field-level details (which exact API field carries the price, fixed-point vs cents encoding, how SDKs rename fields) live in kalshi-mcp's annotations — fetch them via lookup_field(yes_price), lookup_field(no_price), and the _dollars variants.
Worked example
A Patriots-vs-Jets binary market on Kalshi, where the market is structured as "Will the Patriots win?" The Yes side bets on a Patriots win; the No side bets on the Patriots NOT winning (i.e. the Jets win or the game ends in a tie if ties are possible — for a moneyline market, a tie usually resolves No, but check the market's resolution criteria via kalshi-mcp__lookup_field for the specific market).
Order book quotes: - Yes: 47¢ (best ask), 46¢ (best bid) - No: 55¢ (best ask), 54¢ (best bid)
Reading these:
- Buy 1 Yes at 47¢. You pay $0.47, you get $1 if Patriots win, $0 otherwise. Implied probability of Patriots winning, from this price, is 0.47.
- Buy 1 No at 55¢. You pay $0.55, you get $1 if Patriots do NOT win, $0 otherwise. Implied probability of Patriots NOT winning, from this price, is 0.55.
Notice 47 + 55 = 102, not 100. The 2-cent gap is the cost of crossing both sides at the ask — Kalshi's implicit "spread cost," which is structural (someone has to be on each side) plus the maker/taker fee model. It is not a bookmaker margin in the sense book-vig-overround describes, because Kalshi is an exchange — but for the purposes of devigging or comparing to sportsbooks, you still need to account for the gap. Compare the bids: 46 + 54 = 100 exactly (the bids are the prices someone has agreed to pay, and they sum to the complement). Per kalshi-mcp__lookup_field(yes_price_dollars), matched fills do sum to $1.00 — the 100¢ relationship holds at the trade level, not at the top-of-book quote level.
Now suppose you want to short the Patriots (i.e. take a position that pays if they lose). Two ways:
- Buy No at 55¢. Risk $0.55, win $0.45 if Jets win.
- Sell Yes at 46¢. Receive $0.46 now; if Patriots win, pay out $1 (net loss $0.54); if Patriots lose, keep the $0.46. Risk $0.54, win $0.46.
These are the same economic position only if you can sell at 46¢ and buy No at 55¢ for free — they're not, because of the spread. The two prices reflect the same underlying probability with the spread cost loaded onto whichever side you cross. The right choice depends on liquidity (which side has depth at a better price), fees (maker vs taker), and queue position. See kalshi-mcp__search_gotchas(price) for the fee-side details.
Gotchas
- Yes designation varies per market. Never assume Yes = favorite, Yes = home team, or Yes = the team listed first in the title. Kalshi's market creator chooses Yes for each market; identical-looking events can have opposite Yes assignments. Check
yes_sub_title/no_sub_titleon the market object (viakalshi-mcp__lookup_field) before mapping a Kalshi position to a real-world team. - Yes price + No price doesn't sum to exactly 100¢ at the top of book. The gap is the spread plus implicit fee structure. Top-of-book bids may sum to 100, top-of-book asks usually sum to more than 100. Matched fills sum to $1.00 by construction (
yes_price_dollars + no_price_dollars = 1.00for a single fill — seekalshi-mcp__lookup_field(yes_price_dollars)). - Buying No vs. selling Yes are equivalent positions but execution costs differ. Maker-vs-taker fee, queue position, and the side you cross all factor in. Don't substitute one for the other without checking the actual prices on both sides — sometimes selling Yes is cheaper, sometimes buying No is. The fee schedule lives in
kalshi-mcp; consultkalshi-mcp__search_gotchas(fee)for current numbers. - A No contract pays on the No outcome, not on the Yes outcome. This sounds obvious, but the failure mode is a position-reporting bug: a position labelled
side: nowith positive quantity means you bought No contracts, which pay on No-resolution. Kairos'sws_normalize.pyinfers this fromposition_fpsign (yes-positive, no-negative) when explicit side data is missing — seews_normalize_position_row. Don't conflate "I sold Yes" (negative Yes position, positive cash) with "I bought No" (positive No position, negative cash). - The cent price is implied probability, but it is the implied probability of the side it labels. A No price of 36¢ implies probability 0.36 of the No outcome, not 0.36 of the Yes outcome. To convert to "probability of Yes given the No price," you take 1 - 0.36 = 0.64. Direction matters; see
kalshi-yes-to-american-oddsfor the cross-format version of this same trap. - The implied probabilities of the two sides don't sum to exactly 1 (in book quotes). Yes at 0.47 and No at 0.55 doesn't mean the market thinks the joint probability is 1.02. They imply two slightly inconsistent probabilities because of the spread; devigging (per
devigging, two-way version only) gives you a single fair probability for each side.
Open questions
- The exact relationship between
yes_price(whole-cent integer) andyes_price_dollars(fixed-point string allowing sub-cent on fractional-enabled markets) is documented inkalshi-mcp. Mimir does not duplicate the field-level encoding rules; consumers needing tick precision should consultkalshi-mcp__lookup_field(yes_price_dollars)directly. Whether Mimir should warn when a price-related concept might encounter sub-cent ticks (vs. the cent-denominated mental model used here) is a future-entry question. - "Implicit fee structure" in the gap-between-100-and-Yes+No is a simplification. The actual gap on top-of-book asks is the bid-ask spread (a market-microstructure quantity), and the post-trade economics include the Kalshi fee per fill. Mimir's framing here treats the gap holistically; consumers wanting to decompose spread vs fee should consult
kalshi-mcpplus their own fee model. Whether Mimir should expose a derived "Kalshi vig" quantity comparable to a sportsbook's is open — currently the entry just notes that the gap exists.
Cross-references
- mimir: american-implied-probability
- mimir: american-decimal-conversion
- mimir: book-vig-overround
- kalshi-mcp: lookup_field(yes_price)
- kalshi-mcp: lookup_field(no_price)
- kalshi-mcp: lookup_field(yes_price_dollars)
- kalshi-mcp: lookup_field(no_price_dollars)
- kalshi-mcp: search_gotchas(price)
- kalshi-mcp: search_gotchas(yes)