The gap between knowing and doing
You already know CLV is the metric that matters. Every serious analytics piece — including ours — says the same thing: investors who consistently beat the closing line are the ones who actually win. So you started logging it. A Google Sheet, one row per position, columns for allocation, returns taken, returns at close, result, and a formula that does the CLV math. It works. For a week.
Then real life happens. You missed the closing line on three NHL games last night because you were at dinner. Your formula in column F starts throwing #REF! errors because someone deleted column G. The sample size you have is too small to tell you whether your +3.1% rolling CLV is real or noise. And the position you should have already analyzed is still sitting in row 47 waiting for you to remember which broker you took it at. This is the gap between knowing you should track CLV and actually doing it well. This guide walks through three concrete options for closing that gap — manual, semi-automatic, and fully automated — and tells you which one fits which kind of investor.
Quick recap: why CLV matters (in 90 seconds)
For readers landing here without context: closing line value (CLV) measures how much better the returns you took were compared to the returns available right before the event started. If you took +145 and the line closed at +130, you beat the close. Across enough positions, sustained positive CLV is the cleanest statistical evidence that an investor has a real edge — cleaner than win-loss record, cleaner than ROI, cleaner than any other single metric a public investor can compute.
The reason: results are noisy, prices are not. A losing position at +CLV is statistically more valuable than a winning position at -CLV. Investors who post consistent +CLV figures over 300+ positions are statistically all but guaranteed to be long-term profitable, even when individual sessions go badly. Independent studies of public position-tracker datasets repeatedly show the same pattern: investors who sustain at least +1.5% CLV over 500-plus positions are profitable in roughly 95% of independent samples, regardless of which sport or broker the positions came from. For the full mathematical case, see our explainer on closing line value. For a one-position check, the CLV calculator handles the no-vig math directly.
The 3 ways investors track CLV today
Pick the approach that matches your position volume and how much infrastructure work you actually want to own. Most investors over-engineer this and end up with a half-built system; most under-engineer it and end up with no system at all. Be honest about which bucket you are in before reading the comparisons.
| Method | Time per position | Closing line accuracy | Cost / month | Maintenance |
|---|---|---|---|---|
| Manual sheet | ~5 minutes | Variable; you look it up | $0 | High — errors, missed closes |
| API + sheet | ~30 seconds setup, near-zero ongoing | High; pulled from data feed | ~$30 + your dev time | Medium — cron, retries, schema drift |
| Dedicated tool | 0 seconds | High; built-in | $0 Free / $19.99 Pro | None |
Building a CLV tracker yourself (DIY approach)
The lightweight version of a CLV tracker is a Google Sheet with five columns: Position, Returns taken, Closing returns, CLV %, and Result. The CLV percentage in column D is a one-line formula:
=((B2/C2) - 1) * 100
Where B2 is the decimal price you took and C2 is the decimal closing price. If the result is positive, you beat the close on that position. Aggregate across all positions with =AVERAGE(D2:D500) at the bottom of the sheet. That is your portfolio CLV.
Two refinements make the sheet more useful. First, add a column for the sport so you can compute CLV per sport with =AVERAGEIF(). Second, add a column for the broker so you can see which brokers you are beating and which you are losing to (a strong signal that a broker is sharpening up on you). The total google sheets CLV template ends up being about 8 columns, 20 lines of formulas, and a chart pinned at the top.
The DIY approach’s real cost is not setup. It is the manual closing-line lookup before every event. You need to remember to check the line within 5 to 15 minutes of the event starting, write it down in column C, and do this for every position you placed. Miss it, and you have a row with no closing returns, which means no CLV, which means a hole in your statistical sample. For investors with low volume (5 to 10 positions per week) and a tolerance for the admin overhead, this works fine. For anyone above 15 positions a week, the lookups become the limiting factor.
Automating with The Returns API
For developers who would rather write code than maintain a spreadsheet, the next step up is pulling closing returns programmatically. The Returns API offers a decent feed for around $30 per month at its personal-use tier. Below is the minimal closing line value tracker you can build with it, written for clarity rather than production rigor.
import requests, csv
KEY = "your_api_key_here"
def closing_returns(event_id, market, side):
url = f"https://api.the-returns-api.com/v4/sports/.../returns-history"
r = requests.get(url, params={"apiKey": KEY, "event_id": event_id})
return r.json()[market][side]["close"]
with open("positions.csv") as f:
for position in csv.DictReader(f):
close = closing_returns(position["event_id"], position["market"], position["side"])
clv_pct = (float(position["returns_taken"]) / close - 1) * 100
print(position["id"], f"{clv_pct:+.2f}%")
That is the entire data path. In practice you will wrap it with cron, add retry logic for API rate limits, handle the schema changes when The Returns API updates a market name, and pipe the output into a chart or dashboard. None of this is hard; all of it is your problem now. The hidden cost of this approach is not the $30 a month, it is the four hours a quarter spent on maintenance once the system is in your stack.
If you would prefer to build directly on Yoseri’s own returns and CLV infrastructure rather than wrap a third-party feed, the B2B API lives at developers.yoseri.com.
Using a dedicated tool (the Yoseri approach)
The third option exists because the manual and DIY paths both leak the same thing: investor time. A dedicated closing line value tracker takes the data plumbing off your desk entirely. Yoseri’s implementation runs in the background on every position logged to your account and covers four things specifically.
- Auto-detection of the closing line. Every position is matched to the closing price at the same broker and market, captured automatically at event kickoff. You do not see column C of the spreadsheet because there is no column C to fill in.
- CLV broken down by position, sport, broker, and strategy tag. Same number, three useful slices. You can see whether your edge is concentrated (e.g., NBA props at FanDuel) or distributed across the portfolio.
- CLV trend over time. A rolling window (30, 60, 90 days) plotted against ROI, so you can spot edge decay before W/L confirms it.
- Statistical significance indicator. A confidence interval on your CLV, so you know whether your +3.1% number is reliable or whether your sample is still too small to draw conclusions. This is the part the spreadsheet workflow almost never gets right.
Which approach should you choose?
Three simple rules. If you place 5 to 10 positions per week and you enjoy working in Excel or Sheets, the manual DIY tracker is enough. The admin overhead is real but tolerable at that volume. If you place 20 or more positions per week, or you want statistical significance baked in, you have outgrown the spreadsheet; a dedicated tool pays for itself in time saved within the first month. If you are a developer who wants CLV inside your own analytics stack, build on The Returns API or Yoseri’s B2B API and accept that you are signing up for the maintenance.
Try CLV tracking the easy way
The math behind CLV is genuinely simple. The hard part is doing the lookup, the logging, and the statistical interpretation correctly every single time, week after week. Yoseri automates all three. Try Yoseri’s CLV tracking free for 7 days on the pricing page — the Free plan is free forever; Pro starts at $19.99/month after the trial.
Frequently asked questions
Where do I get the “closing line” for a position I placed at a soft broker?
Two options. First and best: use the closing price at the same broker you invest at, captured 1 to 5 minutes before kickoff. Second: use the closing price at a sharp reference broker like Pinnacle or Circa, vig-removed. Sharp-broker closing is the more rigorous statistical benchmark because soft brokers sometimes leave bad lines up at close; same-broker closing is more honest about whether you actually had information the broker did not.
How many positions do I need before my CLV number is meaningful?
Roughly 100 positions for a directional read, 300 to 500 for a statistically defensible one. Below 100, treat the number as informational only — the noise band on small samples is wide enough that even a +5% CLV could be variance. A dedicated tool that displays the confidence interval next to the point estimate solves this; a spreadsheet generally does not.
Can I use American returns instead of decimal for the CLV formula?
Yes, but convert to decimal first or use a slightly more complex formula. The cleanest approach is to add a column that converts American to decimal (=IF(A2>0, A2/100+1, 100/ABS(A2)+1)), then run the standard ((B/C)-1)*100 on the decimal values. Mixing American returns inside the CLV formula directly is error-prone and not worth the line saving.
Does CLV work for live in-play positions?
Conceptually yes, but the “closing line” is harder to define for live positions. The standard approach is to compare the price you took at moment T to the price the market settled at one minute later, which captures whether you beat the next tick rather than the final line. Useful, but interpret with care: live CLV has more noise than pre-game CLV.
What if my CLV is positive but I am still losing money?
That is almost certainly small-sample variance, and the statistical interpretation is that your edge is real and the results will catch up. Two things to verify: that your sample is big enough (see above) and that you are not over-paying the vig through poor allocation. Combining CLV tracking with disciplined Kelly sizing is the standard prescription — see our piece on flat allocation vs. Kelly for the sizing logic.
Disclaimer: Past performance does not guarantee future results. All trading involves risk; never allocate more than you can afford to lose. CLV is a statistical estimate of edge that becomes more reliable with larger samples; treat short-window readings with appropriate skepticism.
