Five settled bets is enough to spot a sharp
Closing line value separates adverse accounts almost perfectly after five bets. Realized profit and loss never gets close, even after a hundred. Detection is not the hard problem. Choosing where to draw the line is.
Draw that line in the wrong place and it costs more than the problem. Restricting the top fifth of accounts loses the book £202k. Every sharp in the building, all 86 of them, takes £51k between them.
Simulated bettors, real prices. Twelve figures follow. The first four are real market data and establish that the mechanism exists at all. The rest simulate accounts on top of it, because no public bettor level data exists.
01The market that makes this possible
Before simulating a single bettor, the prices have to admit there is an edge to find.
Closing line value only means something if the closing price is worth beating. So the first question is not about bettors at all. It is whether the close is a better forecast than the open, and if so, where that extra accuracy comes from.
Show these numbers as a table
| Band | Outcomes | Implied | Observed |
|---|---|---|---|
| 0% to 10% | 919 | 7.38% | 6.20% |
| 10% to 20% | 4,555 | 15.96% | 15.98% |
| 20% to 30% | 16,277 | 26.12% | 25.50% |
| 30% to 40% | 8,533 | 34.11% | 33.77% |
| 40% to 50% | 5,134 | 44.55% | 46.05% |
| 50% to 60% | 2,934 | 54.60% | 55.28% |
| 60% to 70% | 1,478 | 64.55% | 66.91% |
| 70% to 80% | 772 | 74.45% | 74.87% |
| 80% to 90% | 299 | 84.02% | 85.62% |
The median match moves 1.85pp between open and close, the top tenth moves more than 4.77pp, and in 4.9% of matches the favourite changes outright. That is the room. The next two figures ask whether any of it survives as mispricing at the close, and the answer is no.
Margin is not the same thing as mispricing
The obvious story about sharps is that they hunt badly priced leagues. The data supports a different one. What varies across divisions is what the book charges, not how well it forecasts.
| League | Tier | Matches | Overround | Brier, with 95% interval |
|---|---|---|---|---|
| Eredivisie | mid | 1,762 | 3.33% | 0.5437 ± 0.0174 |
| Premier League | sharp | 2,280 | 2.68% | 0.5655 ± 0.0144 |
| La Liga | sharp | 2,120 | 2.66% | 0.5768 ± 0.0133 |
| Scottish League One | thin | 969 | 5.71% | 0.5961 ± 0.0187 |
| MLS | relatable | 5,785 | 2.97% | 0.6055 ± 0.0072 |
| Championship | mid | 3,310 | 3.07% | 0.6230 ± 0.0085 |
| League Two | thin | 3,197 | 3.71% | 0.6337 ± 0.0076 |
| League | Outcomes | Observed error | Error from noise alone | Ratio |
|---|---|---|---|---|
| La Liga | 6,360 | 1.76pp | 1.40pp | 1.26 |
| Scottish League One | 2,907 | 2.44pp | 2.09pp | 1.17 |
| Championship | 9,930 | 0.99pp | 1.15pp | 0.86 |
| Eredivisie | 5,286 | 1.19pp | 1.47pp | 0.81 |
| Premier League | 6,840 | 1.07pp | 1.32pp | 0.81 |
| MLS | 17,355 | 0.69pp | 0.86pp | 0.80 |
| League Two | 9,591 | 0.81pp | 1.18pp | 0.68 |
Taken together those four figures set the rules. Nobody beats the close, so a sharp's edge has to come from beating the price before it converges. That is the only mechanism available, it is measurable the moment a bet is placed, and it is what the rest of this page simulates.
Run the simulation
Accounts are drawn from the five archetypes and bet into the real market layer above.
04How fast a sharp becomes visible
Show these numbers as a table
| Bets | Accounts scored | Sharps present | AUC, closing line value | AUC, profit and loss |
|---|---|---|---|---|
| 5 | 4,000 | 86 | 0.981 | 0.521 |
| 10 | 4,000 | 86 | 0.996 | 0.557 |
| 15 | 4,000 | 86 | 0.999 | 0.591 |
| 20 | 4,000 | 86 | 1.000 | 0.579 |
| 30 | 3,799 | 86 | 1.000 | 0.580 |
| 40 | 3,583 | 85 | 1.000 | 0.580 |
| 50 | 3,383 | 80 | 1.000 | 0.581 |
| 75 | 2,839 | 54 | 1.000 | 0.579 |
| 100 | 2,226 | 30 | 1.000 | 0.615 |
This resimulates 24,000 accounts, so it takes a few seconds.
06Method and limits
How the simulation works
A bettor decides using the opening price and a private estimate of the true probability. They never see the close. How good a bettor is comes down to one number: how far that private estimate sits from the truth.
A sharp reads a game about as well as the closing price does, and bets early, into prices that have not absorbed everyone else's information yet. There is no secret edge in this model, because Figure 04 says there is nowhere to hide one.
Closing prices do two things, both after the fact. They stand in for truth when a private estimate is generated, and they score the bet once it is already placed.
| Championship | 3,312 |
|---|---|
| League Two | 3,195 |
| Premier League | 2,280 |
| La Liga | 2,120 |
| Eredivisie | 1,762 |
| Scottish League One | 969 |
What it gets wrong
I labelled the wrong people adverse. The first version of the detection code counted semi sharps as adverse, because they are skilled. The cost model then returned a negative cost for failing to restrict them, which was the model saying the label was wrong. The book holds 4.7% on semi sharps. Adverse is an economic label, not a skill label, and Figure 12 is what that distinction looks like.
The bettors are invented. No public bettor level data exists, so the accounts are simulated. This does not discover that sharps exist. It measures how fast an estimator converges on a truth already known by construction, which is the one question simulation is genuinely the right tool for. Figures 01 to 04 are real data and carry the part of the argument that simulation cannot.
Truth is a proxy, and proxies drift. Private estimates are generated around the devigged closing price. Figures 01 and 04 justify that, but it still means the simulation inherits whatever the closing price gets wrong. A real desk would find that out slowly and expensively.
Your run will not match the published one. The published figures come from numpy. A browser cannot reproduce that random stream, so a live run lands near those numbers rather than on them. Figure 10 exists so that claim can be checked rather than taken on trust.