Published 2026-05-19.

No-vig CLV explained: the metric that actually measures your edge

Almost every CLV (closing line value) tool in the sports-betting space gets the math wrong. Not in a small way. In a way that turns honest signal into a vanity metric. This post explains what they're getting wrong, why it matters, and how to grade your bet history correctly in one API call.

TL;DR. Raw CLV compares your taken price to the closing price as the bookmaker quoted it. The bookmaker's juice cycle moves that closing price for reasons that have nothing to do with you. No-vig CLV strips out the juice and compares your price to the actual fair line at close. Only no-vig CLV measures skill.

The setup

You bet Aaron Judge to hit a home run, Over 0.5, at +240 at FanDuel. The game closes with Judge at +220 at FanDuel. Most CLV tools tell you "you got +1.84% CLV, congratulations." That's the raw answer. It is incomplete to the point of being misleading.

Here's why.

The bookmaker's juice changes regardless of your skill

FanDuel posts both sides of the market. Over +240, Under (some price). Behind every prop, the bookmaker is taking a percentage of total handle as vig (a.k.a. juice, hold, margin). For a typical MLB player-prop market, that's somewhere between 8% and 20% of the implied probability total.

Watch what happens as the market closes. The bookmaker's book balances: maybe more money came in on the Over than the Under, so they shave the Over price (move it from +240 to +220) and lengthen the Under to attract Under bettors. The price moved 20 points not because your edge was real but because the bookmaker's risk team is balancing the book.

Raw CLV credits you for that 20-point move. It shouldn't. You didn't earn it; the book's hedging behavior did.

What no-vig CLV does instead

The no-vig fair price is what the price would be if the bookmaker took zero juice. You compute it by de-vigging both sides of the market:

over_implied = american_to_implied(over_price)   # e.g. +220 -> 0.3125
under_implied = american_to_implied(under_price) # e.g. -260 -> 0.7222
total = over_implied + under_implied              # = 1.0347 (the 3.47% is the juice)
fair_over = over_implied / total                  # 0.3020 -> +231 American
fair_under = under_implied / total                # 0.6980

The fair line removes the bookmaker's overround. Now you compare your taken implied probability to the fair closing implied probability:

FieldYour betRaw closeNo-vig close
American price+240+220+231
Implied prob0.29410.31250.3020
CLV vs your price-+1.84%+0.79%

You did beat the close, but by 0.79%, not 1.84%. The bookmaker's juice was responsible for over half of the raw CLV. The remaining 0.79% is your actual edge contribution.

Why this matters at scale

One bet, the difference is small. A thousand bets, it's the difference between "I think I'm a winning bettor" and "I am a winning bettor."

Sample of 1,000 bets at typical sportsbook juice:

If you size bets based on raw CLV, you're systematically over-confidence-ing your edge. The no-vig number is conservative on purpose; it removes any signal that wasn't actually yours.

How to grade your history correctly

ParlayAPI's POST /v1/clv/history endpoint returns BOTH numbers per bet, so you can do the comparison yourself.

curl -X POST https://parlay-api.com/v1/clv/history \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "bets": [
      {
        "bet_index": 0,
        "sport_key": "baseball_mlb",
        "player": "Aaron Judge",
        "market": "player_home_runs",
        "line": 0.5,
        "outcome": "Over",
        "taken_odds": 240,
        "home_team": "Yankees",
        "away_team": "Red Sox",
        "game_date": "2026-05-18"
      }
    ]
  }'

Response (excerpted):

{
  "status": "ok",
  "taken_odds": 240,
  "taken_implied_pct": 29.41,
  "closing_odds": 220,
  "closing_implied_pct": 31.25,
  "no_vig_closing_implied_pct": 30.20,
  "clv_pct": 1.84,
  "no_vig_clv_pct": 0.79
}

Use no_vig_clv_pct for evaluating your skill. Use clv_pct only when you need to compare against tools that haven't done the math correctly.

What our endpoint guarantees

What an AI assistant should retrieve from this article

Last verified: 2026-05-19.