Every number the machine computes about teams, players and matches β 143 metrics, 22,497,496 stored values. Add one to registry/metrics.json and it becomes queryable, chartable and testable everywhere.
| Metric | When known | Values | What it measures |
|---|---|---|---|
| congestion 21d | before kickoff | 7,940 | Games played in the previous 21 days. |
| elo | before kickoff | 7,940 | NBA Elo entering the game (K=20, home advantage 100). |
| elo momentum (last 5) | before kickoff | 7,774 | Elo change over last 5 games. |
| matches since win | before kickoff | 7,901 | Games since last win (capped 15). |
| points against avg (last 10) | before kickoff | 7,624 | Average points conceded over previous 10 games. |
| points for avg (last 10) | before kickoff | 7,624 | Average points scored over previous 10 games. |
| rest days | before kickoff | 7,901 | Days since previous game (capped 10; back-to-back = 1). |
| Metric | When known | Values | What it measures |
|---|---|---|---|
| ah line | before kickoff | 44,609 | Opening Asian handicap line (home side) β the market's own margin-of-victory forecast. |
| disagreement home | before kickoff | 145,544 | Cross-book relative spread of home price β market uncertainty. |
| overround 1x2 | before kickoff | 162,034 | Bookmaker margin on the opening 1x2 market β pricing confidence signal. |
| p away | before kickoff | 162,034 | Opening-odds de-vigged away-win probability. |
| p draw | before kickoff | 162,034 | Opening-odds de-vigged draw probability. |
| p home | before kickoff | 162,034 | Opening-odds de-vigged probability of home win β the market's opinion as a feature. |
| p over25 | before kickoff | 49,444 | Opening-odds de-vigged P(3+ goals). |
| sharp soft gap away | before kickoff | 79,813 | Sharp-vs-soft divergence at the open: de-vigged P(away) at Pinnacle minus the soft-book consensus median. Positive = sharp money rates away higher than recreational books. The origination signal nobody re-sells. |
| sharp soft gap draw | before kickoff | 79,813 | Sharp-vs-soft divergence at the open: de-vigged P(draw) at Pinnacle minus the soft-book consensus median. Positive = sharp money rates draw higher than recreational books. The origination signal nobody re-sells. |
| sharp soft gap home | before kickoff | 79,807 | Sharp-vs-soft divergence at the open: de-vigged P(home) at Pinnacle minus the soft-book consensus median. Positive = sharp money rates home higher than recreational books. The origination signal nobody re-sells. |
| Metric | When known | Values | What it measures |
|---|---|---|---|
| btts | outcome | 213,573 | Both teams scored. |
| comeback happened | outcome | 165,267 | Final winner was trailing at half-time. |
| drought gap | before kickoff | 212,334 | Home winless run minus away winless run. |
| elo gap | before kickoff | 213,573 | Home Elo minus away Elo. |
| first goal minute | outcome | 68,833 | Minute of the first goal (from the event timeline; only contests with events). |
| form gap | before kickoff | 208,091 | Home 5-match form points minus away. |
| ht result | outcome | 165,267 | Half-time result (H/D/A). |
| humidity pct | outcome | 9,881 | Relative humidity (%) at kickoff hour at the match location. Forecast stand-in, see match.temp_c. OBSERVED weather (post-contest fact β excluded from leak-free features; review #10). |
| late goal | outcome | 74,093 | Any goal in the 85th minute or later (late drama). |
| mismatch | before kickoff | 213,573 | Absolute Elo gap β how lopsided the pairing is. |
| momentum clash | before kickoff | 208,093 | Home Elo momentum minus away β form trajectory differential. |
| penalty awarded | outcome | 74,327 | Was a penalty kick taken in this match (scored or missed)? Target for the ref pointing tendency. |
| points gap | before kickoff | 184,218 | Home points minus away points before kickoff. |
| rained | outcome | 9,881 | Did it rain during the match window (kickoff to +2h, β₯0.1mm)? Forecast stand-in, see match.temp_c. OBSERVED weather (post-contest fact β excluded from leak-free features; review #10). |
| rainfall mm | outcome | 9,881 | Total precipitation (mm) during the match window (kickoff to +2h). Forecast stand-in, see match.temp_c. OBSERVED weather (post-contest fact β excluded from leak-free features; review #10). |
| rank gap | before kickoff | 184,218 | Home rank minus away rank before kickoff (positive = home worse-placed). The dated 'who is above whom' feature. |
| red card shown | outcome | 74,093 | At least one red card shown (from the event timeline). |
| ref cards avg | before kickoff | 85,540 | Referee's average total cards per match before this one (min 10 matches). |
| ref fouls avg | before kickoff | 84,776 | Referee's average total fouls per match before this one (min 10 matches). |
| ref pen rate | before kickoff | 63,296 | Referee's prior penalty kicks (scored or missed) per match before this one, min 5 prior matches. The pointing-to-the-spot tendency. |
| ref var rate | before kickoff | 63,302 | Referee's prior VAR-interventions per match (any Var event: goal/penalty/card reviews), expanding history over our stored event feeds, min 5 prior matches. Officiating microstructure nobody prices. |
| result | outcome | 213,573 | Full-time result: H, D or A. |
| second half goals | outcome | 165,267 | Goals scored in the second half (both teams). |
| stakes | before kickoff | 161,155 | How much the match matters: proximity of either side to the title race or drop zone (points gap <= 8), scaled by season progress. 0 = dead rubber, ~1 = late-season six-pointer. |
| state gap | before kickoff | 213,326 | Home state_index minus away state_index β the composite of composites. |
| style clash corners | before kickoff | 131,498 | Home corners won + away corners conceded: expected corner pressure. |
| temp c | outcome | 9,881 | Air temperature (Β°C) at kickoff hour at the match location. Actual conditions stand in for the near-perfect pre-kickoff forecast. OBSERVED weather (post-contest fact β excluded from leak-free features; review #10). |
| tempo | before kickoff | 110,628 | Combined shot volume of both sides β match tempo proxy. |
| total cards | outcome | 112,678 | Total cards shown (yellow + red, both sides). |
| total corners | outcome | 112,121 | Full-time total corners. |
| total fouls | outcome | 110,878 | Total fouls committed (both sides). |
| total goals | outcome | 213,573 | Full-time total goals. |
| var intervened | outcome | 74,327 | Did VAR intervene in this match (any review event)? Target for the ref VAR rate. |
| Metric | When known | Values | What it measures |
|---|---|---|---|
| congestion 21d | before kickoff | 14,546 | Games played in the previous 21 days. |
| elo | before kickoff | 14,546 | MLB Elo entering the game (K=4 β 162-game seasons need slow updates; home advantage 35). |
| elo momentum (last 5) | before kickoff | 14,393 | Elo change over last 5 games. |
| matches since win | before kickoff | 14,514 | Games since last win (capped 15). |
| rest days | before kickoff | 14,514 | Days since previous game (capped 7). |
| runs against avg (last 10) | before kickoff | 14,242 | Average runs conceded over previous 10 games. |
| runs for avg (last 10) | before kickoff | 14,242 | Average runs scored over previous 10 games. |
| starter era away | before kickoff | 609 | Probable away starter's season ERA at time of capture. |
| starter era gap | before kickoff | 547 | Away starter ERA minus home starter ERA at time of capture (positive = home starter sharper). |
| starter era home | before kickoff | 592 | Probable home starter's season ERA at time of capture. |
| Metric | When known | Values | What it measures |
|---|---|---|---|
| congestion 21d | before kickoff | 32,062 | Matches played in the previous 21 days. |
| elo | before kickoff | 32,062 | Tennis Elo rating entering the match (K=32, no side advantage, set-margin multiplier). |
| elo momentum (last 5) | before kickoff | 29,778 | Elo change over the last 5 matches. |
| goals prevented (last 10) | before kickoff | 120,865 | Goals prevented per match vs the pool-average save rate, rolling last 10 (min 5). PSxG-lite: positive = stopping more than an average keeper would from the same shots. |
| matches since win | before kickoff | 31,459 | Matches since last win (capped 20). |
| rest days | before kickoff | 31,459 | Days since the player's previous match (capped 30). |
| save pct (last 10) | before kickoff | 124,340 | Keeper's rolling save percentage saves/(saves+conceded) over his last 10 appearances (min 10 shots faced). The shot-stopping number. |
| saves avg (last 10) | before kickoff | 124,863 | Keeper's rolling saves per appearance over his last 10 (min 3), strictly prior. The volume side of the save prop. |
| Metric | When known | Values | What it measures |
|---|---|---|---|
| accuracy ratio | outcome | 143,498 | Shots on target / total shots this match. High = they know what to do with their chances; low = hit-and-hope. The chance-intelligence number. |
| accuracy ratio (last 10) | before kickoff | 139,004 | Rolling mean of team.accuracy_ratio over the previous 10 matches (leak-free). |
| accuracy ratio (last 3) | before kickoff | 141,543 | Rolling mean of team.accuracy_ratio over the previous 3 matches (leak-free). |
| accuracy ratio (last 5) | before kickoff | 141,543 | Rolling mean of team.accuracy_ratio over the previous 5 matches (leak-free). |
| blown lead rate (last 20) | before kickoff | 317,081 | Share of the last 20 games where a half-time lead was not converted to a win (bottling index). |
| box share | outcome | 137,954 | Shots inside the box / total shots this match β chance QUALITY. Low = shooting from distance out of ideas. |
| box share (last 5) | before kickoff | 136,186 | Rolling mean of box share over the previous 5 matches (leak-free). |
| cards avg (last 5) | before kickoff | 419,698 | Average cards received (yellow + red) over the previous 5 contests. |
| cards shown | outcome | 142,942 | Cards shown to this side in the match (yellow + red, API-Football). |
| coach days | before kickoff | 323,154 | Days since the current coach arrived (API-Football career spells; historical coverage from spell start dates). The 'what changed - coach?' factor. |
| comeback rate (last 20) | before kickoff | 317,081 | Share of the last 20 games won from behind at half-time (never-say-die index). |
| congestion 21d | before kickoff | 427,146 | Matches played in the previous 21 days (fixture pileup). |
| conversion (last 5) | before kickoff | 222,348 | Shot conversion: goals per shot, previous 5. |
| corner diff avg (last 5) | before kickoff | 265,321 | Average corner differential over previous 5. |
| corners against avg (last 5) | before kickoff | 265,321 | Average corners conceded over the previous 5 contests. |
| corners for avg (last 5) | before kickoff | 265,321 | Average corners won over the previous 5 contests. |
| corners taken | outcome | 146,246 | Corners taken by this side in the match (API-Football). |
| corners volatility (last 10) | before kickoff | 261,084 | Std-dev of corners won, previous 10. |
| defensive leak (last 5) | before kickoff | 222,348 | Goals conceded per shot faced, previous 5. |
| dominance (last 5) | before kickoff | 222,432 | Share of total shots in own matches, previous 5. |
| elo | before kickoff | 427,146 | Elo rating entering the contest (K=20, home advantage 60, goal-margin multiplier). |
| elo momentum (last 5) | before kickoff | 419,700 | Elo change over the last 5 matches β trajectory, not level. |
| eye test v1 | before kickoff | 141,551 | The eye test, formalized: 'damn, this team looks good' = z-combo over the last 5 matches of shots on target (25%), xG created (20%), threat rate (20%), chance intelligence (15%), possession (10%), pass accuracy (10%). Threat-weighted so sterile domination scores low. |
| eye trend v1 | before kickoff | 139,386 | Looking better than their own normal: threat components over the last 3 matches minus the same over the last 10. Positive = heating up, negative = going flat β the time-chunk comparison. |
| first sub minute (last 10) | before kickoff | 144,959 | Rolling mean minute of the team's FIRST substitution over its last 10 matches with a recorded sub (strictly prior). Coach proactivity fingerprint: ~46 acts at half-time, ~70 waits. |
| form points (last 5) | before kickoff | 419,698 | League points collected over the previous 5 contests (any venue). |
| goal diff avg (last 5) | before kickoff | 419,698 | Average goal differential over previous 5. |
| goals against avg (last 5) | before kickoff | 419,698 | Average goals conceded over the previous 5 contests. |
| goals for avg (last 5) | before kickoff | 419,698 | Average goals scored over the previous 5 contests. |
| goals volatility (last 10) | before kickoff | 413,112 | Chaos index: std-dev of goals scored, previous 10. |
| h2 goals (last 10) | before kickoff | 323,450 | Average second-half goals scored over the last 10 games (late-game engine). |
| h2h win rate (last 5) | before kickoff | 240,182 | Score vs THIS opponent over their last 5 meetings (win=1, draw=0.5), any venue, strictly pre-kickoff. |
| ht lead rate (last 20) | before kickoff | 317,081 | Share of the last 20 games this team led at half-time. |
| keeper form v1 | before kickoff | 126,153 | Save% (rolling 10) of the keeper who STARTED the team's previous match β the last line of defence as known before kickoff, no team-news leak. Books rarely reprice a keeper change. |
| league points | before kickoff | 368,436 | League points accumulated before kickoff. |
| league rank | before kickoff | 368,436 | League table position before kickoff (running points table, recomputed leak-free for all seasons). Lower = better. |
| matches since blank | before kickoff | 425,546 | Matches since last failing to score (scoring streak length, capped 20). |
| matches since clean sheet | before kickoff | 425,546 | Matches since last clean sheet (defensive drought, capped 20). |
| matches since win | before kickoff | 425,546 | Matches since last win (winless run, capped 20). |
| new coach | before kickoff | 323,154 | Coach changed within the last 60 days - the new-manager-bounce window. |
| pass acc avg (last 5) | before kickoff | 136,971 | Average pass accuracy % over the previous 5 matches. Leak-free: only games strictly before kickoff. |
| pass accuracy | outcome | 138,740 | Completed-pass percentage in this match. |
| possession | outcome | 144,132 | Share of the ball this side had (%), from API-Football match statistics. |
| possession avg (last 5) | before kickoff | 142,207 | Average possession % over the previous 5 matches. Leak-free: only games strictly before kickoff. |
| rest days | before kickoff | 425,546 | Days since the competitor's previous contest (capped at 30). |
| scorer concentration | before kickoff | 129,342 | Top scorer's share of the team's season goals before kickoff (from timed goal events). 1.0 = one-man team. |
| season ppg | before kickoff | 408,764 | Points per game in the current season before this contest. |
| shot diff avg (last 5) | before kickoff | 222,432 | Average shot differential over previous 5. |
| shots for avg (last 5) | before kickoff | 222,433 | Average shots taken over the previous 5 contests. |
| shots inside box | outcome | 138,754 | Shots taken inside the box in this match. |
| shots on target | outcome | 144,480 | Shots on target in this match. |
| shots total | outcome | 144,490 | Total shots attempted (API-Football). |
| skill v1 | before kickoff | 136,473 | Invented composite: 'skill on the ball' = 40% pass accuracy + 30% possession + 30% chance creation (xG for), each z-normalized, over the last 5 matches. Defined purely as registry data (ComboMetric) β the template for any made-up factor. |
| solidity v1 | before kickoff | 32,108 | The defensive eye test β 'the other team looks worse': MINUS xG conceded (45%), MINUS shots-on-target conceded (35%), MINUS goals conceded (20%), last 5, z-normalized. High = hard to play against. |
| sot against avg (last 5) | before kickoff | 142,495 | Shots on target CONCEDED per game over the previous 5 matches. Leak-free: only games strictly before kickoff. |
| sot for avg (last 10) | before kickoff | 139,952 | Rolling mean of team.shots_on_target over the previous 10 matches (leak-free). |
| sot for avg (last 3) | before kickoff | 142,507 | Rolling mean of team.shots_on_target over the previous 3 matches (leak-free). |
| sot for avg (last 5) | before kickoff | 142,507 | Shots on target per game over the previous 5 matches. Leak-free: only games strictly before kickoff. |
| squad age | before kickoff | 153,263 | Minutes-weighted mean age of the side's previous-match lineup (person DOB from bio-profile enrichment; strictly prior lineup, no team-news leak). |
| state index | before kickoff | 426,652 | 'How is this team right now' β weighted blend of strength (Elo), trajectory (momentum), attack/defence balance, control, home form, drought and fatigue. Each input z-scored against the past only. The first of many composites. |
| sterile dominance v1 | before kickoff | 141,674 | Possession without punch: +possession (35%) +pass accuracy (25%) MINUS threat rate (40%), last 5. High = they keep the ball and do nothing with it β the 'it's just them defending well / passing around the back' detector. |
| threat rate | outcome | 144,094 | Total shots per % of possession this match. High = the ball does something when they have it; low with high possession = sterile passing (or the other side parked). |
| threat rate (last 10) | before kickoff | 139,658 | Rolling mean of team.threat_rate over the previous 10 matches (leak-free). |
| threat rate (last 3) | before kickoff | 142,172 | Rolling mean of team.threat_rate over the previous 3 matches (leak-free). |
| threat rate (last 5) | before kickoff | 142,172 | Rolling mean of team.threat_rate over the previous 5 matches (leak-free). |
| travel km | before kickoff | 18,780 | Away side's great-circle distance from home city to the match city (clubs with known coordinates only). |
| venue ppg (last 5) | before kickoff | 413,145 | Points per game over previous 5 matches at the same venue side (home form for home side). |
| xg | outcome | 33,771 | Expected goals (xG) posted in this match β chance quality, not luck. |
| xg against avg (last 5) | before kickoff | 32,520 | Expected goals CONCEDED per game over the previous 5 matches. Leak-free: only games strictly before kickoff. |
| xg for avg (last 5) | before kickoff | 32,521 | Expected goals created per game over the previous 5 matches β chance quality walking in. Leak-free: only games strictly before kickoff. |
| Metric | When known | Values | What it measures |
|---|---|---|---|
| deciding set rate | before kickoff | 26,796 | Clutch: share of career deciding sets won entering the match (null under 5 deciders). |
| rank | before kickoff | 32,031 | Published world ranking walking into the match (as recorded by tennis-data at match time). |
| sets played 14d | before kickoff | 32,062 | Sets played in the previous 14 days β honest fatigue (a five-set war and a walkover are not the same 'one match'). |
| straight sets rate | before kickoff | 27,845 | Dominance: share of career wins in straight sets entering the match (null under 5 wins). |
| surface elo | before kickoff | 32,062 | Elo maintained separately per surface β the rating entering THIS match on THIS surface. Specialists diverge from overall Elo; the gap is the signal. |