06 β Edge Identification, Bankroll & Bet Sizing
TL;DR. Compare your probability to the no-vig (de-vigged) line, not the raw price β your edge is
p_model β p_fair. Because Ο β 13.5, a 1-point disagreement is worth only ~2.9% of cover probability, so you generally need >~1β1.5 points of disagreement (ideally crossing a key number) before there's exploitable edge after vig. Size with fractional Kelly (ΒΌβΒ½): full Kelly has a ~50% chance of a 50% drawdown, and overbetting past 2Γ Kelly drives expected growth negative even when every bet is +EV. Track CLV as the leading indicator that the edge is real.
1. Where edge actually comes from
Most NFL games are efficiently priced at the close (Doc 1 Β§6). The realistic sources of edge for a non-syndicate operator:
- Stale lines β a book slow to move after an injury / weather / news.
- Number shopping β taking the best price/side across books, especially across a key number (3, 7).
- Betting early, before sharp money tightens the opener (Benter: "profits have gone, and will go, to those who are 'in action' first").
- Specific, persistent biases β Levitt (2004): books shade lines toward public favorites/overs/home-dogs; a documented bias is home teams covering as big underdogs. Recent work finds residual statistical inefficiencies in spreads and totals β small, but where the money is.
Beating the close via early/stale numbers is the practical edge β not out-predicting the closing line head-on.
2. The break-even math
- β110 implied probability =
110/210 =52.38% β you must win >52.4% ATS to profit at flat β110. - De-vig first. Convert both sides to implied prob, normalize to sum to 1 (Doc 1 Β§2). Your edge is:
edge_prob = p_model β p_fair (p_fair = de-vigged market probability)
Compare to p_fair, never to the raw quoted price (the raw price has the
vig baked in and overstates the bar).
3. How big must a disagreement be?
With Ο β 13.5, a 1-point spread disagreement is worth:
Ξ¦(1/13.5) β 0.5 β 0.529 β 0.5 = 2.9% of cover probability
That barely clears the ~2.4% vig β almost no margin. So:
- Require your model to differ from the fair line by > ~1β1.5 points (and ideally cross 3 or 7) before flagging a bet.
- Demand an estimated win probability comfortably above 52.4% β not 52.5%,
because your
p_modelis itself uncertain. A common practical floor is needing ~54β55%+ to act after accounting for model error.
Our engine's edge thresholds (configurable spread/total edges, default ~3/4 points) are in the right ballpark β they already demand a multi-point disagreement. The upgrade is to compare against the de-vigged line and to prefer disagreements that cross key numbers.
4. Kelly criterion β optimal bet sizing
f* = (bΒ·p β q) / b = p β q/b ( = edge / odds )
where b = decimal odds β 1 (β110 β b = 0.909), p = your win prob, q = 1βp.
Worked β110 example, p = 0.55:
f* = (0.909Β·0.55 β 0.45) / 0.909 = (0.500 β 0.45)/0.909 β 0.055 β 5.5% full Kelly
Always use fractional Kelly (ΒΌβΒ½)
- Growth scales ~linearly with the fraction; variance scales with the square.
- Half Kelly keeps ~75% of the growth while cutting variance ~75%.
- Drawdown: full Kelly β 50% chance of a 50% drawdown; half Kelly β 12.5%, losing only ~25% of growth.
- Overbetting is strictly bad: at 2Γ Kelly excess growth = 0; beyond 2Γ,
expected growth goes negative even though each bet is +EV. Since
pis an estimate, true Kelly is unknown β assume you're overbetting and fraction down.
Correlated / simultaneous bets
A full NFL slate is many simultaneous wagers on one bankroll. Naively summing Kelly fractions ignores correlation; correlated bets (same game, same QB, parlays) raise true risk of ruin. Cap total simultaneous exposure and shrink sizes for correlated positions.
Sources: Kelly criterion, uncertainty & Kelly, betstamp Kelly.
5. Why accuracy β profitability
A model that predicts final scores beautifully but always agrees with the line makes zero bets and zero profit. Profit comes only from systematic disagreement with the no-vig close that is right more often than the vig requires. Therefore:
- Optimize and report ROI / CLV vs. the close, with confidence intervals.
- Use CLV as the leading indicator: positive CLV over 200+ bets is the real signal of an edge; short-run win% is mostly noise.
6. A staking & flagging policy for our engine
- Compute
p_modelfor spread cover and over/under (Doc 5 probability layer). - De-vig the market β
p_fair,fair_spread,fair_total. - Flag a bet only if
|model_number β fair_number| > thresholdandp_model β p_fair > min_edge, with a bonus for crossing a key number. - Size = fractional Kelly (start at ΒΌ Kelly) on
p_model, capped per bet (e.g. β€2β3% bankroll) and capped in total weekly exposure. - Record the number we took vs. the closing number β CLV per bet and in aggregate. CLV is our weekly scorecard, ROI is the long-run one.
Today the engine flags bets on point-disagreement and a heuristic confidence score. Replace/augment that with: de-vigged comparison, a real cover/over probability, key-number awareness, fractional Kelly sizing, and CLV tracking.
Sources: J. Econ. Finance 2018 β residual inefficiencies, OddsJam CLV, arXiv 1211.4000.
β Continue to Doc 7 β Engine Improvement Roadmap.