Most bettors who think they’re sharp aren’t. Most bettors who are sharp are uncertain about it. The gap between the two groups is mostly a measurement problem: people compare their record to their memory and call it analysis. The honest question is Bayesian: given my observed closing line value, my bet count, and a realistic prior for what fraction of people are sharp at all, what’s my posterior probability of actually being a sharp bettor? This guide builds that calculator step by step, with worked examples for the three sample sizes most readers will recognize themselves in: 50 bets, 500 bets, 2,000 bets. The interactive version lives on /desk.
What "sharp" means in this calculator
The word "sharp" gets used loosely. For the calculator to mean something, we need an operational definition. We use:
- Sharp bettor: a bettor whose true long-run CLV against sharp consensus close is ≥ 3%.
- Recreational bettor: a bettor whose true long-run CLV is between -2% and +2%.
- Square bettor: a bettor whose true long-run CLV is < -2% (paying a meaningful tax).
These thresholds match the bands in the CLV leaderboard mechanics piece. The point of locking them is that "sharp" can be tested empirically — it’s not a vibe, it’s a number with a measurable distribution.
The Bayesian setup, in words
Bayes’ rule for a single hypothesis:
P(sharp | data) = P(data | sharp) × P(sharp) / P(data)
In plain English: your posterior belief that you’re sharp equals how likely your observed CLV is, given that you’re sharp, multiplied by your prior belief, divided by the overall probability of seeing the data. The denominator forces the answer to behave like a probability (sums to 1 across all hypotheses).
The three inputs you need:
- The prior: what fraction of the relevant bettor population is sharp before seeing any data.
- The likelihood: how probable is the CLV you observed if you’re sharp, vs if you’re recreational, vs if you’re square.
- The data: your average CLV and the number of bets behind it.
Choosing a realistic prior
The prior is the lever. Most public discussions of "am I sharp" implicitly use P(sharp) = 0.5 — a 50/50 prior — which is almost certainly too generous. The realistic base rates:
- Random sports bettor: roughly 2 to 5% sharp.
- Bettor who tracks every bet in a log: maybe 8 to 15%.
- Bettor who builds models, posts in modeling communities, and reads CLV explainers: 15 to 25%.
- Bettor with a proven CLV-positive friend who recruited them: 25 to 35% (selection effect).
The math is sensitive to this number. If you start at 50%, almost any positive CLV looks like confirmation. If you start at 5%, you need substantial CLV across substantial bets to flip the posterior above 50%. The discipline of the Bayesian framing is precisely that it forces you to declare your prior, instead of smuggling it in via mood.
The likelihood: how probable is your CLV if you’re sharp vs not
Per-bet CLV (the fair-line edge in cents) is approximately normally distributed with a standard deviation of about 0.10 (10 cents per bet) across most markets. The average per-bet CLV depends on which hypothesis is true:
- Sharp: mean per-bet CLV ≈ +0.04 (4 cents).
- Recreational: mean per-bet CLV ≈ 0.00.
- Square: mean per-bet CLV ≈ -0.03.
If you have n bets, the standard error of your average CLV is 0.10 / sqrt(n). At n=50, the SE is about 1.4 cents. At n=500, about 0.45 cents. At n=2000, about 0.22 cents. The likelihood ratio between hypotheses scales with how far your observed CLV is from each hypothesis’s mean, normalized by the SE.
The closed-form update
For a normal likelihood with known variance, the posterior odds update is:
posterior_odds(sharp vs rec) = prior_odds × exp((mean_sharp - mean_rec) × (observed_clv - midpoint) × n / sigma²)
where midpoint = (mean_sharp + mean_rec) / 2 and sigma = 0.10. The exact derivation requires assuming the per-bet CLV variance is the same across hypotheses — close enough for practical purposes. The interactive version on /desk just plugs your numbers in.
Worked example 1: n=50, observed CLV +4%
You logged 50 bets, your average CLV is +4 cents (well in the "sharp" range numerically). You start with a prior P(sharp) = 0.20 (you read CLV explainers and track bets).
- Standard error of mean: 0.10 / sqrt(50) ≈ 0.014.
- Z-score for the recreational hypothesis: (0.04 - 0.00) / 0.014 ≈ 2.9.
- Z-score for the sharp hypothesis: (0.04 - 0.04) / 0.014 = 0.
- Likelihood ratio sharp:recreational ≈ exp(-(0² - 2.9²)/2) ≈ 70.
- Posterior odds: prior_odds × 70 = (0.20/0.80) × 70 = 17.5.
- Posterior P(sharp) ≈ 17.5 / 18.5 ≈ 0.95.
Whoa, posterior 95%? That looks great until you remember you have 50 bets. The math is technically correct for this 2-hypothesis setup, but it’s leaning on the precision of the sharp/rec means. In practice CLV varies more than the model assumes, and 50 bets is small enough that one outlier bet (a +0.20 line move) shifts things meaningfully. The calibrated calculator inflates the per-bet CLV variance at small n to reflect this. After that correction, the realistic posterior at n=50, CLV +4%, prior 20% is closer to 0.55 — a meaningful update but nothing like 95%.
Worked example 2: n=500, observed CLV +3.2%
Same setup, but now 500 bets, CLV +3.2 cents, prior P(sharp) = 0.20.
- SE of mean: 0.10 / sqrt(500) ≈ 0.0045.
- Z for recreational: (0.032 - 0.00) / 0.0045 ≈ 7.1.
- Z for sharp: (0.032 - 0.04) / 0.0045 ≈ -1.8.
- Likelihood ratio sharp:recreational ≈ exp((7.1² - 1.8²) / 2) ≈ exp(23.6) — practically infinite.
The naive math hits saturation: the data is so much more consistent with sharp than with recreational that the posterior pegs at essentially 1.0. The realistic correction (allowing for model uncertainty about the exact sharp/rec means) brings it down to roughly 0.85 to 0.90. Either way, 500 bets at +3.2% CLV is meaningful evidence of edge. This is the regime where the calculator does its real work — the data overwhelms the prior, and you should believe the numbers.
Worked example 3: n=2000, observed CLV +1.1%
The mid-band case. 2,000 bets, CLV +1.1%, prior 20%.
- SE of mean: 0.10 / sqrt(2000) ≈ 0.00224.
- Z for recreational: (0.011 - 0.00) / 0.00224 ≈ 4.9.
- Z for sharp: (0.011 - 0.04) / 0.00224 ≈ -12.9.
The data is much more consistent with recreational (Z = 4.9 is high but plausible) than with sharp (Z = -12.9 is essentially impossible). Posterior P(sharp) collapses toward 0 even with the 20% prior. The honest read: at 2,000 bets, +1.1% CLV is good but it’s not "sharp" in the way we defined it. It’s a real positive edge — likely real ROI before vig — but the definition of sharp at 3%+ doesn’t apply.
This is the value of forcing the definition. Without it, +1.1% over 2,000 bets gets called "sharp" by people who want to be sharp. With it, you can say honestly: you have real but small edge, you should size accordingly via Kelly, and you shouldn’t be telling others how to find sharp action because your data doesn’t support the claim.
What the calculator can’t tell you
Three failure modes worth naming:
- Selection bias in your logged bets. If you only log bets you remember, your CLV will be biased upward. The calculator can’t detect this; the only fix is logging every bet in real time.
- Drift in your true edge. CLV-positive bettors regularly lose their edge when the market adapts (especially around model leaks, line-move tools going mainstream, etc.). The Bayesian posterior assumes a stationary true CLV. Real bettors aren’t stationary.
- Cross-market mixing. If your CLV is 5% on NFL sides and -1% on MLB props, averaging them hides the truth. Run the calculator separately per market. The market-variance study covers why this matters.
Using the result responsibly
A posterior P(sharp) of 0.70 means there’s a 30% chance you’re not actually sharp. That changes how you size bets, how confidently you promote your picks, and how much capital you allocate. Concretely:
- Posterior 0.30 or below: you don’t have evidence of edge. Bet small, keep logging, don’t scale.
- Posterior 0.30 to 0.70: ambiguous. The data is suggestive but variance is large. Scale Kelly fractionally (1/4 Kelly is reasonable).
- Posterior 0.70 to 0.90: meaningful evidence. Half-Kelly is defensible. Keep watching the trend.
- Posterior 0.90+: real evidence of sharp edge. Full Kelly or full Kelly cap, depending on bankroll, with the loss-floor safeguard from the bankroll guide.
The calculator pairs with the bet log on /desk — it pulls your actual logged CLV and bet count rather than asking you to type numbers in. Auto-updating posteriors are a healthy nudge: when the number drops because of three bad weeks, that’s the system doing exactly what it should do.
Extending to a 3-hypothesis model (sharp, recreational, square)
The two-hypothesis version is fine for most bettors. A three-hypothesis version adds the square category and produces a richer answer: P(sharp), P(recreational), P(square). The math generalizes naturally — for each hypothesis, compute the likelihood of your observed CLV under that hypothesis’s mean, multiply by the prior, normalize across all three so they sum to 1.
The reason to bother: most bettors care almost as much about ruling out "I’m square" as confirming "I’m sharp." A bettor with neutral CLV after 800 bets has strong evidence against being square — they’re not paying the long-run tax even if they’re not crushing the market. That information matters for self-image, market focus, and whether to keep playing at all.
The three-hypothesis output also exposes the "recreational with a hot streak" case clearly: P(sharp) might spike to 40% on a small sample, but P(recreational) stays at 50% and P(square) drops to 10%. The dominant story is still "probably recreational," with a fair chance the recent CLV is real edge. That’s the calibrated read.
Comparing the calculator to record-based self-assessment
Most bettors estimate their sharpness from their win-loss record. The contrast with the Bayesian CLV approach is stark. Two examples:
- Bettor A: 58% win rate over 200 bets, CLV +1%. Record-based: clearly sharp. Bayesian: posterior P(sharp) around 0.25. The win rate is consistent with variance on a slight edge; the CLV doesn’t support "sharp."
- Bettor B: 51% win rate over 600 bets, CLV +4%. Record-based: barely above break-even, must be losing money after vig. Bayesian: posterior P(sharp) around 0.85. The CLV is strong and the win rate just hasn’t caught up yet (it will).
The Bayesian framework gets both right; the record framework gets both wrong. This is why the CLV leaderboard mechanics ranks by CLV and not by record.
What changes when the prior is wrong
Sensitivity check, n=500, observed CLV +3%:
- Prior 0.02 (random public bettor): posterior P(sharp) ≈ 0.45.
- Prior 0.10 (someone who tracks bets): posterior ≈ 0.78.
- Prior 0.20 (model-builder): posterior ≈ 0.88.
- Prior 0.40 (active syndicate member): posterior ≈ 0.95.
The data is the same; the answer shifts a lot. The honest mode is to publish your prior alongside the posterior. The dishonest mode is to claim "the data says I’m sharp" without acknowledging which prior produced the answer. Bayes is a discipline of declaring what you assumed.
Bottom line
"Am I sharp?" is a Bayesian question with a closed-form answer once you commit to definitions and a prior. The math takes about 30 seconds; the discipline takes a few hundred logged bets and the honesty to declare a realistic prior before looking at the result. Most people who run the calculator end up somewhere between "weak evidence of edge" and "meaningful evidence of edge." That’s the right answer for most bettors, and it’s a much more useful one than "definitely sharp" or "definitely square." Run yours on /desk, watch the posterior move as bets accumulate, and let the number do the work your gut is bad at. The posterior won’t flatter you, but it will save you from sizing for an edge you don’t have.
Bet responsibly — set limits, never chase losses.
Named example board
Keep the page grounded with actual decisions. Josh Allen rushing props, Bijan Robinson usage, Puka Nacua target volume, Amon-Ra St. Brown reception stability, and Travis Kelce touchdown equity are all different cases even when they sit on the same fantasy or betting screen. The point is to map the name to the input that matters most.
- Role example: routes, carries, targets, and red-zone work before highlights.
- Market example: spread, total, team total, or prop price before prediction.
- Fantasy example: ADP, roster build, and scoring format before ranking.
- Review example: compare the final result to the original input, not only the box score.
Price examples and pass rules
Use names as evidence, not decoration. The useful SEO win is that Josh Allen, Ja'Marr Chase, Bijan Robinson and Puka Nacua and Chiefs, Bills, Eagles and Lions appear inside decisions, thresholds, and internal links instead of being dumped into a keyword list.
- Spread example: if Chiefs-Broncos opens Chiefs -3.5 and your fair number is -2.8, +3.5 is the bet, +3 is a pass, and the moneyline needs roughly +155 or better before it replaces the spread.
- Total example: if a Bills outdoor total opens 46.5 and wind moves from 8 mph to 21 mph, an under projection at 42.8 still needs a playable number; under 45 or better is different from chasing 43.5.
- Futures example: Bengals AFC North +280 is 26.3% before hold. If your fair number is 30%, stake modestly, track portfolio correlation, and avoid stacking every Burrow, Chase, and Higgins bet into the same thesis.
- CLV rule: a good write-up is not enough. Track whether the spread, total, prop, or futures price closed better than your entry before grading the process.
Use closing-line value guide to keep the examples attached to measurable prices.
Research note board
Use this table to turn the guide into a decision note. The point is to know when the idea is actionable and when it is only context.
| Angle | Input to verify | Example application | Pass when |
|---|---|---|---|
| Market price | Spread, total, moneyline, prop price, or futures hold | Chiefs and Bills compared through PPR | The price has moved past the number that created the edge |
| Football or sport context | Role, pace, weather, injury status, opponent style | Josh Allen role news mapped to the relevant market | The original input changes or remains unconfirmed |
| Review loop | Entry, close, result, and reason code | closing line value logged with a clear thesis | You cannot explain whether the process beat the market |
Model calibration: predicted vs observed
Predicted win probability bucket vs the empirical win rate inside that bucket on the test set. Points on the y=x reference line are perfectly calibrated; points below mean the model is overconfident in that bucket.
Expected bankroll growth at 55% edge
Expected geometric growth of a $100 bankroll under different Kelly multipliers across 1000 bets at p=0.55, decimal=2. Full Kelly maximises long-run growth but produces the deepest drawdowns; fractional Kelly trades growth for variance.



