If we were only talking about individual players, you could look at wOBA or wRC+ (or their cumulative counterparts) and be done. However, research has found that run scoring based as a function of these underlying events is not completely linear and that really good offenses typically score more runs than you would expect given their standard wOBA. BaseRuns addresses this problem.
https://library.fangraphs.com/features/baseruns/
Took less than a minute to find the backup lol
4.6 Pythagoreon Intuition
The relationship between wins and run differential isn’t perfect there are some circumstances that could some marginally different outcomes. Such as teams that when they win, win by a lot. This would cause you to have a high run differential for one game, but the win would only count as one win. If the team’s losses are closer in nature. this can have a compounding affect. And would lead to a team “beating” it’s Pythagorean winning percentage. A team that is over performing its Pythagorean could be considered lucky.
It is also possible for teams to under perform their Pythagorean. A team that wins many of its games by only one run would have a low run differential and a higher win percentage. Winning a large number of close games is often attributed to luck, but it could also be a factor of team strategy. A good pitching staff paired with a weaker offense could produce a result like this. We can test this theory by seeing if teams with a top tier closer are more likely to under perform their Pythagorean Win Percentage.
https://rstudio-pubs-static.s3.amazonaws.com/364713_31ea7e36210f40319036a083731bb2d4.html