kalshi-yes-to-american-odds draft

Converting a Kalshi Yes (or No) cent price to the American-odds equivalent for the right outcome — the conversion that bridges Kalshi binary markets to sportsbook quotes

Tags
kalshi conversion american-odds probability fundamentals
Vocabulary
cents_to_probability
The first step of the conversion: a Kalshi cent price X maps directly to implied probability X/100. A Yes at 65¢ implies P(Yes) = 0.65; a No at 36¢ implies P(No) = 0.36.
american_branch_split
American odds use two formulas depending on whether the implied probability is below or above 0.5. Below: positive odds, +(1-p)/p × 100. At/above: negative odds, -p/(1-p) × 100. Same split as american-decimal-conversion.
fee_adjusted_american
The American-equivalent that includes Kalshi's per-trade fee in the risk and profit numerators. Kairos exposes this via kalshi_half_maker(cents); the unadjusted (raw) American conversion ignores fees. The two differ by ~0.3-1.5% depending on price and bucket.
outcome_matters
Direction-of-question gotcha. Converting a Yes price gives American odds for the Yes outcome; converting the matching No price gives American odds for the No outcome. These are NOT the same number on opposite sides of the same game — they price different events with the spread loaded onto opposite sides.

This is the conversion the operator reaches for whenever Kalshi quotes a binary market and the operator wants to compare it to a sportsbook's American-odds quote on the same event. It is conceptually simple — cents are an implied probability, and American odds are a different way of writing the same probability — but it is the source of confusion the user has flagged most often, because the conversion has two directions that price different events, and the failure mode is converting the wrong side and treating it as comparable to the sportsbook's quote on the question you actually care about.

The two-step conversion: cents → implied probability → American odds. The implied probability is just the cents price divided by 100. The American odds depend on whether the probability is below or above 0.5: below 0.5 means underdog (positive American), at or above 0.5 means favorite (negative American). The formula split is identical to american-implied-probability — only the input source has changed.

The Kalshi-specific complication is fees. Kalshi charges a per-trade fee that depends on price (and bucket — game vs. spread/total — see below). The fee adjusts the risk and profit numerators of the American formula, so a fee-adjusted American conversion produces a slightly different number than the raw conversion. Kairos's kalshi_half_maker(cents) helper in kairos/core/odds.py returns the fee-adjusted American value (with the firm's 50% rebate baked in via KALSHI_FEE_RATE_NET). The raw conversion below ignores fees; the worked example shows both the raw answer and notes where the fee-adjusted answer would shift it.

For exact field semantics, fee schedule details, and the underlying Kalshi-side conventions (whole-cent vs fixed-point, SDK renames, market-bucket fee differences), defer to kalshi-mcp via lookup_field(yes_price), lookup_field(no_price), and search_gotchas(fee). Mimir owns the conceptual mapping; kalshi-mcp owns the field-level details.

Worked example

A Patriots-vs-Jets binary market on Kalshi. The market is structured as "Will the Patriots win?" — Yes = Patriots win, No = Patriots do NOT win.

Kalshi quotes: - Yes: 47¢ - No: 55¢

Question 1: What is the American-equivalent for "Patriots win"?

This is what the Yes price represents. Convert it.

  1. cents → probability: 47 / 100 = 0.47.
  2. 0.47 < 0.50 → positive (underdog) branch.
  3. American = (1 / 0.47 − 1) × 100 = (2.1277 − 1) × 100 = +112.77 → round to +113.

So Yes at 47¢ on "Patriots win" is the same implied probability as a sportsbook quoting Patriots at +113. Fee-adjusted (via kalshi_half_maker(47)), this number shifts very slightly because Kalshi's fee narrows the profit and widens the risk for an at-entry trade. The shift is small at this price (well under 1% of the American number); for tight arb decisions per two-way-arbitrage you must use the fee-adjusted figure. Consult kalshi-mcp__search_gotchas(fee) for the exact fee model and formula in use today.

Question 2: What is the American-equivalent for "Patriots do NOT win"?

This is what the No price represents — the No side resolves whenever the Yes side doesn't. Convert it.

  1. cents → probability: 55 / 100 = 0.55.
  2. 0.55 ≥ 0.50 → negative (favorite) branch.
  3. American = −(0.55 / (1 − 0.55)) × 100 = −(0.55 / 0.45) × 100 = −122.22 → round to −122.

So No at 55¢ on "Patriots win" is the same implied probability as a sportsbook quoting "Patriots do NOT win" at −122.

A subtlety worth flagging: "Patriots do NOT win" and "Jets win" are NOT always the same event. In a sport with possible ties (NFL, soccer), a tie is also a "Patriots do NOT win" outcome, so the No price covers Jets-win-OR-tie. In a sport without ties (NBA regular season, MLB, tennis), they're identical and you can call −122 the "Jets win" line freely. For the NFL example here, ties are rare but legal — consult the market's resolution rule on kalshi-mcp__describe_endpoint(events.get_event) to confirm whether ties resolve No or void the contract before treating −122 as a Jets-win line specifically.

Crucial: the +113 (Yes-on-Patriots) and the −122 (No-on-Patriots) are NOT a matched pair on the same outcome. They price two different events:

If you want the American-equivalent for "Jets win" paid through the Yes side instead (which would be selling Yes at the bid, not buying No at the ask), you'd use the Yes-bid price (e.g. 46¢) and run the conversion on its complement, 54¢ (since selling Yes at 46¢ ≈ buying No at 54¢). Different price (54¢ vs 55¢), different American number — the difference is the spread. This is the muddy spot. The fix is to always be explicit about which question you're answering and which side of the book you are crossing.

Question 3: How does this compare to a sportsbook quoting Patriots +120 and Jets −150?

Now we have two American quotes for each outcome:

Outcome Kalshi (raw) Sportsbook
Patriots win +113 +120
Jets win −122 −150

For "Patriots win": sportsbook +120 pays more than Kalshi +113. If you believe the Patriots will win, the sportsbook is the better venue (modulo fees and limits).

For "Jets win": Kalshi −122 requires risking less per dollar of profit than sportsbook −150 (less negative is better for a favorite bet). If you believe the Jets will win, Kalshi is the better venue.

A two-way-arbitrage check (per two-way-arbitrage): Patriots at +120 (sportsbook) and Jets at −122 (Kalshi No) — taking each on the venue that prices them best. Convert each to implied probability:

Sum: 1.004. Not under 1.0, so no arb here — the spread plus Kalshi's implicit fee gap eats the would-be edge. Whether the gap shrinks under the fee-adjusted American figures (which lower the Kalshi side's effective probability slightly) depends on the exact fee impact at these cent prices. Use kalshi_half_maker(55) and kalshi_half_maker(53) (the Yes-bid complement) to compute fee-adjusted American numbers when the rough check is on the boundary. See kalshi-mcp__search_gotchas(fee) for the fee schedule.

Gotchas

Open questions

Cross-references