AccuBets
A sports-betting research tool that ranks the week's best-value bets across twelve leagues, explains each pick in plain English, and replays whole seasons to show what following it would have done. Simulation only: no money moves.
- Six signals blended into one score, from odds across every book to injuries, rest, and weather.
- Each league is scored in its own units: runs, goals, or points, never football numbers everywhere.
- Season replays only use games already played, so the record cannot peek at the future.
- Every pick says what would make it wrong, and warns when the model disagrees with a tight market.
The idea
Betting newsletters give you picks with confidence and no accountability. AccuBets treats a pick as a claim to check. It pulls the current odds, combines them with handicappers' picks and four independent signals, ranks the bets with real value at the top, and keeps score: what each pick would have paid, how the closing line moved, and where a bankroll would be after a whole season.
It is a simulator and a research tool. Nothing is wagered through it.
What I built
The app has three pages:
- Picks lists this week's bets, best first. Each one states the wager in words, the price, how much to stake, why the model likes it, and what would make it wrong.
- Season answers "if I had followed the picks all season, where would I be?" It replays a full NFL or college football season, or the group's own saved boards, and shows the bankroll week by week, the record, the return per dollar, and the worst losing stretch.
- Settings holds leagues, bankroll, signal weights, and data connections, saved per group.
Behind it, scheduled jobs grade finished games, snapshot closing lines, and step four bankroll profiles forward twice a day, so the app builds its own track record without anyone pressing a button.
How it works
Six signals, one score. Each signal scores a candidate bet from −1 to +1 with a short reason, and the engine blends them into a 0–100 EdgeScore:
- Market value: removes the bookmaker's margin from every book to find a fair price, then measures the expected value of the best price on offer.
- Model edge: opponent-adjusted power ratings, solved from each league's game log, compared with the market's spread, moneyline, and total.
- Handicappers: picks and star ratings from weekly newsletters. Several sources stack when they agree and partly cancel when they do not. An optional language model reads the PDFs.
- Injuries, weather, and rest: availability weighted by position and team size, wind and rain at outdoor venues, and back-to-backs and travel.
When a signal has no data for a game, its weight is shared among the signals that did fire, and the pick says which ones were missing, so a score is never quietly diluted.
Every sport on its own scale. An early version applied football constants everywhere, so a baseball edge rounded to nothing. Every league-dependent number now lives in one profile per sport, in that sport's own units: home advantage, spread and totals scales, injury caps, and whether weather applies at all.
Honest about uncertainty. Ratings for teams with few games are pulled toward the league average. Team names are matched across feeds carefully, and an ambiguous match is left unresolved rather than guessed, because a wrong rating is worse than none. Picks carry warnings when the handicapper data is stale, when the model claims a big edge against a tight consensus of books, or when the score leans on a single signal.
Bets sized like a bankroll, not a hunch. Stakes follow a fractional Kelly rule with table minimums and a weekly spending range. Parlays are discounted for legs that tend to move together. Closing-line value is tracked for every saved bet, which is the clearest early sign of whether a model is actually beating the market.
Cheap to run. Only an odds key is required. Ratings, injuries, rest, and weather come from free public feeds, and the optional language-model features cost fractions of a cent per run.
Where it stands
AccuBets runs on my own server for a small private group, behind an access code. The engine is kept separate from the interface and stores everything by group and week, so turning it into a multi-user service is a storage change, not a rewrite.