BetFire AI

Methodology

How predictive analytics are produced at BetFire AI, and how performance is recorded.

BetFire AI publishes historical performance transparently, including losing picks, to evaluate whether predictive edge exists over time.

Categories of inputs

We describe the categories of inputs the model consumes. Specific feature engineering, weights, thresholds, and timing logic are intentionally not disclosed.

  • Market-movement analysis across multiple licensed sportsbooks.
  • Injury and roster-news signals filtered for verified sources.
  • Matchup-history features at the team, lineup, and situational level.
  • Implied-probability modeling derived from cross-book price aggregation.
  • Volatility analysis on line movement and book disagreement.
  • Closing-line value tracking as a continuous calibration signal.

Output tiers

Model output is bucketed into three tiers reflecting model conviction relative to the market line:

Prime
Highest model conviction. Reserved for situations where the model's expected return materially separates from the market.
Edge
Mid-conviction tier with a measurable but smaller separation from the market.
Consensus
Selection derived from cross-source agreement. Lower model edge but high book-to-book convergence.

Closing-line value (CLV) framework

CLV measures the gap between the price recorded at pick-generation time and the price the market settled at before the game began. Consistently positive CLV indicates the model is anticipating market movement before the market does — the cleanest available evidence of predictive edge.

CLV is computed for every settled pick by comparing the posted American odds (captured at prediction_generated_at) to the closing American odds (captured by the nightly settle-results process). Both are stored permanently and rendered on every settled-pick page.

We treat CLV as primary because ROI is luck-prone at small sample sizes. A 58% win rate can coexist with negative ROI; a 48% win rate can coexist with positive ROI. CLV is luck-resistant earlier.

Transparency commitments

  • Every pick — wins and losses — is retained permanently.
  • Once a pick is settled (locked = true), it cannot be modified or deleted. Enforced at the database trigger level.
  • Every pick is registered with CertifiedData.io at generation time. The verification URL is shown on every settled-pick row.
  • The current validation sample size is shown on every public page.
  • We disclose categories of inputs; we do not disclose feature engineering, weighting, or timing logic.

FAQ

What is BetFire AI?
BetFire AI is an experimental market-prediction validation lab. We publish historical performance transparently — including losing picks — to evaluate whether predictive edge exists over time across MLB, NBA, and NHL.
What is closing-line value (CLV)?
CLV is the gap between the price (odds) at which a pick was posted and the price at which the market settled before kickoff. Consistently positive CLV is the strongest evidence that a model anticipates market movement before the market does. It is luck-resistant at a smaller sample size than ROI, which is why we treat it as the primary KPI.
What sample size do you need before drawing conclusions?
We target 300–500 settled bets for statistical confidence. Smaller samples are vulnerable to variance — a 10-bet winning streak proves nothing. Current sample size is displayed on every public page.
Why don't you publish today's full picks publicly?
Timing is part of the edge. Pre-game pick details (line, side, edge magnitude) only appear publicly after the game has settled. Once settled, every pick is permanent, locked, and independently verifiable.
How can I verify that a published pick wasn't modified after the fact?
Each pick is registered with CertifiedData.io at the moment of generation. The verification URL on every settled pick row links to an independent registry where you can confirm the original content, timestamp, and snapshot hash. Once a pick is settled it is locked in our database (append-only enforced at the database trigger level).