Win rate lies. A bettor can hit 60% of their wagers for six months straight and still be heading toward bankruptcy if they're getting bad prices. A bettor can sit at 47% on the year and be on a long-term winning track if their entries beat the closing line.
The metric that resolves the paradox is Closing Line Value — CLV — and it is the single most important number a serious bettor or prediction market trader tracks. It also happens to be the number that sportsbooks watch when they decide who to limit.
What CLV Is
Closing Line Value is the difference between the price you got on your bet and the price the market settled at right before the event started. Beating the closing line means you got better odds than the consensus final estimate.
Two equivalent ways to compute it:
CLV (in cents) = entry_price - closing_price
CLV (in basis points) = (entry_decimal_odds / closing_decimal_odds - 1) × 10000
The first is the format we use at ZenHodl for prediction market trades — entry price is the cents-per-share you paid, closing price is the last traded price before the market resolved. Positive CLV means you bought lower than the market eventually agreed you should have.
For sportsbook bettors the second form is more natural because the entry and closing are in odds rather than dollar prices. A +5% CLV means the market closed at odds about 5% worse for the bookmaker than the odds you took.
Why CLV Beats Win Rate
Win rate is a result. It mixes two things together — the quality of your picks and the variance of the outcomes. In a small sample, a coin-flip bettor can produce any win rate from 30% to 70% with completely random picks.
CLV is a process metric. It measures whether your entries were systematically better than the final market consensus. The closing line is the most efficient probability estimate the market produces — it incorporates all the information bettors collectively brought to the market. If you consistently beat that estimate, you have edge, regardless of what the variance gods do to your win rate in any given month.
Concretely: in a sample of 500 bets, a +2% average CLV bettor will almost certainly be profitable over the long run, even if their current win rate looks unimpressive. A 58% win rate bettor with negative CLV is bleeding edge — they got lucky on outcome variance and are headed for regression.
This is why sportsbook risk teams care about CLV, not win rate. A 70% win rate on heavy favorites with negative CLV is a customer who got lucky; the book will keep them. A 51% win rate on underdogs with consistent +3% CLV is a customer who is beating the market; the book will limit them within weeks.
Worked Example: Prediction Market
You buy 100 shares of the Lakers YES contract on Polymarket at 35¢ pregame. Game starts. Twenty minutes before tipoff the market settles at a final pre-game price of 41¢.
CLV = entry_price - closing_price = 35¢ - 41¢ = -6¢
Wait — that's negative. Yes: positive CLV here means closing price is below entry price if you bought, because you paid more than the market eventually said the contract was worth. Let me re-state, carefully:
When you buy at price $p_\text{entry}$ and the contract closes at $p_\text{close}$:
CLV_for_buyer = p_close - p_entry
You want the closing price to be higher than your entry — the market eventually agreed the contract was worth more. So in the example above:
- Entry: 35¢
- Close: 41¢
- CLV: +6¢ (good — market closed above your entry by 6 cents)
If the contract had closed at 28¢, your CLV would have been -7¢ (bad — you paid 35¢ for something the market eventually priced at 28¢).
This is what ZenHodl's CLV tracker logs for every signal: entry price, close price (last in-band quote before the game starts or before the event resolves), and the difference. Aggregated across thousands of trades it produces the cleanest read on whether the models are still finding edge or have started losing market value over time.
Worked Example: Sportsbook
You bet $100 on the Lakers at +110 (decimal 2.10, implied probability 47.6%). The market closes with the Lakers at +100 (decimal 2.00, implied probability 50.0%).
CLV (basis points) = (2.10 / 2.00 - 1) × 10000 = 500 bps = +5%
You got the Lakers at 47.6% implied probability when the market eventually agreed they were 50%. You beat the close by 5%, which over a large sample is meaningful long-term edge.
If the market had closed at +120 (decimal 2.20):
CLV = (2.10 / 2.20 - 1) × 10000 = -454 bps ≈ -4.5%
You took -4.5% CLV. The market eventually said the Lakers were worse than the price you accepted. Whether the Lakers actually won is irrelevant — the variance of one game can absorb a 4.5% information disadvantage and still pay out. Over a thousand bets, it can't.
How Bookmakers Use CLV
Modern sportsbook risk algorithms compute CLV in real time. Every bet you place is logged with the eventual closing line and the difference becomes part of your customer profile.
The criteria for being flagged as "sharp" (and therefore limited or banned) vary by book but typically look like:
- 200+ bets logged
- Average CLV > +1.5% to +2.0%
- Win rate isn't even a factor in the limiting decision
This is why genuinely +EV bettors get limited within months of starting at any retail US sportsbook. The book doesn't need to wait for you to "prove" you're winning by accumulating P&L — the CLV signal arrives long before the variance smooths out.
Prediction markets behave differently. There's no risk team because there's no bookmaker absorbing the other side — every position is matched against another trader. Positive CLV on Polymarket means you're picking off slower money. The platform has zero incentive to limit you.
How to Track CLV Yourself
You need three things for every bet:
- Entry price (cents on a prediction market, or American/decimal odds at a sportsbook)
- Closing price (last price before event start, or last in-band quote before resolution)
- A consistent way to compute the difference
For a sportsbook:
def clv_bps(entry_decimal: float, closing_decimal: float) -> float:
"""CLV in basis points. Positive means you beat the close."""
return (entry_decimal / closing_decimal - 1) * 10000
For a prediction market:
def clv_cents(entry_price_cents: float, closing_price_cents: float, side: str) -> float:
"""CLV in cents. Positive means you beat the close.
`side` is 'buy' or 'sell'."""
if side == 'buy':
return closing_price_cents - entry_price_cents
else: # sell
return entry_price_cents - closing_price_cents
Log every trade. After 100 bets your average CLV is a noisy estimate. After 500 it's a strong signal. After 1000+ it is more reliable than your win rate for predicting future returns.
Sustained Positive CLV vs Lucky Streak
A common misread: someone has +10% CLV on their last 20 bets and concludes they have massive edge. That's noise. CLV variance across small samples is large.
The threshold roughly looks like this:
- 20-50 bets: CLV is noise. Don't draw conclusions.
- 100-200 bets: CLV starts to be informative. Standard error is still big.
- 500+ bets: CLV is a robust signal. ±0.5% positive is a respectable edge; ±2% sustained is sharp territory.
- 1000+ bets: This is when you can break it down by sport, market type, and edge bucket — which is where the real diagnostic value lives.
ZenHodl's /admin/clv dashboard shows this breakdown across our trade history: per-sport CLV trends, 7-day vs 30-day comparisons, and per-edge-bucket breakdowns that surface model degradation faster than any P&L chart could.
Using CLV as a Pre-Trade Gate
Once you've accumulated enough CLV history per market segment, you can use it to filter signals before placing them. The pattern: bucket your historical trades by (sport, edge band), measure the average realized CLV per bucket, and refuse to trade buckets that have consistently lost market value to the close.
This is exactly what ZenHodl's CLV pre-trade gate does internally. A signal that looks +EV on paper but lives in a bucket with historical -2% average CLV is almost certainly facing some structural problem we haven't modeled — late information, adverse selection, or systematic mispricing of a feature. Refusing those trades preserves capital for the buckets where CLV is actually positive.
The Bottom Line
Win rate tells you what happened. CLV tells you whether what you did should have happened. Over short stretches they disagree; over long stretches they converge, and CLV gets there first.
If you're serious about long-term profit, track CLV. If you're seeing positive CLV alongside ugly short-term P&L, keep going. If you're seeing negative CLV alongside happy short-term P&L, you're getting lucky and you should fix the process before variance corrects.
The bookmakers know this. The serious traders know this. The people who don't know it are the ones who chase their last lucky streak right back to zero.
Free interactive CLV calculator — paste your entry and closing prices, see CLV in cents and basis points. See live CLV breakdowns at /clv and /clv-evidence. Pair with the Kelly Criterion calculator, the hedge calculator, and the odds converter. Related reading: why we reject 65% of signals, betting strategies with ML probabilities.