Methodology

How the numbers are used

Never mix models

API-Football, Sportmonks and American Soccer Analysis each produce their own expected-goals figures. They are peers. I never add them, average them, or reconcile them into a single number. The model-spread chart exists to show them side by side, with a band from the lowest complete model to the highest. If a source is missing, that tick is omitted. Pressure Index is not PPDA, and it is labelled as such wherever it appears.

Att, Cre, Pass, Def

Those four columns are house ratings, not a provider score. They bundle counting stats from the same event feed: goals, shots on target, shots and successful dribbles for Att; assists, key passes and dribble attempts for Cre; completion rate and pass volume for Pass; tackles, interceptions and duel win rate for Def. Goalkeepers skip Att and Cre. Their Def is saves against goals conceded. Expected goals never go into any of the four.

The baseline is that player's own league per-90 this season, not the squad and not the position. An average night sits at 6.5. The composite is squashed so a single goal cannot print 12 out of 10. Cells stay empty under 15 minutes in the match or 300 minutes on the season.

Team percentiles

Each bar is a rank among the 30 MLS clubs this season, not a grade out of 100. The formula is the share of teams strictly worse. Rows stay inside one source. API-Football supplies xG created, xG conceded, shot quality and possession. American Soccer Analysis supplies attacking-third passing over expected and set-piece share of xG, and those rows are marked ASA on the page. I never average the two models into one percentile.

Player percentiles

Player bars use the same rank formula, inside a position group rather than the whole league. The cohort is every MLS player with 900 or more minutes, split goalkeeper, defender, midfielder and forward from the event-feed position. A player under that minutes floor gets no percentile panel. ASA rows (xG per 90, xA per 90, passing goals added, passing over expected) only appear when the player map is high-confidence. Keepers get saves per 90 and goals prevented instead of the outfield set.

Expected points

xPts is a Poisson simulation from API-Football match xG for and against. Each finished match with both xG figures contributes a win, draw and loss probability, summed across the season. A match with no xG is counted at the actual points taken, not guessed. That is why a club can sit above or below the table without us mixing in American Soccer Analysis xPoints. Those two expected-points models are peers. I publish the API-Football one.

Worked example: a club with 34 points from 28.5 xPts has a diff of +5.5, meaning results have run about five and a half wins ahead of the chances the side has created. A club with 22 points from 30 xPts, diff -8, has taken roughly eight wins fewer than its process deserved. The Diff column on the table is exactly this gap, and it is the one worth reading first.

Pressure profiles

Preview pressure curves are Sportmonks Pressure Index, not PPDA and not line height. Each mapped match is bucketed into nine bands, then min-max normalised so the shape of the night is comparable when the raw index is not. The LA Galaxy curve averages the last six mapped matches, and only publishes with at least four. The sample count sits on the panel. Opponent curves stay off for now: Sportmonks coverage is not league-wide, and a one-sided profile would look more certain than it is.

Map confidence

Some player claims depend on a mapping between data sources. High-confidence maps are stated flatly. Medium-confidence maps get a marked qualifier. Low-confidence maps never surface. That gate lives in the component, not in editorial discipline.

What is not available

I do not have shot coordinates, per-shot records, big chances, field tilt, possession by third, true PPDA, line height, set-piece origin as a fact, salary or roster mechanics, weather, call-ups, or post-shot xG. If a panel would need those to be honest, it is not on the page.

Test your take

You type a claim. I judge it against the published match, player, and squad sheets at that moment. Holds up, sort of, or doesn't hold. Sort of means the numbers go both ways, or the take reaches past those sheets. I do not come back after the match to re-score it.

The verdict is produced by a language model reading the fact sheets, not a human editor. Conviction is a self-reported 0-100 slider you set before judging, not a measured quantity.

xG difference

Chances created minus chances allowed, in expected goals. The season figure averages only the matches with a published recap sheet, not every match played, so it can lag the actual fixture count by a match or two while the analysis catches up.

Goals added

Every touch a player takes, a pass, a shot, a dribble, a tackle, a foul, changes their team's chance of scoring compared with the moment before it. Goals added is that change, summed across a match or a season and expressed in goals. Zero is average: a positive number is value created above what an average player would have managed with the same ball in the same place, a negative number is value given away.

Two units. Team pages report goals added per match, so sides that have played different numbers of games stay comparable. Player pages stay per 96 minutes, so a substitute is not compared raw against someone who finished the match.

Two baselines. Zero is average per action: that is the player-page scale. The team panel compares against the average MLSteam instead, because every side's summed total sits well above zero and a zero baseline makes all six bars positive for everyone. The bars are the gap to that league mean, not to zero. A positive number is better than average on both sides.

The team panel is a two-sided ledger. Value created (with the ball) sits on the left. Value allowed to opponents sits on the right. Both columns cover getting open, finishing, dribbling and passing. Ball-winning (breaking play up and fouling) is excluded from both totals, and from the net, and is reported on its own line so the two sides stay symmetric. Opponents' ball-winning against us is excluded too.

The row labels are house terms. American Soccer Analysis uses its own names in the source data. The mapping is:

On the siteASA term
Getting openReceiving
FinishingShooting
DribblingDribbling
PassingPassing
Breaking play upInterrupting
FoulingFouling

Match and season ratings

The Rating column on the squad table and the season rating on a player page are the data provider's own 1-10 score for a match or a season, built from their own weighting of counting stats. This is a different number from the Att, Cre, Pass, Def composite described above, which is ours. The two are built from overlapping but not identical inputs, they will sometimes disagree on the same player in the same match, and neither one corrects the other.

Squad table metrics

xG+xA/90 is expected goals plus expected assists, a rate per 90 minutes played. G−xG is goals scored minus expected goals, a season total rather than a rate, so it grows with minutes and should be read next to appearances. Tkl+Int is tackles plus interceptions per 90, and Blocks/90 is blocks per 90, both rates. Duels won is the share of contested balls won, a percentage rather than a count.

Form

The sparkline in the Form column is a player's last ten match ratings, oldest to newest. The line colour marks whether the most recent rating sits above or below the first one in the window, rising or falling, not whether the level is good or bad. The vertical range is scaled to each player's own ten matches, not shared across the column, so compare shape and direction between players rather than reading the height of the line as a value.

Defensive actions

Tackles, interceptions and blocks, added together. The position average it is compared against is drawn from the same cohort as the percentile panels above: every MLSplayer with 900 or more minutes, split goalkeeper, defender, midfielder and forward. A volume count rises for a player in a team that spends more of the match without the ball, so read it alongside a sense of how much defending that team's season has asked for.

Full tier

Expected LA is on the full tier. American Soccer Analysis coverage is available for MLS, which is why goals-added and passing-over-expected percentiles appear on team and player pages. Expected points on the table are the API-Football Poisson, not ASA xPoints.