Six books, one screen — spreads, totals, moneylines, props & kickoff weather
📲 Install this as an app — tap Share then Add to Home Screen
⚠️
No sportsbook has an official public API — this pulls the books' publicly posted lines from an aggregator feed. Coverage varies by book and game; the strip below shows the book keys actually returned. Data tool, not betting advice.
best available price in rowgreen = beats fairred = worse than fair
🧮 Bet calculator (single or parlay)
Comma-separate odds to price a parlay (e.g. -110, +120, +150). Kelly uses YOUR win % estimate (not the book's) and the first odds entered; half-Kelly is the safer stake.
WeekViewMin edge%
Hit Load live odds to see the board.
Pulled from ESPN's unofficial public API — no auth needed. Injury designations are published by teams Wednesday–Friday of game week, so this tab will show "None reported" early in the week. Check back Wednesday for the first practice reports.
Player props load per game on demand — they use extra API credits, so tap a game only when you want its props.
Line history — saved on this device each time you load odds
⚠️ This is a validated regression model (ridge regression, trained on 2023-2024, graded on the full untouched 2025 season) — not a hand-picked formula. Its honest, out-of-sample result: -1.2% ROI on flagged bets. That was the closest to breakeven of everything tested, but it is not a proven profitable edge — treat every signal below as research, not instruction.
Predicted spread = a fixed set of coefficients (learned by ridge regression, never hand-adjusted) applied to opponent-adjusted, recency-weighted play-by-play efficiency: EPA/play split by pass and rush (both sides of the ball), success rate, CPOE, pass-rate-over-expected, pressure rate, rest-days differential, and live wind. Source: nflverse play-by-play (nflfastR) + Sleeper for starting QBs.
Model vs market — sorted by biggest gap first · tap a game to load it into the Kelly calculator
This table is read-only — every number comes from the import button above, nothing is hand-typed, and the formula's coefficients are fixed (fit offline against 2023-2025 results, not adjustable here). Each team's rating is an exponential moving average (recent games weighted more) of their play-by-play efficiency, filtered to exclude garbage-time snaps (win probability between 5% and 95%), then adjusted for the strength of opponents actually faced. Pass and rush EPA are tracked separately on both offense and defense. Starting QB is identified from Sleeper's live depth chart (catches trades/signings/returns before a first game is even played) and shown for reference — the regression found no incremental signal from QB-specific EPA once team-level splits were included, so it's display-only and doesn't affect the prediction. Rest-days differential and live wind (from the Weather tab's forecast) are also in the formula; home-field edge is learned as part of the regression rather than a flat constant. This import pulls the entire current season's play-by-play file (a few MB early in the season, growing to 40-50MB by December) plus the small season schedule file and Sleeper's player list — noticeably heavier than a typical import, especially late in the season. Load live odds first so wind can be pulled from each game's forecast.
No sportsbook offers a public API to link your account, so bets are logged manually — pick the game, market, side, price, and book, then mark the result once it settles (win/loss/push). Everything here is stored only in this browser; nothing is sent anywhere. Log it here once and it automatically feeds the CLV tab too.
Your betsUnit size $
Bets logged in the My Bets tab show up here automatically. Keep tapping Load live odds on the Board tab as kickoff nears — the last line seen for a game before it leaves the feed is used as its closing line. CLV compares the number you took to that closing number: positive means you beat the market's final price. This is your own observed closing snapshot, not an official closing-line feed.