Methodology

Methodology
How JATSport calculates edge, fair probability, and stake sizing.
Data Source

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.

Sharp Line Reference (Consensus)

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.

Sharp Books (consensus)
Pinnacle Bookmaker BetOnline BetUs LowVig
Square Books (retail)
DraftKings FanDuel BetMGM Caesars BetRivers WilliamHill WynnBET PointsBet
Devig Method (Multiplicative)

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:

raw_implied(i) = 1 / decimal_odds(i)
total = sum of all raw_implied
true_prob(i) = raw_implied(i) / total

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 Calculation

Edge measures how much better the best available line is compared to what the fair probability says it should be worth:

edge% = true_probability − implied_probability(best_available_line)

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).

Kelly Criterion & Stake Sizing

The Kelly Criterion calculates the mathematically optimal fraction of bankroll to bet for maximum long-run growth:

kelly_fraction = edge / (decimal_odds − 1)

or equivalently: (b × p − q) / b
where b = decimal_odds − 1, p = true_prob, q = 1 − p

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.

half_kelly_stake = (kelly_fraction × 0.5) × bankroll

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

Win Rate Rankings blend two signals to produce a composite win rate for each team:

blended_win_rate = 0.70 × season_win_pct + 0.30 × last_10_win_pct

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.

Win rate rankings are not strength-of-schedule adjusted. A team with a weak schedule may rank higher than their true quality. Schedule-adjusted ratings are on the roadmap.
ATS Trends

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").

Sample size warning: Trends with fewer than 50 games should be treated with caution. Markets adjust over time, and historical patterns often regress. Use ATS trends as a secondary confirming signal alongside model edge — not as standalone picks. Past results do not guarantee future performance.
Home Field Advantage

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%.

Note: JATSport uses global HFA constants per sport. Venue-specific factors (e.g. Lambeau Field in January vs. a domed stadium) are not currently modeled. This may overstate or understate edge on outdoor cold-weather games.

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.

Model Accuracy & Validation

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:

Expected Win Rate by Edge Bucket (Sharp-Book Consensus)
<0%
<50%
Avoid
0–1%
~50%
Neutral
1–3%
~53%
Marginal
3–5%
~55%
Strong
>5%
57%+
Elite
Theoretical win rates derived from sharp-book consensus devig. Real sample data published as picks settle — see Performance → Model Calibration.
Live Back-Test — Settled Picks
Loading…
All settled picks recorded across user accounts. Updated live. Small sample sizes show high variance — the theoretical targets above are the long-run expectation.

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.

Data Freshness

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.