Closing line value (CLV) is the only metric that consistently predicts long-term sports betting ROI. Beating the line just before first pitch correlates with future profitability more reliably than win rate alone. Here's why.
CLV compares your bet's odds to the closing line — the final price posted just before the game starts. If you bet a team at -110 and the line moved to -130 by close, you got +20 cents of CLV. If you bet at -130 and the line closed at -110, you got -20 cents (negative CLV).
The closing line is the market's most accurate read on a game — all sharp money has hit, all information is incorporated. Books literally use the closing line to set their next-day opening lines. If you're consistently beating the close, you're seeing the game more accurately than the entire betting market collectively.
Win/loss in any single sample is noisy. CLV is signal. Over 100 bets, +5% average CLV correlates with positive long-term ROI almost regardless of short-term W-L variance.
CLV % = (closing_implied_prob - your_implied_prob) × 100
Or in dollar terms: track the difference between what you would have paid and what the line settled at. Positive CLV = you got a better price than the close.
If you consistently beat the close, you're effectively predicting where the line will move. Books interpret this as sharp money — even if the bet itself loses. Consistent CLV-positive bettors get limited (max-bet caps lowered to recreational levels) at most US books within 30-60 days.
Every pick logs its odds at publication time. Once the line closes, we compare to the closing odds. The CLV for each pick is appended to picks_log.jsonl. Aggregate CLV is published at /track-record.html.
Per-bucket CLV (sport × pick type × confidence tier) tells us where the model is genuinely sharp vs lucky. We use this to disable buckets that drift negative — automatically — via the analytics/bucket_roi.py drift detection.