Image 1 — Football analytics across top 30 leagues - opponent-adjusted stats, a cross-fixture hit-rate scanner, and a calibrated fouls model tested on a 45-day holdout
Image 2 — Football analytics across top 30 leagues - opponent-adjusted stats, a cross-fixture hit-rate scanner, and a calibrated fouls model tested on a 45-day holdout
Image 3 — Football analytics across top 30 leagues - opponent-adjusted stats, a cross-fixture hit-rate scanner, and a calibrated fouls model tested on a 45-day holdout

Football analytics across top 30 leagues - opponent-adjusted stats, a cross-fixture hit-rate scanner, and a calibrated fouls model tested on a 45-day holdout

Hi all. Stats to Bucks is a football (soccer) data app, now covering 30 leagues - the top 5 European plus Brazil, Argentina, Liga MX, MLS, Saudi, Portugal, the Netherlands, Turkey, Belgium, Scotland, Japan, Korea, Colombia, Greece, Egypt, South Africa, Australia and more.

What it does:

  • Player & team form - last 20 matches of per-game stats, charted against any line you set, with the hit rate for it.

  • Filters that narrow the sample - venue, minutes, started-only, and "without teammate X".

  • Opponent-adjusted context - overlay the opponent's conceded average and defensive rank, plus quality-adjusted averages, so a streak against weak sides doesn't read like one against strong sides.

  • Hit Rates - scan every upcoming fixture at once for players/teams clearing a line in a chosen % of recent games. 40 stats across players and teams.

  • Foul matchups - a fitted hierarchical Poisson model with player, opponent, referee, venue and expected-minutes as separate multiplicative terms, and a negative-binomial predictive head. Walk-forward tested on a 45-day holdout: +13.3% / +16.6% mean relative log loss against an unshrunk per-90 baseline, with roughly 3x better calibration error.

  • Predicted lineups - projected XI from a Beta-EB start-probability model, so it works for a fixture's whole lifetime instead of only after a feed publishes one. Flips to the confirmed XI when that lands.

  • Injuries & suspensions - folded into the start probabilities rather than bolted on as a badge, so an unavailable player drops out of the projected XI and out of the minutes model behind the prop lines.

  • Similar players / teams - similarity-based benchmarking against comparable profiles, on rolling cross-season windows rather than season-to-date.

  • Referee analytics - per-fixture card/foul profiles and rankings.

  • League tables - official standings, so competition-specific tie-breaks, split point-halving and points deductions are right rather than re-derived from results.

The focus is still contextualising the sample - opponent strength, venue, lineup, availability, sample size, etc. because an unfiltered hit rate usually answers the wrong question. A recent backtest made that concrete: selecting team props purely on "recent hit rate beats the implied probability" returned about -10% over ~7,000 bets on a held-out window, statistically indistinguishable from betting blind. The context is the useful part, not the raw streak.

u/Kroggg19 — 17 hours ago

Football analytics across top 30 leagues - opponent-adjusted stats, a cross-fixture hit-rate scanner, and a calibrated fouls model tested on a 45-day holdout

Hi all. Stats to Bucks is a football (soccer) data app, now covering 30 leagues - the top 5 European plus Brazil, Argentina, Liga MX, MLS, Saudi, Portugal, the Netherlands, Turkey, Belgium, Scotland, Japan, Korea, Colombia, Greece, Egypt, South Africa, Australia and more.

What it does:

  • Player & team form - last 20 matches of per-game stats, charted against any line you set, with the hit rate for it.

  • Filters that narrow the sample - venue, minutes, started-only, and "without teammate X".

  • Opponent-adjusted context - overlay the opponent's conceded average and defensive rank, plus quality-adjusted averages, so a streak against weak sides doesn't read like one against strong sides.

  • Hit Rates - scan every upcoming fixture at once for players/teams clearing a line in a chosen % of recent games. 40 stats across players and teams.

  • Foul matchups - a fitted hierarchical Poisson model with player, opponent, referee, venue and expected-minutes as separate multiplicative terms, and a negative-binomial predictive head. Walk-forward tested on a 45-day holdout: +13.3% / +16.6% mean relative log loss against an unshrunk per-90 baseline, with roughly 3x better calibration error.

  • Predicted lineups - projected XI from a Beta-EB start-probability model, so it works for a fixture's whole lifetime instead of only after a feed publishes one. Flips to the confirmed XI when that lands.

  • Injuries & suspensions - folded into the start probabilities rather than bolted on as a badge, so an unavailable player drops out of the projected XI and out of the minutes model behind the prop lines.

  • Similar players / teams - similarity-based benchmarking against comparable profiles, on rolling cross-season windows rather than season-to-date.

  • Referee analytics - per-fixture card/foul profiles and rankings.

  • League tables - official standings, so competition-specific tie-breaks, split point-halving and points deductions are right rather than re-derived from results.

The focus is still contextualising the sample - opponent strength, venue, lineup, availability, sample size, etc. because an unfiltered hit rate usually answers the wrong question. A recent backtest made that concrete: selecting team props purely on "recent hit rate beats the implied probability" returned about -10% over ~7,000 bets on a held-out window, statistically indistinguishable from betting blind. The context is the useful part, not the raw streak.

u/Kroggg19 — 20 hours ago

Built a football analytics app for the World Cup - opponent-adjusted player/team stats, a cross-fixture hit-rate scanner, referee profiles.

Hi all. I've been building Stats to Bucks, a football (soccer) data app. Right now it's built around the 2026 World Cup - all 48 nations and 104 games - and I'm expanding it to 80+ club leagues after the tournament. Sharing here for feedback from people who care about methodology.

What it does:

Player & team form - last 10-20 matches of per-game stats, charted against the relevant betting line with the hit rate.

Filters that narrow the sample - venue, minutes, started-only, and "without teammate X".

Opponent-adjusted context - overlay the opponent's shots/goals conceded, plus FIFA and ELO rank, so a streak built against weak sides doesn't read like one against strong sides. This matters more for internationals, where the gap between a top nation and a minnow is huge.

Hit Rates - scan every upcoming fixture at once for players/teams clearing a line in a chosen % of recent games, with the bookmaker odds next to each row. 40+ markets.

Similar players / teams - similarity-based benchmarking against comparable profiles.

Referee analytics - per-fixture card/foul profiles and rankings.

The methodology problem specific to internationals is small, uneven samples: a player might have three World Cup games but forty club games, against wildly varying opposition. So I merge club and international history where it's available and lean on opponent-strength context (ELO/FIFA, shots conceded) instead of raw counts. I'm genuinely unsure that's the right call - curious how people here would weight national-team form vs club form, or handle the sample-size gap.

Still actively building.

u/Kroggg19 — 2 months ago

Built a football analytics app for the World Cup - opponent-adjusted player/team stats, a cross-fixture hit-rate scanner, referee profiles.

Hi all. I've been building Stats to Bucks, a football (soccer) data app. Right now it's built around the 2026 World Cup - all 48 nations and 104 games - and I'm expanding it to 80+ club leagues after the tournament. Sharing here for feedback from people who care about methodology.

What it does:

Player & team form - last 10-20 matches of per-game stats, charted against the relevant betting line with the hit rate.

Filters that narrow the sample - venue, minutes, started-only, and "without teammate X".

Opponent-adjusted context - overlay the opponent's shots/goals conceded, plus FIFA and ELO rank, so a streak built against weak sides doesn't read like one against strong sides. This matters more for internationals, where the gap between a top nation and a minnow is huge.

Hit Rates - scan every upcoming fixture at once for players/teams clearing a line in a chosen % of recent games, with the bookmaker odds next to each row. 40+ markets.

Similar players / teams - similarity-based benchmarking against comparable profiles.

Referee analytics - per-fixture card/foul profiles and rankings.

The methodology problem specific to internationals is small, uneven samples: a player might have three World Cup games but forty club games, against wildly varying opposition. So I merge club and international history where it's available and lean on opponent-strength context (ELO/FIFA, shots conceded) instead of raw counts.

Still actively building.

u/Kroggg19 — 2 months ago
▲ 0 r/sportsreference+1 crossposts

Stats to Bucks World Cup special - player/team prop hit rates, opponent-average overlays, referee and venue context (altitude, travel, rest)

Hi all. I shared Stats to Bucks here a few weeks ago (football data app). The World Cup 2026 special is now live.

What it does:

  • Player & team form - last 20 matches of per-game stats vs the betting line and hit rate.
  • Filters - venue, minutes, started-only, without teammate X.
  • Opponent average overlays - the opponent's pre-tournament per-game average for the stat.
  • Hit Rates - scan every upcoming fixture for players/teams clearing a line in a chosen % of recent games. 40+ markets.
  • xG and xA overlays.
  • Match context - altitude, travel and rest per fixture.
  • Similar players / teams.
  • Referee profiles - per-fixture card/foul stats and rankings.
  • FIFA rankings and group tables.

The focus is on contextualising the sample - opponent strength, venue, lineup, sample size - because an unfiltered hit rate usually answers the wrong question.

Honest feedback on the analytics approach, or holes in it, is welcome.

u/Kroggg19 — 2 months ago

Built a football analytics app - opponent-adjusted player/team stats, a cross-fixture hit-rate scanner, referee profiles. Feedback welcome.

u/Kroggg19 — 3 months ago
▲ 8 r/bet365+2 crossposts

Built a football analytics app - opponent-adjusted player/team stats, a cross-fixture hit-rate scanner, referee profiles. Feedback welcome.

Hi all. I've been building Stats to Bucks, a football (soccer) data app currently covering the top 5 European leagues. Sharing here for feedback from people who care about methodology.

What it does:

  • Player & team form - last 20 matches of per-game stats, charted against the relevant betting line and hit rate.
  • Filters that narrow the sample - venue, minutes, started-only, and "without teammate X".
  • Opponent-adjusted context - overlay the opponent's defensive rank, plus quality-adjusted averages so a streak against weak sides doesn't read like one against strong sides.
  • Hit Rates - scan every upcoming fixture at once for players/teams clearing a line in a chosen % of recent games. 40+ markets.
  • Similar players / teams - similarity-based benchmarking against comparable profiles.
  • Referee analytics - per-fixture card/foul profiles and rankings.

The focus is on contextualising the sample - opponent strength, venue, lineup, sample size - because an unfiltered hit rate usually answers the wrong question.

Coverage is expanding for next season (most major leagues), with a World Cup 2026 add-on coming soon. Still actively building - honest feedback on the analytics approach, or holes in it, is what I'm after.

u/Kroggg19 — 3 months ago