2026-06-18 Β· 9f68c4a
Docs / 6 Β· Betting Strategy & Bankroll

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:

  1. Stale lines β€” a book slow to move after an injury / weather / news.
  2. Number shopping β€” taking the best price/side across books, especially across a key number (3, 7).
  3. Betting early, before sharp money tightens the opener (Benter: "profits have gone, and will go, to those who are 'in action' first").
  4. 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_model is 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 p is 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

  1. Compute p_model for spread cover and over/under (Doc 5 probability layer).
  2. De-vig the market β†’ p_fair, fair_spread, fair_total.
  3. Flag a bet only if |model_number βˆ’ fair_number| > threshold and p_model βˆ’ p_fair > min_edge, with a bonus for crossing a key number.
  4. Size = fractional Kelly (start at ΒΌ Kelly) on p_model, capped per bet (e.g. ≀2–3% bankroll) and capped in total weekly exposure.
  5. 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.