Align Max Odds Diff — cross-book max delta tuning
How alignMaxOddsDiff works
Fix shipped 2026.4.28.4 — currently in logOnly mode. The candidate book is now correctly excluded from the gap calculation. Because the prior thresholds were calibrated against the broken (no-op) behavior, the new defaults are looser (global 250¢, scoped per-(book,flow) overrides) and the gate is in filters.alignment.logOnly = true for telemetry-only rollout. Bets that would block now log wouldBlock: true in diagnostics but still place. After a few days of telemetry confirms the thresholds, promote to enforcement by setting logOnly: false. Key insight from the 14-day replay: arb-flow gap is the alpha (cheap-leg arbs are *supposed* to be far from market) — arb books get effective-disable thresholds (400¢) so the gate only acts on EV-flow stale-line traps.
The alignWithMarket gate (controlled by filters.alignment.alignMaxOddsDiff) is the candidate-vs-market distance check. It blocks a candidate bet whose price is too far away from every other book on the same line — the classic stale-line-trap signal. Unlike sharp-tightness (which checks whether sharps agree among themselves with the candidate book excluded), alignment compares the candidate's price directly against the rest of the market.
The check, end to end
- Read the candidate's price and
dom.oddsByBook(every book offering this side). - For each other book in
oddsByBook, computeamericanOddsGap(otherOdds, candidateOdds). - Find
minDiff— the gap to the closest book (`getMinOddsDiff`). - Resolve the threshold: scoped match by book/league/market/mode/flow first, falling back to
filters.alignment.alignMaxOddsDiff(default 30¢). High-EV tail guard can tighten further viaHIGH_EV_TAIL_GUARD.alignMaxOddsDiff/alignMaxOddsDiffStricton a flagged book. alignsWithMarketreturns true if at least one book is within the threshold (i.e.minDiff ≤ threshold). Otherwise the candidate is "out of line" and the gate fails.- If
alignWithMarketis disabled at the config level (filters.alignment.alignWithMarket = false), the gate is skipped entirely.
Worked example
Live MLB Cubs Over 13.5 placed at DraftKings −350. Full oddsByBook snapshot:
- DraftKings −350 (candidate)
- Caesars −1204 → gap to DK = 854¢
- Pinnacle −1389 → gap = 1039¢
- FanDuel −1400 → gap = 1050¢
- BetMGM −1667 → gap = 1317¢
minDiff = 854¢. Default threshold is 30¢. 854 > 30 → FAIL. The bet should be blocked. This is the gate that catches stale-line traps — DK's price is so far from every other book that it cannot be a real market.
Sharp-tightness vs. alignMaxOddsDiff (the difference)
- Sharp tightness — checks whether the non-placement sharps agree with each other. Excludes the candidate book from the snapshot. Catches "sharps disagree among themselves on this market" (fairOdds is unreliable). Does not see how far the candidate is from consensus.
- alignMaxOddsDiff — checks how far the candidate is from any other book (sharp or not). Includes all books. Catches "candidate book is a wild outlier vs. the rest of the market" (stale-line trap).
- Different signals. Both useful. Both should be tuned.
Threshold tuning
- Lower threshold = stricter alignment required. Cuts stale-line bets at the cost of legitimate cross-book disagreement. Default 30¢ is reasonable for most live markets.
- Higher threshold = more tolerant. Books like Kalshi and ProphetX (exchange-style) often sit further from sportsbook consensus by design — the user config has scoped overrides up to 110¢ for live NHL Kalshi EV.
- Scoped overrides (
filters.alignment.scopedAlignMaxOddsDiff) match by combinations ofbook,league,market,mode,flow. Most-specific wins; ties break to lower (stricter) value. Rules may also require or exclude a named book from the sharp pool viarequiresSharpBook/excludesSharpBook(string or array). - High-EV tail guard can tighten the threshold further on books flagged as "strict" when
lastHighEvTailDiagnostic.tailHealth === "unhealthy". Effective threshold becomesmin(base, tightened).
Implementation: getAlignMaxOddsDiffForDom, alignsWithMarket, getMinOddsDiff in osd-auto-edge-bb.js. Gate call sites: the EV/arb evaluator badge pipeline (`addStage("alignWithMarket", ...)` near line 21277) and three additional consultative call sites for diagnostics.
Data
Controls
Run Settings
Sweep Setup
Guardrails
Segment Filters
Data Quality & Output
Summary
| Param | Scope | Status | Baseline | Best | Bets (best/baseline) within scope | Baseline Score | Best Score | Delta |
|---|
Distribution
| Parameter Value | Bets | Pass Rate | Distinct Days | Green Day % | Worst Day | Win Rate | ROI | Profit | Stake | Avg EV |
|---|