# KL Divergence: How to Tell a Real Mispricing From a Coincidence

*By Benny Ricciardi, FSWA Award Winner · Published Author · Ran 4Deep Sports · Led FTN Marketing · Traded Bonds on Wall Street — The 7 Oracles at PredictionMarketsPicks*

A 10-cent gap at 50¢ is not the same trade as a 10-cent gap at 90¢. KL divergence scores how far two prices actually disagree — and where the raw gap lies to you. The math, the worked Kalshi example, and the one trap that has burned every scanner.

- Source: https://predictionmarketspicks.com/articles/mispricing-kl-divergence
- Published: 2026-06-04
- Updated: 2026-07-10

---

You see two prices on the same event. Kalshi has YES at 62¢. Another platform has it at 50¢. Twelve cents apart. Is that a trade, or is it noise?

The honest answer is: it depends entirely on *where* on the book those prices sit. A twelve-point gap in the middle of the book is mostly noise. The same twelve-point gap up near 90¢ is a screaming mispricing. Your eye can't tell the difference. KL divergence can.

This is the number behind the [KL-Divergence Arb Detector](https://predictionmarketspicks.com/tools/kl-divergence) and one of the engines inside the [Mispricing Scanner](https://predictionmarketspicks.com/tools/mispricing-scanner). Here is exactly how it works and the one trap that has quietly burned every scanner that ignored it.

Finding **Kalshi binary markets mispriced** against fair value is the whole point of the exercise, and KL divergence is the filter that separates a real gap from a coincidence. Our [Mispricing Scanner](https://predictionmarketspicks.com/tools/mispricing-scanner) runs this daily — a Bayesian dual-agent scan that flags Kalshi contracts trading 5+ percentage points off fair value, cross-checked against Polymarket and an independent probability model — so you do not have to score each gap by hand. The math below is what makes that flag trustworthy near the edges of the book.

## The formula

For a binary market — one that resolves YES or NO — with your probability `p` and the market's probability `q`:

```
KL(P‖Q) = p·ln(p/q) + (1−p)·ln((1−p)/(1−q))
```

Both `p` and `q` are just prices divided by 100. A Kalshi contract at 62¢ is `p = 0.62`. That's it — cents *are* probability on a prediction market.

KL is directional, so the tool reports the **symmetric** version, which averages both directions into one clean distance:

```
Symmetric KL = [ KL(P‖Q) + KL(Q‖P) ] / 2
```

Bigger number, sharper disagreement. Zero means the two prices agree exactly.

## Why the raw gap lies to you

Here's the whole point of using KL instead of subtraction. Consider two situations, both with a 10-point gap:

- **Near the middle:** one price 55¢, the other 45¢. The implied odds barely move. You're going from "slight favorite" to "slight underdog." Nothing dramatic.
- **Near the edge:** one price 95¢, the other 85¢. That's the difference between a 19-to-1 favorite and a 17-to-3 favorite. In payout terms it's an enormous gap — a YES buyer at 85¢ stands to make 15¢ on a dollar where a buyer at 95¢ makes 5¢. Three times the return.

Same 10 cents. Wildly different trades. KL divergence is built to reflect that — it weights disagreement near the extremes of the book far more heavily than disagreement in the middle, because that's where the real money lives.

## A worked example

Say the same event is priced two ways and you want to know if it's worth a closer look. Kalshi has YES at **85¢**; a sportsbook's contract on the identical outcome implies **60¢**. (We name the book only as a price foil — the comparison is what matters.)

Plug in `p = 0.85`, `q = 0.60`:

```
KL(P‖Q) = 0.85·ln(0.85/0.60) + 0.15·ln(0.15/0.40)
        = 0.85·(0.349)   + 0.15·(−0.981)
        = 0.296          − 0.147
        = 0.149

KL(Q‖P) = 0.60·ln(0.60/0.85) + 0.40·ln(0.40/0.15)
        = 0.60·(−0.349)  + 0.40·(0.981)
        = −0.209         + 0.392
        = 0.183

Symmetric KL = (0.149 + 0.183) / 2 ≈ 0.17
```

A symmetric KL of **0.17** clears the tool's 0.15 ARB threshold. That 25-point gap, sitting up near the top of the book, is exactly the kind of disagreement worth chasing down. **ARB FLAGGED.**

## The trap that burns scanners

Now run the gap I opened with — Kalshi 62¢ vs. the other platform 50¢, a 12-point gap right in the middle:

```
Symmetric KL ≈ 0.029
```

That scores **ALIGNED**. A twelve-point gap — bigger than the EV edge most traders would happily size up — reads as "nothing here" on a pure KL screen. This is not a bug in the math; it's the nature of it. **KL divergence collapses toward zero near 50/50.**

This exact failure mode has burned automated scanners that gated their alerts on KL alone. PMP's own sports-arb scanner flagged *nothing* for a stretch because an 8-to-12 point tradeable gap near the middle scored ~0.02 and got filed as aligned. The fix was to trigger on the **raw points gap** near the middle of the book and use KL as the truth-teller out near the extremes — never the other way around.

So the rule:

> **Near 50/50, read the points gap. Near the edges, trust KL.** Use both lenses; never let one alone make the call.

## Fair value vs. market price — the bigger picture

KL divergence answers "how far apart are these two prices." It does **not** tell you which one is right. That's a separate judgment: you need a fair-value estimate of your own — from a model, a base rate, or a news read — and then you measure *your* number against the market's.

The full workflow looks like this:

1. **Estimate** your fair probability.
2. **Compare** it to the market price — points gap in the middle, KL at the edges.
3. **Price the edge** with the [EV Calculator](https://predictionmarketspicks.com/tools/ev-calculator). A gap is not edge until it survives the spread and fees.
4. **Size it** with [Kelly](https://predictionmarketspicks.com/tools/kelly) — fractional, always.

KL is step two's instrument when prices live near the extremes. It's a measuring tape, not a verdict.

## Net it against costs before you call it a trade

A screen gap is not edge. Before any KL flag becomes a position:

- **Spread:** you cross the bid/ask, not the mid. A 17-cent edge with an 8-cent round-trip spread is a 9-cent edge.
- **Fees:** Kalshi and other platforms each have their own schedule. Net them.
- **Liquidity:** thin books move on your own size. The price you see is not the price you get for any real position.

A good rule of thumb: require the gap to beat your total round-trip cost by a comfortable margin before you treat it as actionable. KL tells you the disagreement is real and meaningful. Your cost stack tells you whether it's worth touching.

## Run it yourself

Paste two YES prices from any two platforms on the same event into the [KL-Divergence Arb Detector](https://predictionmarketspicks.com/tools/kl-divergence) and it returns ALIGNED, WATCH, or ARB FLAGGED instantly — symmetric KL computed for you. For automated discovery across many markets at once, the [Mispricing Scanner](https://predictionmarketspicks.com/tools/mispricing-scanner) runs the same logic every morning — grading each flag against a [strict high-confidence gate](https://predictionmarketspicks.com/articles/mispricing-scanner-high-confidence-explained) and [failing closed](https://predictionmarketspicks.com/articles/why-the-mispricing-scanner-fails-closed) rather than inventing an edge when a signal is missing.

And if you want the rest of the framework — estimate, price, compare, cost, size — start at the [prediction markets quant hub](https://predictionmarketspicks.com/learn). KL divergence is one instrument on the desk. It's a good one. It's not the whole desk.

---

## Disclosure

PredictionMarketsPicks publishes analysis of CFTC-regulated event contracts. Nothing here is financial advice and every position carries risk.

Links to Kalshi, DraftKings, FanDuel, Fanatics, Polymarket in this article are referral links marked "sponsored" — we may be paid if you open an account. It costs you nothing and never changes what the model says.
