Odds data is sourced from The Odds API (theoddsapi.com), which aggregates live lines from major US and international sportsbooks. Odds are cached for up to 15 minutes (5 minutes when a game starts within 2 hours, 30 seconds for live/in-progress games); timestamps are shown near the top of each game list so you always know how fresh the data is.
Win rate rankings use official league APIs: MLB Stats API, ESPN API for NFL/NBA/NHL. ATS trend data is sourced from public betting databases including Covers and TeamRankings.
The sharp book consensus is the devigged average probability across the sharp books listed below. These books set lines based on professional (sharp) money rather than recreational betting patterns, making them the most accurate reflection of fair probability.
The square books are recreational-facing books where public money moves lines. The gap between sharp and square lines is where most edges are found.
Every sportsbook bakes a margin (the "vig" or "juice") into their odds so that implied probabilities across all outcomes sum to more than 100%. To find the fair probability, we remove this margin using the multiplicative method:
This distributes the vig proportionally across each outcome based on its size, which is the standard approach used by professional bettors and quantitative models.
Edge measures how much better the best available line is compared to what the fair probability says it should be worth:
A positive edge means the book is offering better-than-fair odds — the market hasn't fully accounted for the fair probability. A negative edge means the book is charging too much vig on that side.
Edges are color-coded: green ≥3% (strong value), amber 1–3% (marginal value), grey <1% (skip).
The Kelly Criterion calculates the mathematically optimal fraction of bankroll to bet for maximum long-run growth:
Half-Kelly (the default shown throughout JATSport) divides the full Kelly fraction by 2. This cuts variance roughly in half while retaining approximately 75% of the long-run growth rate of full Kelly. Most professional bettors use half-Kelly or quarter-Kelly.
Stake recommendations are also capped at 5% of bankroll regardless of Kelly output, as a hard risk limit. The Kelly Calculator on the Calculators page shows all fraction levels side-by-side.
Win Rate Rankings blend two signals to produce a composite win rate for each team:
The 70/30 split gives more weight to the full season sample while still capturing recent form. Teams are ranked within their sport by blended win rate.
Historical ATS (against the spread) trends are sourced from public betting databases including Covers and TeamRankings. They represent historical win rates for specific situational systems (e.g. "home underdog off a loss").
JATSport applies a home field advantage (HFA) adjustment per sport when estimating fair probability. Current values: NFL 3%, NBA 3%, NHL 3%, MLB 4%, Soccer/World Cup 6%, Tennis/Golf 0%.
Park factors are sourced from historical data (season: 2026) and updated annually. The Oakland A's park factor reflects their move to Sutter Health Park, Sacramento.
JATSport tracks every edge prediction at the time of display alongside final game outcomes. Performance is reported by edge bucket to validate whether the model genuinely identifies value:
What we record at bet time: predicted edge %, implied probability, fair probability, recommended stake, and market (sharp-book consensus). Outcome (W/L) is updated when bets settle. This data validates whether model-identified edges translate to positive ROI at scale.
Odds data cache TTL is dynamic: 15 minutes by default, 5 minutes when a game starts within 2 hours, and 30 seconds for live/in-progress games. The "Last updated" timestamp near the top of the game list shows when odds were last fetched. If the timestamp is more than 30 minutes old, it is shown in amber as a staleness warning. Click Refresh to force a new fetch (subject to API quota limits).
Win rate rankings are cached for 24 hours. Scores are cached for 2 minutes.