Implied Probability in Prediction Markets: How to Read a Price
For an ordinary binary contract paying $1 for YES and $0 otherwise, a $0.34 quote corresponds to a 34% price-implied probability before costs. It is a way to read the price, not proof that the event has a true 34% chance. Which quote you read also matters.
The Mechanics: Why $1 Is the Anchor
Under this particular payout assumption, buying YES for $0.62 loses the $0.62 purchase price if YES loses and earns $0.38 before costs if YES wins. Check the actual market rules: scalar and exceptional settlement outcomes need a different model.
Complementary terminal payoffs add to $1 for this ordinary binary contract. Executable YES and NO quotes are different: the two buy prices can sum to more than $1 because of the spread. A posted quote is not a collateral identity.
Kalshi describes separate buy and sell levels in its order book. Its example has a YES bid below the YES ask, with complementary NO prices on the opposite sides. Keep bid, ask, last trade and displayed midpoint separate in a dataset.
Converting Price to Odds and Back
Use consistent units. The input below is dollars per contract, so a quote reported as 34 cents must first become 0.34. The decimal-odds conversion describes a total payout multiple; American odds describe profit relative to stake. Expected P&L needs an independent model probability, not the price-implied probability itself.
from decimal import Decimal
def binary_price_example(price_usd, model_probability, fee_usd="0"):
# Ordinary $1-or-$0 payout, held to settlement; hypothetical inputs.
price = Decimal(str(price_usd))
probability = Decimal(str(model_probability))
fee = Decimal(str(fee_usd))
if not all(x.is_finite() for x in (price, probability, fee)):
raise ValueError("inputs must be finite")
if not (Decimal("0") < price < Decimal("1")):
raise ValueError("price_usd must be between zero and one")
if not (Decimal("0") <= probability <= Decimal("1")) or fee < 0:
raise ValueError("invalid probability or fee")
decimal_odds = Decimal("1") / price
american_odds = (
Decimal("100") * (Decimal("1") - price) / price
if price <= Decimal("0.5")
else -Decimal("100") * price / (Decimal("1") - price)
)
expected_pnl = probability - price - fee
return decimal_odds, american_odds, expected_pnl
print(binary_price_example("0.34", "0.40", "0.01"))
# Approximate odds 2.94 / +194.12; hypothetical expected P&L $0.05.
# This does not estimate the event probability or place an order.In the hypothetical example, a $0.34 purchase has gross decimal odds of about 2.94 and American odds of about +194.12. Those conversions do not include costs and do not measure skill. The $0.05 expected P&L depends entirely on the assumed 0.40 model probability and $0.01 cost.
Costs Change the Break-Even Calculation
Fee assumptions must come from the current venue and market. Polymarket international currently documents market-dependent taker fees and maker rebates; its US exchange is a separate product. Check the actual fee parameters and rounding rather than applying one remembered percentage to every trade.
A hypothetical ordinary binary purchase held to settlement has expected P&L per contract equal to model probability minus purchase price minus costs, under a fixed $1 winning payout and $0 losing payout. Exit trades, variable costs, special settlements and borrowing need additional terms. A small positive model value may disappear once estimation uncertainty is considered.
Investigate Price and Model Differences
A price difference from your model is an apparent discrepancy. Investigate it before calling it a mispricing: the quotes may be stale, your model may be wrong, or the contract rules may differ from your intended question.
- Quote quality. Record the observation time, book side and available size. A midpoint is a summary, not a guaranteed executable price.
- Resolution rules. A threshold, source or timing detail can explain an apparent disagreement.
- Model uncertainty. Preserve the assumptions and test sample behind the probability estimate.
- Related markets. Compare exact rules before interpreting prices across contracts; correlated outcomes are not interchangeable.
- Costs. Use market-specific fees and plausible execution assumptions, then evaluate sensitivity rather than selecting only a favorable scenario.
A Worked Example
Consider a deliberately hypothetical $0.58 executable purchase, a model probability of 0.72, and $0.02 in total assumed costs per contract. Under the ordinary held-to-settlement binary model, expected P&L is 0.72 - 0.58 - 0.02 = $0.12 per contract. These are illustrative assumptions, not a current CPI forecast, fee quote, or recommendation.
If the same assumed model probability is 0.61, the arithmetic becomes $0.01 per contract. That smaller positive number still does not establish an edge: the model's uncertainty and the realism of the cost assumption may dominate it. Preserve both scenarios in the research record.
Paper Research with Recorded Assumptions
Banger's public beta is paper-only; its documented hosted historical backtesting workflow is for Kalshi. You can use paper research to inspect data, decisions and simulated fills, while retaining the tested version and its assumptions. Public live deployment is unavailable, and a paper result is not a real-fill or profitability guarantee.
Keep the three quantities separate: price-implied probability, independently estimated probability, and a cost-adjusted hypothetical result. Converting odds is arithmetic. Demonstrating useful forecasting and execution performance requires evidence beyond that conversion.