Skip to content
Back to guides
Prediction Markets

Translating Event Contracts to Spread/Moneyline Prices

Shark Snip Editorial 11 min read

Read the price, role, and market first

Event contract spread translation: convert Kalshi YES/NO prices to American odds, point spreads, and implied probabilities for sportsbook comparison.
15 sections
Translating Event Contracts to Spread/Moneyline Prices cover art

The Kalshi order book quotes a YES price between $0 and $1. Your sportsbook quotes a point spread and American moneyline odds. They describe the same event in different units. To trade or arbitrage across both venues — and to integrate Kalshi quotes into a model output pipeline that was built for sportsbook prices — you need a clean translation between event contract prices and spread/moneyline prices. This piece walks through the conversion math, the per-sport calibration step, and the practical workflow for routing model probabilities to whichever venue offers better EV.

The core mapping: probability → American odds → decimal odds

An event contract YES price is the implied probability of the event. There is no extra step. A YES at $0.54 means the market prices the event at 54% likely.

To convert to American odds, the standard formulas apply:

  • If p ≥ 0.5: American odds = round(−100 × p / (1 − p))
  • If p < 0.5: American odds = round(+100 × (1 − p) / p)

To convert to decimal odds: decimal = 1 / p.

Worked conversions

YES priceDecimalAmerican
$0.402.50+150
$0.482.08+108
$0.521.92−108
$0.551.82−122
$0.601.67−150
$0.651.54−186
$0.701.43−233

Reverse direction. Sportsbook quotes Eagles −175 ML. Implied probability = 175 / (175 + 100) = 0.636. Sportsbook quotes Cowboys +155 ML. Implied probability = 100 / (155 + 100) = 0.392. Sum: 1.028. The 2.8¢ overround is the sportsbook hold.

Devigging the sportsbook side

Before comparing to Kalshi, devig the sportsbook moneyline to get a fair-value probability. The standard normalize-to-1 approach:

p_fair_eagles = 0.636 / 1.028 = 0.619
p_fair_cowboys = 0.392 / 1.028 = 0.381

The Eagles fair-value probability of 61.9% is now directly comparable to a Kalshi YES quote. If Kalshi YES Eagles trades at 60.5¢/61.5¢, the ask of 61.5¢ is 0.4¢ below the devigged sportsbook fair value. Buying YES at 61.5¢ gives you a tiny implied edge over the devigged sportsbook number, but the gap is below the typical fee floor — likely not a +EV trade in isolation. We cover hold and devig in our vig and juice piece.

From probability to point spread: the per-sport curve

Converting a win probability to an expected point spread is sport-specific. The general approach: regress historical close-line spreads against close-line moneyline probabilities. The result is a smooth, slightly nonlinear curve.

NFL win-probability-to-spread curve

Empirical NFL curve from 2018-2025 closing-line data (devigged):

Win probabilityExpected spreadMoneyline (rough)
50.0%0.0−110 / −110 (pickem)
55.0%−1.5−122 / +102
60.0%−2.5−150 / +130
62.5%−3.0−167 / +145
65.0%−3.5−186 / +160
70.0%−5.0−233 / +200
75.0%−7.0−300 / +250
80.0%−9.5−400 / +325

The slope is non-constant because NFL margins cluster on the key numbers 3 and 7. The spread step from 60% to 65% is 1 point, but from 70% to 75% is 2 points — the increase in win probability per point of spread shrinks as you get further from a pickem.

NBA win-probability-to-spread curve

NBA spreads are much steeper because margins are normally distributed and games have many more possessions. Roughly:

  • 55% = −2.5
  • 60% = −5.0
  • 65% = −7.5
  • 70% = −10.0
  • 75% = −13.0

MLB win-probability-to-moneyline (no spread)

MLB doesn’t use a meaningful point spread — most games are decided by 1-3 runs. Translate directly to moneyline odds with the standard formula. Run-line markets (always −1.5 / +1.5) require a separate margin model.

Calibrated curves for NFL, NBA, MLB, college football, and college basketball are loaded into the desk at /desk. The model picks pipeline at /picks emits per-game win probabilities; the desk handles the translation step.

The full translation workflow

Direction 1: Kalshi quote → sportsbook-equivalent line

  1. Read Kalshi YES ask. Example: 56¢.
  2. Implied probability = 0.56.
  3. Translate to American odds: −100 × 0.56 / 0.44 = −127.
  4. Translate to NFL spread: 56% ≈ −2.0 points.
  5. Compare to sportsbook line. DraftKings shows Eagles −2.5 (−115). Devig vs the +2.5 (−105) other side: implied 53.5% / 51.2%; devigged 52.6%.
  6. Kalshi quotes Eagles at 56% (favorable for buying YES); DraftKings devigged shows 52.6%. The 3.4% gap is large enough to be a real edge — either Kalshi is mispriced high or DraftKings has soft money on the underdog.

Direction 2: Model probability → which venue offers better EV?

  1. Your TF.js model in /tinker outputs Eagles cover −3 at 58% probability.
  2. Translate to required price. Fair-value YES = 58¢; you want to buy below 58¢.
  3. Kalshi YES Eagles −3 quoted 53¢/55¢. Buying at 55¢ gives 3% edge.
  4. Translate 58% to sportsbook spread. NFL curve: 58% ≈ −2.0 NFL points. Eagles −3 at DraftKings −108 has implied probability 51.9% (before devig), 52.4% devigged.
  5. Buying Eagles −3 −108 on DraftKings gives 58% − 52.4% = 5.6% edge (gross). After 4.6% hold, the realized edge is closer to 4.0%.
  6. Kalshi edge (3.0% net of 1.5% fee): roughly 1.5%. DraftKings edge (4.0% with 4.6% hold already absorbed): roughly 4.0%.

In this example DraftKings is sharper for this specific slip. Route the bet there. The next slip might invert. The desk at /desk automates this routing per slip.

Where the translation breaks

Three places the linear translation fails:

  1. Key-number sensitivity in NFL. A 60% win probability could correspond to a closing spread of −2.5 OR −3.0 OR −3.5 depending on the specific matchup and the market’s view of where margins will land. The probability-to-spread curve is an average; individual games can deviate by half a point.
  2. Multi-way outcomes. Soccer three-way moneylines (home / draw / away) don’t map cleanly to a single yes/no contract. You need three Kalshi contracts (one per outcome) and the devigging is over three terms, not two.
  3. Player props. A "Player A has 90+ receiving yards" Kalshi contract translates to an over/under line — but the underlying distribution is right-skewed, so devig adjustments differ from binary outcomes. Our player prop markets piece covers the prop-specific math.

Putting it together: the routing decision

For every model-generated bet, run the translation in both directions:

  1. Convert model probability to Kalshi fair-value YES price. Compare to Kalshi ask. Compute net-of-fee edge.
  2. Convert model probability to fair-value sportsbook spread/moneyline. Compare to actual sportsbook line. Compute hold-adjusted edge.
  3. Route the bet to whichever venue produces the larger net edge.
  4. Log the slip with both quotes for later CLV analysis — see our closing line value explainer for the long-run validation.

The desk module on /desk does this routing automatically. The picks list on /picks shows model probabilities that you can feed into the routing decision yourself.

Putting calibration first

The whole translation collapses if your win-probability-to-spread curve is wrong. Recalibrate at the start of every season using the prior season’s closing lines and results. The desk publishes the calibrated curves; they update weekly based on the most recent results. Our how NFL spreads work primer explains the underlying spread mechanics — it’s the prerequisite to building the curve.

Working with totals (over/under) contracts

Total-points contracts have their own translation quirks. The sportsbook posts "Eagles/Cowboys total 47.5, over -110 / under -110". Kalshi posts "Will Eagles/Cowboys total be 47 or more? YES at 51¢." The two are not directly equivalent — the sportsbook’s 47.5 line resolves over only on 48+ scoring; Kalshi’s 47-threshold resolves YES on 47+ scoring.

Synthetic conversion

To translate a 47.5 sportsbook line to a Kalshi 47-threshold contract, you need the probability that the total lands exactly on 47 — typically 4-5% for a 47.5 line in the NFL (because totals cluster at multiples of 3 and 7). If the sportsbook devigged over is 50% on 47.5, the Kalshi YES on the 47-threshold should be approximately 50% + (0.5 × 4-5%) ≈ 52.0-52.5%. Kalshi YES quoting 51¢ is therefore slightly soft vs the sportsbook number.

Half-integer key numbers

NFL totals cluster on key numbers (37, 40, 41, 43, 44, 47, 51). Half-point movements that cross these numbers represent disproportionate probability shifts. A 47 → 47.5 line move can shift implied probability 3-5%. Account for this when comparing sportsbook 47.5 to a Kalshi 47 contract — they’re not just different threshold values, they’re different probability points.

Moneyline-only sports (MLB, NHL)

MLB and NHL don’t use point spreads in the primary market — they use moneylines for game winners and "run lines" / "puck lines" for fixed -1.5 / +1.5 derivative markets. Translating a Kalshi MLB YES Yankees contract is straightforward:

  1. Read Kalshi YES Yankees ask. Example: 64¢.
  2. Implied probability: 64%.
  3. Convert to American: −100 × 0.64 / 0.36 = −178.
  4. Compare to sportsbook Yankees ML. If DraftKings shows −170, the sportsbook is implying 63.0% (devigged); Kalshi 64% is slightly higher. Kalshi is the sharper side; buying Kalshi YES at 64¢ when your model agrees with sportsbook fair value at 63% gives you no edge.

The run-line / puck-line conversion is harder because it requires a margin distribution. The NFL win-probability-to-spread curve doesn’t apply to baseball margins, which are right-skewed (lots of 1-run wins, occasional 8-run blowouts). Our MLB run lines piece covers the margin distribution mechanics.

Live-event drift and translation under uncertainty

Translations are easiest pregame, when both venues have stable quotes. In-game, Kalshi’s live markets (still nascent) and sportsbook live markets move at different speeds, and the translation math gets messier.

The drift gap

During a game, the win-probability-to-spread curve shifts based on current score, time remaining, possession, and field position. A 60% win probability with 5 minutes left and a 3-point lead is fundamentally different from a 60% win probability at the opening kickoff. The curve at minute 30 of an NFL game is roughly:

  • 50% = pickem
  • 55% = slight live spread of 1.0 to 1.5
  • 60% = live spread of 2.0 to 3.0
  • 65% = live spread of 3.5 to 4.5

The slope is gentler than the pregame curve because remaining game length limits possible margin swings.

Practical implication

For in-game translation, abandon the pregame curve. Use the sportsbook’s live spread directly as the ground truth, since live sportsbook market-makers have purpose-built models for the per-second curve. Kalshi’s in-game quotes are too thin to anchor the conversion; sportsbook live spreads should be your reference. Plug them into the desk on /desk for live model-vs-market checks.

Building the translation into your model output pipeline

If your model emits per-game probabilities, you can hard-code the translation into your output schema:

  1. Model emits per-game home team win probability and home team cover probability (vs the sportsbook closing spread).
  2. Translator converts each probability to (a) Kalshi fair-value YES price, (b) American odds, (c) decimal odds, (d) implied closing spread.
  3. For each available venue, compute net edge (model probability − ask price, after fees).
  4. Route to the highest-edge venue. Log all venues’ quotes for post-hoc CLV.

The /tinker output bricks support this schema natively — connect a "translate probability to multi-venue prices" brick after your model output node, and the slate runner emits routing recommendations automatically.

The takeaway

  • Kalshi YES prices are already implied probabilities. No devig needed on Kalshi.
  • Sportsbook moneylines require a devig step before comparing to Kalshi.
  • Probability-to-spread is a per-sport empirical curve, not a clean formula.
  • Totals contracts require half-integer key-number adjustments when thresholds don’t match.
  • In-game translation uses sportsbook live spreads as the ground truth, not a frozen pregame curve.
  • Route every model-generated bet to whichever venue produces the larger net edge after fees and hold.
  • Track both quotes for every slip — CLV across both venues is the validation signal.

For the broader Kalshi mechanics, see our cornerstone Kalshi sports event contracts. For active arbitrage between Kalshi and Polymarket, read the Polymarket / Kalshi arbitrage tutorial. For the underlying hold theory, our vig and juice piece is the place to start.

Trade responsibly — event contracts are real money, set position limits, never chase losses.

Price examples and pass rules

Use names as evidence, not decoration. The useful SEO win is that Josh Allen, Ja'Marr Chase, Bijan Robinson and Puka Nacua and Eagles, Cowboys, Chiefs, Bills and Lions appear inside decisions, thresholds, and internal links instead of being dumped into a keyword list.

  • Spread example: if Chiefs-Broncos opens Chiefs -3.5 and your fair number is -2.8, +3.5 is the bet, +3 is a pass, and the moneyline needs roughly +155 or better before it replaces the spread.
  • Total example: if a Bills outdoor total opens 46.5 and wind moves from 8 mph to 21 mph, an under projection at 42.8 still needs a playable number; under 45 or better is different from chasing 43.5.
  • Futures example: Bengals AFC North +280 is 26.3% before hold. If your fair number is 30%, stake modestly, track portfolio correlation, and avoid stacking every Burrow, Chase, and Higgins bet into the same thesis.
  • CLV rule: a good write-up is not enough. Track whether the spread, total, prop, or futures price closed better than your entry before grading the process.

Use closing-line value guide, vig and hold guide, bet tracking workflow to keep the examples attached to measurable prices.

Research note board

Use this table to turn the guide into a decision note. The point is to know when the idea is actionable and when it is only context.

AngleInput to verifyExample applicationPass when
Market priceSpread, total, moneyline, prop price, or futures holdEagles and Cowboys compared through PPRThe price has moved past the number that created the edge
Football or sport contextRole, pace, weather, injury status, opponent styleJosh Allen role news mapped to the relevant marketThe original input changes or remains unconfirmed
Review loopEntry, close, result, and reason codeclosing line value logged with a clear thesisYou cannot explain whether the process beat the market

Educational analysis only, not a bet recommendation. Check current lines, injuries, rules, contest terms, and local regulations before acting.

Breakeven win % at common American odds

The win rate you need to break even at each price. Pick odds shorter than -150 and you must win >60% just to stay flat — a hurdle most casual handicappers never sustain.

EV per $100 across win rate × odds grid

Expected value of a $100 stake at each combination of true win rate and market odds. Anywhere the cell is positive you have a long-run profitable bet; the magnitude shows how aggressive Kelly will size it.

Frequently asked questions

How do I convert a Kalshi YES price to American odds?
American odds from a YES price p (in dollars, e.g. 0.54): if p ≥ 0.50, American odds = −100p / (1−p). If p < 0.50, American odds = +100(1−p) / p. Example: YES at $0.54 = −100 × 0.54 / 0.46 = −117. YES at $0.40 = +100 × 0.60 / 0.40 = +150. Decimal odds simpler: 1 / p. The most common bettor mistake is forgetting that the YES price already includes the spread of the order book — devig is unnecessary because Kalshi’s YES + NO sum is already known.
What point spread does a 60% YES contract correspond to?
It depends on the sport and game. For NFL, a 60% favorite usually corresponds to a spread of roughly −3 to −3.5; for NBA, roughly −5 to −6; for MLB, a moneyline of about −150 (no equivalent spread). The conversion isn’t mechanical — you need a per-sport win-probability curve. The desk at /desk publishes calibrated curves for NFL, NBA, MLB, and college football, derived from historical sportsbook close-vs-result data.
Why does my devigged sportsbook line differ from the Kalshi probability?
Three reasons. First, sportsbook hold is 4-5%; Kalshi spread is 1-3%. Devigging the sportsbook line still leaves you with the bookmaker’s central estimate, which is not the same as the peer-to-peer market’s consensus. Second, the two venues have different user bases — sharper money lands on Kalshi’s liquid contracts. Third, sportsbooks set a single line per game; Kalshi’s order book reflects every depth tier. Comparison requires picking a consistent point — typically Kalshi mid-quote vs sportsbook devigged true price.
Can I translate moneylines back into Kalshi contract prices?
Yes. Devig the sportsbook moneyline to get fair-value probability, then that probability is your fair-value YES price on the equivalent Kalshi contract. Example: DraftKings shows Eagles −175 / Cowboys +155. Implied probabilities 63.6% and 39.2%; sum 102.8%, hold 2.8%. Devigged: Eagles 61.9%, Cowboys 38.1%. The equivalent Kalshi YES Eagles contract should trade at $0.619 fair. If Kalshi quotes $0.605/$0.615 ask, you can buy at the ask for a small implied edge over the devigged sportsbook number.

Build a free model in 60 seconds →

Go →
11m read time
28 players/teams
8 key angles
Angles in this read 6 angles

Editorial example layer

Concrete examples make the page useful: tie player and team names to role, price, matchup, and timing so the content reads like analysis instead of glossary filler.
Patrick MahomesJosh AllenLamar JacksonJoe BurrowJalen HurtsJustin HerbertC.J. StroudTua TagovailoaChiefsBillsRavensEaglesLionsBengalsclosing line valuetarget shareair yardsred-zone roleroute participation
Translating Event Contracts to Spread/Moneyline Prices data infographic
Chart view of the article's core numbers. Source: inline-lib-breakevenWinPct-event-contract-vs-spread-translation.

Get picks in your inbox

One email, every slate — ranked edges, no touts. Unsubscribe any time.

Start free — pick a sport

Go →

We use cookies for essential site functionality. With your consent, we also use cookies for analytics and performance monitoring. See our Privacy Policy.