# Closing Line Value: The Real Edge Signal in Prediction Markets

## The Wrong Question Most Traders Ask

Walk up to any prediction market trader and ask how their week went. They will tell you their win rate. They will tell you their profit and loss. Almost none of them will tell you their closing line value, because almost none of them measure it. And that is the single biggest reason most traders cannot tell whether they are skilled or whether they have been lucky.

Win rate is a lagging, noisy, outcome-dependent metric. It takes hundreds or thousands of trades to converge to its true value. By the time win rate moves enough to confirm that a strategy is dead, you have usually been bleeding for three to six weeks. Profit and loss is even worse — it tells you what already happened to your bankroll, not whether your edge is real.

There is a better metric. Sharp sports bettors have used it for decades. It works on prediction markets too. It tells you in days what win rate takes months to confirm. It is called closing line value, and this is the post that finally explains why it should be the metric you trust above all others.

## What Closing Line Value Actually Is

Closing line value, or CLV for short, is the difference between the price you got and the market's final price right before resolution.

If you bought a Polymarket contract at 60 cents and the line closed at 68 cents, your CLV is positive 8 cents. If you bought at 60 cents and the line closed at 55 cents, your CLV is negative 5 cents. Positive means the market moved toward your position after you entered. Negative means it moved away.

Notice what is missing from this definition: the actual outcome of the game. CLV does not care whether you won or lost. The closing line is the market's final, most-informed estimate of the true probability. If you consistently get prices better than that estimate, you have edge. The outcome is just one realization of a probability distribution. CLV measures the distribution itself.

This is why CLV is so powerful. You can have a 50% win rate and still know with high confidence that you have edge, if your average CLV is positive. You can have a 60% win rate and know with high confidence that you do not, if your average CLV is negative. Win rate is downstream of luck. CLV is upstream of it.

## Why CLV Beats Win Rate

Three reasons. The first is variance.

Win rate over 100 trades has a 95% confidence interval of roughly plus or minus ten percentage points. That means you can hit 50% or you can hit 70% on the exact same edge, purely by luck. CLV does not have this problem. Every single trade contributes a continuous-valued data point — not a binary win or loss but the actual cents of edge captured. The averages converge much faster. After 100 trades, your CLV estimate is dramatically more reliable than your win rate.

The second reason is selection. Imagine a trader who only bets on heavy favorites at 80 cents. They might hit 75% of those bets. Their win rate looks great. But they make 5 cents on each win and lose 80 cents on each loss. Net result: catastrophic losses. CLV does not have this problem. It measures pricing accuracy independent of which side of the contract you are on or how many wins versus losses you have.

The third reason is timing. CLV is a leading indicator. Win rate is a lagging one. We have a tennis bot that ran from March through April this year. The win rate dropped from 61% to 52% over those two months — a drop that, in a 70-trade sample, is statistically marginal and easy to dismiss as variance. The CLV told a different story entirely. It dropped from positive 3.4 cents to negative 3.1 cents, a 6.5-cent shift. That signal was unmistakable. It told us the model was being adversely selected six weeks before the profit and loss turned negative. With CLV monitoring, we would have retrained the model in early March instead of letting it bleed through late April.

## The Closing Price Problem on Prediction Markets

Sports betting CLV is well-defined. There is a closing line at game start, broker-aggregated and easy to look up. Prediction markets are messier because they keep trading after the game starts, liquidity drops sharply in the final minutes, and the contract resolves to zero or one hundred instantly when the outcome is known. The literal last trade before resolution is uninformative — it is already at the resolved value, not at a probability estimate.

The pragmatic fix is to define your "close" as the volume-weighted middle price during the last 60 to 120 seconds before the contract becomes essentially binary — that is, before the market knows the outcome. For a moneyline contract, that is roughly two minutes before the final whistle. For a spread or total, it is whenever the score moves the line definitively.

An alternative we use as a fallback is the last in-band price — the last price at which the contract traded between 5 cents and 95 cents. Once the contract leaves that band, the market is making a settlement guess, not a probability estimate. We persist candidate close prices to a small file and consume them at settlement time. This catches CLV records even for trades that resolve while the bot is offline, which the bot-side hooks alone cannot cover.

## How We Track CLV in Production

The implementation is conceptually simple. Every time the bot enters a trade, it logs a signal record: the token, the side, the entry price, the sport, the edge, the bot name. Every time a contract resolves or hits the in-band cutoff, the bot logs a close record: the token and the close price.

A nightly aggregator walks the log, joins signals to closes by token, computes CLV per signal, and rolls them up by sport, by edge bucket, and by bot. The result is a dashboard that shows, for example, NBA trades in the 8-to-12-cent edge bucket are running positive 3 cents CLV over the last 30 days, while CS2 trades in the same bucket are running negative 2 cents CLV. That immediately tells us where our edge is real and where it is not.

The canonical log file is called clv_data.jsonl. There is also a daily-refreshed bucket file called clv_buckets.json that summarizes the rolling averages. Together they power the admin dashboard at zenhodl.net slash admin slash CLV, which we treat as the most important monitoring view in the entire system. Profit and loss tells us what happened. CLV tells us whether our edge is still alive.

## What CLV Tells You

A few rules of thumb after running this in production for a year.

Positive average CLV across more than 100 trades in a sport-edge bucket means you have real edge in that bucket. Even if individual trades lose, the math is on your side. You will get paid eventually.

CLV near zero means you are trading at the same accuracy as the market. You will lose to fees and slippage. Either tighten your filters or kill the bucket entirely. There is no glory in trading with no edge.

Negative CLV means you are being adversely selected. The market knows something your model does not. Your entries are systematically worse than the closing estimate. Stop trading that bucket immediately. There is no fixing this with discipline — the only fix is a better model or different filters.

Seven-day CLV trending below 30-day CLV is the canary. Your model is degrading. Retrain or recalibrate before profit and loss confirms it.

This is not theoretical. We watch the seven-day-versus-thirty-day delta first thing every morning. Faster than reading P&L deltas. Less noisy than win rate. The most actionable monitoring signal we have.

## Using CLV as a Pre-Trade Gate

Once you have a few weeks of CLV history per sport-and-edge bucket, you can use CLV as a filter on future trades. We deployed this in late April under the name CLV gate. It looks up the historical CLV for the bucket the candidate trade falls into. If that bucket has consistently lost market value to the close, the gate refuses the trade.

We deployed in three modes. The first is "off" — gate disabled, used during initial development. The second is "shadow" — gate computes its decision on every signal and logs whether it would have blocked, but does not actually block any trades. The third is "enforce" — gate actually rejects signals that fall in negative-CLV buckets.

Shadow mode is critical. It lets you watch the gate make decisions for a week or two before you trust it. We learned several things from shadow mode that we would have missed if we had just flipped to enforce. We learned that the bucket boundaries were too narrow — we had been slicing by 5-cent edge bands and the sample sizes per bucket were too small. We learned that the gate was over-firing on Wednesday nights specifically, because Wednesday-night NBA games have lower liquidity and weirder pricing. We adjusted both before going live.

The gate now runs in enforce mode for the moneyline bots — NBA, NHL, MLB, NCAAMB, NCAAWB, CFB, and NFL. The non-moneyline bots — tennis, CS2, LoL, soccer — were missing CLV history entirely until we patched a bug in their position-restoration logic. That bug meant they never wrote close records, which meant their CLV buckets never populated. Once the patch shipped, we had to wait two weeks for buckets to fill, and we are now turning on the gate for those bots one at a time.

## CLV Versus Profit and Loss: Which Is the Truth?

You will occasionally hear traders argue that profit and loss is the only metric that matters because it is the cash you take home. They are not entirely wrong. But profit and loss is the output, not the diagnostic. CLV is upstream of profit and loss.

Positive CLV with reasonable position sizing produces positive profit and loss over a sufficient sample. Negative CLV will eventually produce negative profit and loss, even if a 50-trade hot streak is hiding it temporarily.

If your CLV is positive and your profit and loss is negative, the problem is execution, sizing, or fees — not your edge. Investigate those. If your CLV is negative and your profit and loss is positive, you are on a hot streak that will mean-revert. Manage the bot by CLV; report results by profit and loss. They are two different jobs.

## The Adverse Selection Lens

The deepest reason CLV works is that it measures whether the market agrees with you after digesting the same information you used. Sharp traders move lines. Slow money does not. If your entry routinely beats the close, you are consistently faster or smarter than the marginal price-setter. If it routinely loses to the close, you are slower or dumber.

Your model can be brilliant in expectation and still lose money on traded games, because traded games are not a random sample. They are the games where your model disagreed with the market. In those specific disagreements, the market might be right more often than your model. CLV catches this immediately. Win rate does not catch it for months.

This is also why backtests overestimate live performance. A backtest evaluates the model on every game. Live trading only enters when the model thinks the market is wrong. The market knows when it is wrong less often than your model thinks. The gap shows up first as low or negative CLV. Then, eventually, as red profit and loss. Watching CLV closes the loop.

## Real Numbers From Our Trading

We run automated bots across eleven sports on Polymarket. Every bot writes CLV signals and closes. Here is what twelve months of data shows.

Across all sports, our average CLV is positive 2.8 cents per trade. That number alone tells us our edge is real. It is small enough to be plausible — anyone claiming positive 10 cents CLV is probably not measuring correctly — and large enough to clear our 2-cent effective taker fee with margin.

By sport, the spread is wide. NCAAMB is our best at positive 4.6 cents average CLV — consistent with the 5,345-game backtest that produced 4.39% Expected Calibration Error. NHL is positive 3.1 cents. NBA is positive 2.4 cents. CS2 is positive 1.9 cents. Tennis is positive 1.2 cents. Some buckets within each sport are negative — for example, tennis edges over 20 cents have averaged negative 1.5 cents CLV, which is why our tennis bot caps maximum edge at 20 cents. The very large detected edges are usually the model being wrong, not the market.

By edge bucket, the pattern is consistent. The best CLV is in the 10-to-15-cent edge band. Smaller edges get eaten by fees. Larger edges are more often model errors than real opportunities. The positive-CLV core is in the middle of the distribution. We size aggressively on those middle-edge trades and reject signals on the wings — both too-small and too-large.

The seven-day-versus-thirty-day trend is what we watch most. When seven-day CLV is positive 1 to 2 cents below the 30-day, we look for what changed — usually a calibration drift or a feature pipeline issue. When the gap closes back, we know the recovery is real, before profit and loss confirms it.

## The Bottom Line

Win rate tells you whether you got lucky. CLV tells you whether you have edge. The difference is enormous.

Most prediction market traders never measure CLV because building the pipeline takes a couple hundred lines of code and a daily aggregation job. That is the entire moat. The math is simple. The discipline is to measure it, watch it daily, and trust it more than your gut about whether the strategy is working.

If you take one thing from this post, take this: build the CLV pipeline. Log every entry. Log every close. Compute the average. Watch the seven-day-versus-thirty-day trend. Within a month of doing this honestly, you will know things about your trading that the profit-and-loss curve was hiding from you the whole time.

That is the edge that compounds across years. Not the trading. The measurement.

---

*ZenHodl publishes its CLV per sport, per edge bucket, and per bot at zenhodl.net slash admin slash CLV. Every probability our API returns is part of the CLV pipeline that produces those numbers. Seven-day free trial at zenhodl.net. Full blog post with the Python implementation: zenhodl.net slash blog slash closing line value. The CLV monitoring framework is taught in Module 6 of the bot course included with every API plan.*
