How Internal Value Detection Works
How Fairline compares model fair odds against live sportsbook prices for internal measurement, how often odds refresh, and why the projection never reads book lines.
Updated Jul 2026 · Part of the tools series
After projections are computed, the pipeline fetches live odds from four books in parallel: Fanatics, FanDuel, DraftKings, and Kalshi (a regulated prediction-market exchange). For every market line, the best decimal across all books is compared against the model’s fair probability. The book that offers the best price wins each line and is shown in the per-row tag (FAN / FD / DK / KAL). Kalshi prices are adjusted for their per-trade fee (ceil(7 × P × (1−P)) cents per contract on taker fills) so the displayed odds match what you’ll actually pay at execution rather than the raw exchange quote.
Internally, a line qualifies for the observation record when the gap between the model’s fair odds and a book price exceeds the flat threshold shown on each model page. Those rows feed calibration, closing-line tracking, and the tracked MLB dog cohort. They are not presented as current bets. Game detail pages keep the neutral part of the comparison: each tracked book’s price alongside a labeled fair reference for line shopping.
The odds integration is non-blocking, so projections still complete even if the odds API fails. Critically, book lines are never fed back into the projection engine. The model’s output always stands as an independent opinion.
Between full pipeline runs, a lightweight odds refresher runs continuously in the background (a long-running worker, not the daily cron). It re-checks Kalshi’s live markets roughly every 90 seconds and re-pulls the sportsbook lines about every 15 minutes, staggered to stay within the odds API’s free-tier limit. Each pass re-runs internal detection against the existing projections and writes the qualifying observations used for research. Projections are not recomputed; that only happens on the full daily pipeline. The refresh window is strictly pre-game; once a game starts, its last pre-game snapshot is frozen as the closing-line of record.