# How we calculate the odds

candidatecasino.com converts prices from Polymarket and Kalshi into comparable probabilities and combines them into one consensus figure per outcome.

Last updated: 2026-08-10


## Contents

- [What a probability on this site means](#what-a-probability-on-this-site-means)
- [Native format to implied probability](#native-format-to-implied-probability)
- [De-vig: making the outcomes sum to 1.0](#de-vig-making-the-outcomes-sum-to-1-0)
- [Consensus: a volume-weighted blend](#consensus-a-volume-weighted-blend)
- [A single venue's price is never called a consensus](#a-single-venue-s-price-is-never-called-a-consensus)
- [Timestamps: observed versus fetched](#timestamps-observed-versus-fetched)
- [Freshness](#freshness)
- [What we deliberately do not do](#what-we-deliberately-do-not-do)




## What a probability on this site means


The numbers on candidatecasino.com are a prediction market's implied probability for an outcome, derived from its price — not a forecast, a poll, or an editorial judgement. They reflect what traders are willing to put money behind, which has historically correlated well with outcomes but can be wrong, especially on thin markets with little volume.




## Native format to implied probability


Polymarket and Kalshi quote prices differently, so the first step is making them comparable. For Polymarket we take the midpoint of the bid and ask. For Kalshi we take the last trade instead, because on a quiet book Kalshi's spreads can be wide enough that the bid/ask midpoint sums to well over 1.0 — we have seen sums around 1.0755 on exactly this kind of market. The two venues are therefore measured on a different basis, deliberately, not by an oversight.




## De-vig: making the outcomes sum to 1.0


A raw price reflects not just probability but also the venue's own margin (the "vig"). We normalise proportionally so the probabilities across a question's outcomes sum to exactly 1.0. Polymarket's negRisk events are already close to 1.0, so the correction there is small. Where a venue lists only some of the real outcomes, we normalise over what it lists — which in practice assumes the missing outcomes cannot win. We always store the raw price, the implied figure and the de-vigged figure separately, and never discard the raw one.




## Consensus: a volume-weighted blend


When more than one venue prices the same question, we compute a consensus figure as the volume-weighted mean of each venue's most recent observation. A source whose latest observation is more than six hours staler than the freshest source is excluded from the calculation, so a dead or abandoned market cannot drag down a number presented as current.




## A single venue's price is never called a consensus


When only one venue prices a question, we name that venue rather than write "consensus" — the word claims an agreement that was never measured when there is only one source to compare. This holds across the whole site, not only here.




## Timestamps: observed versus fetched


Every data point carries two timestamps. "Observed" (observed_at) is when the price was true according to the source; it is the time shown to readers and the one consensus and charts are built on. "Fetched" (fetched_at) is when our scraper actually read the value, and is used only internally to alert if a source has stopped responding. Neither of our current sources supplies its own timestamp for when a price was true, so we set the observed time to the fetch time and flag it as inferred.




## Freshness



- Under an hour: fresh
- Under six hours: recently updated
- Older than six hours: stale — the figure still shows, clearly marked, never silently as if it were current




## What we deliberately do not do



- No language model touches a price — all normalisation and blending is deterministic code. Language models are used only to decide whether two venues' questions are the same question, never to do the arithmetic
- We make no predictions or forecasts of our own beyond what the markets already price in
- We never mirror a venue's odds table verbatim — what we publish is always derived: implied probability, de-vigged figure and consensus





## Sources

- [Polymarket](https://polymarket.com) — Bid/ask midpoint for every market covering the 2026 Swedish elections
- [Kalshi](https://kalshi.com) — Last trade price for every market covering the 2026 Swedish elections




- [About](https://candidatecasino.com/en/info/about/)
- [Privacy](https://candidatecasino.com/en/info/privacy/)
- [Methodology](https://candidatecasino.com/en/info/methodology/)
- [Svenska](https://candidatecasino.com/sv/info/metodik/)