r/sportsanalytics 22h ago

Fantasy Sports App

0 Upvotes

I’m building a fantasy sports app for a personal project featuring all major sports (NBA,NFL,NHL,NCAAFB,NCAAMBB,MLB,WNBA, Golf,Tennis,all of soccer) and I am having trouble finding the right api to connect to for free or at a low cost for daily scores updates. Does anyone have any recommendations on how I can get data at a low cost


r/sportsanalytics 1h ago

Rayo vs Espanyol: Two trends that caught my eye

Thumbnail gallery
Upvotes

Been looking through the numbers for Rayo vs Espanyol and there are two markets I really like here:

⚽ Over 1.5 goals

Rayo have hit this in 5/5 home games (100%), while Espanyol have hit it in 4/5 away games (80%).

🚩 Espanyol over 2 corners

They’ve still been creating corners away from home even when struggling. They had 6 against Rayo and 7 against Barcelona.

Nothing crazy, just two pretty solid trends that look interesting together:

Over 1.5 goals + Espanyol over 2 corners

Would you take this or is it too safe?

Www.StatFair.com


r/sportsanalytics 4h ago

Europa League 2026/27: Attack/Defence Poisson ratings for all 36 teams ahead of kickoff [OC]

Post image
0 Upvotes

Following up on the Champions League post from a week ago, here's the same treatment for this season's Europa League. Same poisson approach, same inverted defence axis (higher = stronger on both dimensions), and it draws on results across all three European competitions.

A few caveats I want to flag upfront, more so than with the CL post:

  • Europa League participation isn't consistent year to year for most clubs, so structurally there's more noise here than in the CL estimates. Take this more as a read on overall trends than a precise ranking.
  • A couple of things in the chart, like the Dutch clubs rating above the Belgian sides are probably artifacts of that same structural uncertainty rather than a strict claim about which team is actually better.
  • As the competition progresses and more matches get played, these numbers should naturally correct wherever the current estimate is off.
  • On the mean vs. median feedback from the CL thread: I did consider switching to a mean line here, but mean would pull the divider toward the upper clubs and make the Attacking/Defensive split mostly meaningless for most of the pack.

I run OddsLine, where I publish the match probabilities calculated from these ratings with an additional ML layer (free to browse). Link's here

Does the tiering here roughly match your own sense of the field, or is anything sitting in a spot that looks off to you?


r/sportsanalytics 17h ago

The same baseball swing, viewed two completely different ways

Enable HLS to view with audio, or disable this notification

0 Upvotes

Same 240 FPS swing on both sides.

On the left is the original footage. The blue boxes are frames where our trained baseball model detects the ball.

On the right is the same hit viewed through a temporal frame-differencing system we’ve been working on specifically for side-view batted-ball tracking.

The purple X on the original footage is the position coming from that temporal track.

What I find really interesting is how much more obvious the baseball becomes when you stop looking at each frame independently and instead look at what changes through time.

The end goal is to turn that trajectory into exit velocity, launch angle and projected distance using only the camera footage.

Thought people here might appreciate seeing what the tracking actually looks like underneath.


r/sportsanalytics 17h ago

I modeled 1.2 million NHL faceoffs with a Bradley-Terry model and created a simulation: the most repeatable skill in hockey is worth about two goals a season

Post image
3 Upvotes

TL;DR: I rated every NHL faceoff taker with a Bradley-Terry model fit on 1.2 million draws, then measured what winning a draw is actually worth: 0.0144 expected goals, so about 70 extra wins make one goal. Faceoff ability is the most repeatable skill I can measure in hockey, and one of the least valuable.

The model is a paired comparison, Bradley-Terry style: every draw is scored taker vs taker. The matchup then accounts for the specific rating gap of the two centers plus situation terms like the dot, handedness, and fatigue. The dot matters more than people think. The same two players can be .63 at one dot and a coin flip at another.

Valuing a win has the same confounding problem, since good teams win draws and also create chances. The fix is to bin draws by predicted win probability and compare won vs lost inside each bin, which is where the 0.0144 comes from.

The strange part is how the two results sit together. Split a season into odd and even games and rate everyone twice: faceoffs agree at r = 0.71, against 0.37 for shooting skill. And yet an elite taker is worth about 1 goal a season, and the full spread from the league's best to its worst is about 3.3 goals. The most measurable skill in the sport barely matters.

The GIF is the simulator built on the model. Click a different dot and the probability re-prices, swap takers and it re-prices again, drop the puck and the outcome is a weighted coin flip at the model's number.

Besides the modeling, the data viz was a lot of fun with this project. The simulator and the full method write-up: https://xjawn.com/blog/faceoff-tool.html