P4P
In the UFC, there’s a champ per each division, followed by 15 ranked fighters, and a pool of unranked fighters below that. I find that most of the time I really don’t agree with the rankings or the matchmaking. These rankings are voted on by the media and it shows. P4P is an algorithm that ranks fighters holistically based off the level of opponents and performance in the octagon. The idea of a UFC elo engine isn’t originally mine, I got it from this really cool YouTube video. That engine functions more as a “greatest of all time” list, whereas this is an active reflection on the sport.
Highlights
- Combines an ELO-inspired rating system with a per-fight performance layer — wins matter, but so does how you won.
- Generates rankings per weight class and pound-for-pound, with recency decay and inactivity penalties built in.
- “The Algorithm Disagrees” — flags where the data diverges from official UFC rankings. That’s where it gets interesting.
Tech Stack
- Python, Polars — data pipeline and analysis
- BeautifulSoup — scraping fight stats from ufcstats.com
- D3.js — interactive charts and fighter profiles
Notes
- Inspired by the “I made a UFC Elo Engine” video — loved the idea of applying ELO to MMA. P4P takes it further by adding a performance layer so it’s not just about wins and losses but how you fought.
- The interesting question isn’t just “who’s the best” but “where do the numbers disagree with the narrative.”
- Starting with historical data first, live updates come later.