Soccer predictions: actual data vs predicted data

Slate 20261023 · 2 match(es)
How to read this report. Each match shows the model's headline prediction, the stage-by-stage lambda (goal-rate) build, both teams' standing/form inputs, and every starter's projected line next to their real season baseline. A moderate / large deviation badge flags a projection that strays far from the player's season form — a quick way to spot when the inputs look right but a projection does not. When the real result is known an actual-vs-predicted banner appears.

All matches overview

MatchScoreWinnerH / D / AO2.5BTTSConfλ H/AActualResult
Alavés vs Málaga
LaLiga
1-0Alavés45.2% / 29.2% / 25.6%35.7%41.6%0.721.26 / 0.87-pending
Ipswich vs Forest
Premier League
0-1Forest28.6% / 24.7% / 46.7%54.0%56.6%0.721.22 / 1.62-pending

Match detail

Alavés vs Málaga

LaLiga · 20261023 · 5-3-2 vs 4-4-2
Predicted 1-0Winner: AlavésWinning H 1-0 (14.9%)Winning A 0-1 (10.3%)Confidence 0.72λ home/away 1.26 / 0.87Most-likely P 14.9%
Actual vs predicted: result not available yet (upcoming fixture).
XGBoost Reasoning & FBref Dataset Tracing
Antagonist + XGBoost match analysis for Alavés vs Málaga. Player statistics regressed using position-specific XGBoost models (G, D, M, F) with 2026-2027 FBref priors. Micro-duels resolved across 5-3-2 vs 4-4-2 (duel lambdas: Home 1.231, Away 0.888). Final calibrated Poisson lambdas: Home 1.257, Away 0.869 (most likely score 1-0).
Home Starters 11/11 XGBoost (9 FBref) Away Starters 11/11 XGBoost (6 FBref) Bench Modeled H: 7 / A: 7 Duel λ (H/A) 1.23 / 0.89 Final λ (H/A) 1.26 / 0.87
FBref Team Priors: Deportivo Alavés (Gls/90: 1.6666666666666667, GA/90: 1.67 → E[λ]: 0.407) vs Málaga CF (Gls/90: 0.3333333333333333, GA/90: 0.33 → E[λ]: 0.412) | Blend Weight: 0.228
Modeling Pipeline Stages (5 layers)
  1. 1. XGBoost player regressions for volume & event rates with market-value quality scaling
  2. 2. Multi-source prior blending (FBref 2026-2027 tables + Sofascore season history)
  3. 3. Antagonist formation duel matrix resolving 1v1 and zonal matchups
  4. 4. Team-level prior calibration (FBref possession and attack/defense efficiencies)
  5. 5. Bivariate Poisson matrix with Dixon-Coles low-score correction

Standing & form context

MetricAlavésMálaga
League position7.0020.00
Points per game1.280.81
Attack index1.020.72
Defense (concede) index1.080.93
Form multiplier1.030.97
Standing λ multiplier1.050.85

Lambda decomposition (how the goal rates were built)

StageAlavés λMálaga λ
FBref Squad Prior E[λ] (weight 0.228)0.4070.412
Pre-competitive-floor1.2570.869
Pre-calibration (Micro-duels)1.2310.888
Final λ1.2570.869
competition calibration scale 1.0competition observed total goals 0.0quality gap applied Falsemismatch score pressure applied Falsecompetitive underdog floor applied Falsestage discount 1.0

Scoreline distribution & markets

Top 5 scorelinesP
1-014.9%
1-113.1%
0-012.0%
0-110.3%
2-09.4%
Home win45.2%
Draw29.2%
Away win25.6%
Over 2.535.7%
BTTS yes41.6%
Pregame fair line — favorite Alavés (45.2%), fair total 2.13, fair spread 0.39

Projected players vs season baseline

Proj = projected for this match · Season = this season's per-game average from match data · deviation badge compares projected xG to the player's season xG/game.

Alavés — projected line vs season baseline (5-3-2)

PlayerPosMinProj GProj xGSeason xG/gProj ShSeason Sh/gProj RtgSeason RtgRecModel / FBref Prior
Lucas BoyéF7810.320.34ok22.16.861.927FBref Prior F_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost F_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 0.9986, quality 0.466)market_value_eur=5300000
quality_factor=0.4659
boost_factor=0.9986
reference_quality=0.505
history_matches=37
history_shrink=0.119
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0083)blend_weight=0.0083
history_matches=37
season_overlap_discount=1.0
per90_to_match_factor=0.8649
prior_reliability=0.1067
competition=La Liga
wonTackle: 1.1633 -> 1.176
wasFouled: 1.6954 -> 1.6903
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Ángel Recio, Fernando Calero', 'matchup_zone': 'Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle', 'duel_win_rate': 0.209, 'pressing_faced': 'LOW', 'numerical_situation': '1v2', 'xg_multiplier': 1.0129, 'skill_edge': 0.0128, 'height_edge': -0.004, 'attacker_skill': 0.4659, 'defender_skill': 0.4374, 'attacker_role': 'ST', 'attacker_mv_price_index': 1.0, 'defender_adjusted_parts': [{'player': 'Ángel Recio', 'market_value': 1000000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.4374}, {'player': 'Fernando Calero', 'market_value': 2100000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.4374}], 'xg_override': 0.3169}
totalShots: 2.1359 -> 2.1635
shotOffTarget: 1.3588 -> 1.3763
onTargetScoringAttempt: 0.7748 -> 0.7848
expectedGoalsOnTarget: 0.4579 -> 0.4638
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.26 (squad xG sum 1.2639, xG scale 0.9946, xA scale 1.0687, team xA 0.82 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.257
squad_xg_sum=1.2639
squad_xa_sum=0.7645
team_expected_assists=0.817
team_xa_to_xg_ratio=0.65
-
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 77.0)match_squad_rank=6
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=1
goal_probability=0.2704
goal_rate=0.3514
scorer_weight=0.3448
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0605
assist_rate=0.0068
provider_weight=0.0499
-
Mariano DíazF6700.230.08179%20.66.731.822XGBoost F_service
Step-by-step (9 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost F_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 0.9958, quality 0.437)market_value_eur=480000
quality_factor=0.4374
boost_factor=0.9958
reference_quality=0.505
history_matches=19
history_shrink=0.2083
-
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Ángel Recio, Fernando Calero', 'matchup_zone': 'Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle', 'duel_win_rate': 0.184, 'pressing_faced': 'LOW', 'numerical_situation': '1v2', 'xg_multiplier': 0.9765, 'skill_edge': 0.0, 'height_edge': -0.016, 'attacker_skill': 0.4374, 'defender_skill': 0.4374, 'attacker_role': 'ST', 'attacker_mv_price_index': 1.0, 'defender_adjusted_parts': [{'player': 'Ángel Recio', 'market_value': 1000000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.4374}, {'player': 'Fernando Calero', 'market_value': 2100000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.4374}], 'xg_override': 0.2317}
totalShots: 1.6552 -> 1.6163
shotOffTarget: 0.984 -> 0.9609
onTargetScoringAttempt: 0.6711 -> 0.6553
bigChanceMissed: 0.4077 -> 0.3981
expectedGoals: 0.2373 -> 0.2317
goals: 0.2181 -> 0.213
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.26 (squad xG sum 1.2639, xG scale 0.9946, xA scale 1.0687, team xA 0.82 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.257
squad_xg_sum=1.2639
squad_xa_sum=0.7645
team_expected_assists=0.817
team_xa_to_xg_ratio=0.65
-
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 91.0)match_squad_rank=12
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv_filled
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.2058
goal_rate=0.213
scorer_weight=0.2151
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0525
assist_rate=0.1733
provider_weight=0.0674
-
Denis SuárezM7200.080.03179%10.27.055.028FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 0.9976, quality 0.437)market_value_eur=1100000
quality_factor=0.4374
boost_factor=0.9976
reference_quality=0.505
history_matches=38
history_shrink=0.1163
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0060)blend_weight=0.006
history_matches=38
season_overlap_discount=1.0
per90_to_match_factor=0.7968
prior_reliability=0.08
competition=La Liga
totalCross: 3.7138 -> 3.7476
fouls: 0.6893 -> 0.6972
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Dani Lorenzo', 'matchup_zone': 'Central Mid vs Central Mid — Box-to-Box Midfield Contest', 'duel_win_rate': 0.42, 'pressing_faced': 'LOW', 'numerical_situation': '1v1', 'xg_multiplier': 1.0, 'skill_edge': 0.0, 'height_edge': 0.0, 'attacker_skill': 0.4374, 'defender_skill': 0.4374, 'attacker_role': 'CM', 'attacker_mv_price_index': 0.9, 'defender_adjusted_parts': [{'player': 'Dani Lorenzo', 'market_value': 2300000, 'role': 'CM', 'price_index': 0.9, 'adjusted_quality': 0.4374}], 'xg_override': 0.081}
aerialWon: 0.1102 -> 0.9
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.26 (squad xG sum 1.2639, xG scale 0.9946, xA scale 1.0687, team xA 0.82 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.257
squad_xg_sum=1.2639
squad_xa_sum=0.7645
team_expected_assists=0.817
team_xa_to_xg_ratio=0.65
expected_assists: 0.1578 -> 0.1686
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 74.0)match_squad_rank=2
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.0774
goal_rate=0.0958
scorer_weight=0.0897
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.1552
assist_rate=0.1311
provider_weight=0.1469
-
Antonio BlancoM8300.040.04ok11.06.964.432FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 1.0004, quality 0.519)market_value_eur=9700000
quality_factor=0.5189
boost_factor=1.0004
reference_quality=0.505
history_matches=45
history_shrink=0.1
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0130)blend_weight=0.013
history_matches=45
season_overlap_discount=1.0
per90_to_match_factor=0.9257
prior_reliability=0.2
competition=La Liga
interceptionWon: 1.3659 -> 1.3802
fouls: 1.7532 -> 1.7665
totalShots: 0.5878 -> 0.5963
totalCross: 1.1384 -> 1.1437
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Dani Lorenzo', 'matchup_zone': 'Central Mid vs Central Mid — Box-to-Box Midfield Contest', 'duel_win_rate': 0.462, 'pressing_faced': 'LOW', 'numerical_situation': '1v1', 'xg_multiplier': 1.0623, 'skill_edge': 0.0424, 'height_edge': 0.0, 'attacker_skill': 0.5316, 'defender_skill': 0.4374, 'attacker_role': 'CM', 'attacker_mv_price_index': 0.9, 'defender_adjusted_parts': [{'player': 'Dani Lorenzo', 'market_value': 2300000, 'role': 'CM', 'price_index': 0.9, 'adjusted_quality': 0.4374}], 'xg_override': 0.0432}
aerialWon: 0.3891 -> 0.9
totalShots: 0.5963 -> 0.6334
shotOffTarget: 0.4137 -> 0.4395
onTargetScoringAttempt: 0.1718 -> 0.1825
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.26 (squad xG sum 1.2639, xG scale 0.9946, xA scale 1.0687, team xA 0.82 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.257
squad_xg_sum=1.2639
squad_xa_sum=0.7645
team_expected_assists=0.817
team_xa_to_xg_ratio=0.65
-
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 78.0)match_squad_rank=3
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.0421
goal_rate=0.0458
scorer_weight=0.0442
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0729
assist_rate=0.0728
provider_weight=0.077
-
Pablo IbáñezM8100.070.08ok11.26.963.431FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 0.9984, quality 0.451)market_value_eur=4099999
quality_factor=0.4511
boost_factor=0.9984
reference_quality=0.505
history_matches=46
history_shrink=0.098
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0127)blend_weight=0.0127
history_matches=46
season_overlap_discount=1.0
per90_to_match_factor=0.9054
prior_reliability=0.2
competition=La Liga
wasFouled: 2.2428 -> 2.2334
totalCross: 1.3067 -> 1.2977
totalShots: 0.9637 -> 0.9707
fouls: 1.757 -> 1.75
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Dani Lorenzo, Carlos Dotor', 'matchup_zone': 'Central Mid vs Defensive Mid — Pressing/Creation Duel'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.26 (squad xG sum 1.2639, xG scale 0.9946, xA scale 1.0687, team xA 0.82 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.257
squad_xg_sum=1.2639
squad_xa_sum=0.7645
team_expected_assists=0.817
team_xa_to_xg_ratio=0.65
-
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 73.0)match_squad_rank=5
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.0684
goal_rate=0.0765
scorer_weight=0.0739
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0705
assist_rate=0.087
provider_weight=0.0846
-
Abderrahman RebbachF8100.080.0493%10.66.851.442XGBoost F_service
Step-by-step (9 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost F_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 0.9977, quality 0.437)market_value_eur=2400000
quality_factor=0.4374
boost_factor=0.9977
reference_quality=0.505
history_matches=39
history_shrink=0.1136
-
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Ángel Recio, Fernando Calero', 'matchup_zone': 'Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle', 'duel_win_rate': 0.18, 'pressing_faced': 'LOW', 'numerical_situation': '1v2', 'xg_multiplier': 0.953, 'skill_edge': 0.0, 'height_edge': -0.032, 'attacker_skill': 0.4374, 'defender_skill': 0.4374, 'attacker_role': 'ST', 'attacker_mv_price_index': 1.0, 'defender_adjusted_parts': [{'player': 'Ángel Recio', 'market_value': 1000000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.4374}, {'player': 'Fernando Calero', 'market_value': 2100000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.4374}], 'xg_override': 0.0772}
totalShots: 0.9531 -> 0.9083
shotOffTarget: 0.6073 -> 0.5788
onTargetScoringAttempt: 0.3458 -> 0.3295
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.26 (squad xG sum 1.2639, xG scale 0.9946, xA scale 1.0687, team xA 0.82 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.257
squad_xg_sum=1.2639
squad_xa_sum=0.7645
team_expected_assists=0.817
team_xa_to_xg_ratio=0.65
expected_assists: 0.0775 -> 0.0828
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 8 by projected rating, fifa_overall 78.0)match_squad_rank=8
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv_filled
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.0739
goal_rate=0.0899
scorer_weight=0.0845
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0795
assist_rate=0.0643
provider_weight=0.0742
-
Nicolás ValentiniD8700.040.02165%10.46.841.210FBref Prior D_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 0.9910, quality 0.439)market_value_eur=3100000
quality_factor=0.4387
boost_factor=0.991
reference_quality=0.505
history_matches=6
history_shrink=0.4545
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0020)blend_weight=0.002
history_matches=6
season_overlap_discount=1.0
per90_to_match_factor=0.9624
prior_reliability=0.0067
competition=La Liga
fouls: 0.5754 -> 0.5933
totalShots: 0.699 -> 0.7132
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Chupete', 'matchup_zone': 'Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.26 (squad xG sum 1.2639, xG scale 0.9946, xA scale 1.0687, team xA 0.82 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.257
squad_xg_sum=1.2639
squad_xa_sum=0.7645
team_expected_assists=0.817
team_xa_to_xg_ratio=0.65
-
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 73.0)match_squad_rank=9
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.0439
goal_rate=0.0
scorer_weight=0.0359
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0265
assist_rate=0.0
provider_weight=0.0215
-
Ville KoskiD8900.100.04155%00.16.838.423FBref Prior D_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 0.9959, quality 0.454)market_value_eur=4300000
quality_factor=0.4535
boost_factor=0.9959
reference_quality=0.505
history_matches=14
history_shrink=0.2632
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0331)blend_weight=0.0331
history_matches=14
season_overlap_discount=1.0
per90_to_match_factor=0.9937
prior_reliability=0.1933
competition=La Liga
fouls: 1.2765 -> 1.2343
wonTackle: 0.714 -> 0.7017
totalShots: 0.364 -> 0.352
wasFouled: 0.309 -> 0.2988
onTargetScoringAttempt: 0.2887 -> 0.2792
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=true
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Pablo Martínez', 'matchup_zone': 'LM vs CB'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.26 (squad xG sum 1.2639, xG scale 0.9946, xA scale 1.0687, team xA 0.82 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.257
squad_xg_sum=1.2639
squad_xa_sum=0.7645
team_expected_assists=0.817
team_xa_to_xg_ratio=0.65
-
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 68.0)match_squad_rank=11
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.0981
goal_rate=0.1258
scorer_weight=0.118
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0141
assist_rate=0.0
provider_weight=0.0114
-
Nahuel TenagliaD8700.040.04ok10.76.861.732FBref Prior D_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 0.9980, quality 0.440)market_value_eur=3200000
quality_factor=0.4399
boost_factor=0.998
reference_quality=0.505
history_matches=45
history_shrink=0.1
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0130)blend_weight=0.013
history_matches=45
season_overlap_discount=1.0
per90_to_match_factor=0.9624
prior_reliability=0.2
competition=La Liga
totalCross: 1.413 -> 1.403
totalShots: 0.597 -> 0.6059
interceptionWon: 1.0899 -> 1.0966
fouls: 0.8157 -> 0.8218
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Rafa Garrido', 'matchup_zone': 'Left Wingback vs Right Back — Overlapping Run'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.26 (squad xG sum 1.2639, xG scale 0.9946, xA scale 1.0687, team xA 0.82 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.257
squad_xg_sum=1.2639
squad_xa_sum=0.7645
team_expected_assists=0.817
team_xa_to_xg_ratio=0.65
-
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 77.0)match_squad_rank=7
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.0423
goal_rate=0.0696
scorer_weight=0.054
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0395
assist_rate=0.0
provider_weight=0.0322
-
Ángel PérezM8100.170.07129%21.06.961.830FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 0.9975, quality 0.457)market_value_eur=4600000
quality_factor=0.4572
boost_factor=0.9975
reference_quality=0.505
history_matches=24
history_shrink=0.1724
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0179)blend_weight=0.0179
history_matches=24
season_overlap_discount=1.0
per90_to_match_factor=0.8982
prior_reliability=0.16
competition=La Liga
totalCross: 3.9139 -> 3.8974
wasFouled: 0.8996 -> 0.8902
interceptionWon: 0.841 -> 0.8461
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Dani Lorenzo', 'matchup_zone': 'Central Mid vs Central Mid — Box-to-Box Midfield Contest', 'duel_win_rate': 0.46, 'pressing_faced': 'LOW', 'numerical_situation': '1v1', 'xg_multiplier': 1.0584, 'skill_edge': 0.0118, 'height_edge': 0.028, 'attacker_skill': 0.4635, 'defender_skill': 0.4374, 'attacker_role': 'CM', 'attacker_mv_price_index': 0.9, 'defender_adjusted_parts': [{'player': 'Dani Lorenzo', 'market_value': 2300000, 'role': 'CM', 'price_index': 0.9, 'adjusted_quality': 0.4374}], 'xg_override': 0.1692}
aerialWon: 0.2623 -> 1.1
totalShots: 1.6432 -> 1.7392
shotOffTarget: 1.0338 -> 1.0942
onTargetScoringAttempt: 0.6075 -> 0.643
goals: 0.174 -> 0.1842
expectedGoals: 0.1599 -> 0.1692
bigChanceMissed: 0.1473 -> 0.1559
expectedGoalsOnTarget: 0.1408 -> 0.149
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.26 (squad xG sum 1.2639, xG scale 0.9946, xA scale 1.0687, team xA 0.82 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.257
squad_xg_sum=1.2639
squad_xa_sum=0.7645
team_expected_assists=0.817
team_xa_to_xg_ratio=0.65
expected_assists: 0.1484 -> 0.1586
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 72.0)match_squad_rank=4
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.1549
goal_rate=0.1842
scorer_weight=0.1798
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=1
assist_probability=0.1467
assist_rate=0.1635
provider_weight=0.1707
-
Antonio SiveraG9000.00-n/a0.07.065.232FBref Prior G_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost G_service raw output over 3 target models--
market_value_boostMarket-value quality scaling (boost 0.9990, quality 0.470)market_value_eur=5600000
quality_factor=0.4695
boost_factor=0.999
reference_quality=0.505
history_matches=47
history_shrink=0.0962
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0125)blend_weight=0.0125
history_matches=47
season_overlap_discount=1.0
per90_to_match_factor=1.0
prior_reliability=0.2
competition=La Liga
saves: 2.8969 -> 2.9024
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Adrián Niño, Chupete', 'matchup_zone': 'Goalkeeper shot-stopping context', 'opponent_lambda': 0.8883}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.26 (squad xG sum 1.2639, xG scale 0.9946, xA scale 1.0687, team xA 0.82 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.257
squad_xg_sum=1.2639
squad_xa_sum=0.7645
team_expected_assists=0.817
team_xa_to_xg_ratio=0.65
shots_faced: 8.4 -> 8.3
expected_saves: 2.05 -> 2.04
high_pressure_saves: 0.71 -> 0.7
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 85.0)match_squad_rank=1
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv_filled
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.0
scorer_weight=0.0
squad_weight_total=1.3303
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0
provider_weight=0.0
squad_weight_total=0.7993
-
Team totals11.26136.8
Bench Candidates (7 modeled substitutes with empirical playing time)
PlayerPosExp MinApp ProbSubstitute Modeling Details
Grégoire SwiderskiG4.4m10.9%Market-value substitute prior
Youssef EnriquezD13.7m30.4%Market-value substitute prior
Victor ParadaD13.6m30.1%Market-value substitute prior
Carles AleñáM13.2m69.2%Market-value substitute prior
Ander GuevaraM10.4m69.2%Market-value substitute prior
Toni MartínezF25.5m33.8%Market-value substitute prior

Málaga — projected line vs season baseline (4-4-2)

PlayerPosMinProj GProj xGSeason xG/gProj ShSeason Sh/gProj RtgSeason RtgRecModel / FBref Prior
ChupeteF8800.230.32ok21.96.851.911FBref Prior F_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost F_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 1.0027, quality 0.531)market_value_eur=10700000
quality_factor=0.5306
boost_factor=1.0027
reference_quality=0.505
history_matches=9
history_shrink=0.3571
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0464)blend_weight=0.0464
history_matches=9
season_overlap_discount=1.0
per90_to_match_factor=0.9778
prior_reliability=0.2
competition=La Liga
totalCross: 0.8305 -> 0.7919
onTargetScoringAttempt: 0.8819 -> 0.8559
totalShots: 2.1644 -> 2.1851
totalOffside: 0.5683 -> 0.557
wonTackle: 0.5003 -> 0.5073
interceptionWon: 0.1269 -> 0.121
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Ville Koski, Nicolás Valentini', 'matchup_zone': 'Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle', 'duel_win_rate': 0.233, 'pressing_faced': 'LOW', 'numerical_situation': '1v2', 'xg_multiplier': 1.0488, 'skill_edge': 0.0312, 'height_edge': 0.002, 'attacker_skill': 0.5306, 'defender_skill': 0.4613, 'attacker_role': 'ST', 'attacker_mv_price_index': 1.0, 'defender_adjusted_parts': [{'player': 'Ville Koski', 'market_value': 4300000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.4712}, {'player': 'Nicolás Valentini', 'market_value': 3100000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.4515}], 'xg_override': 0.3043}
totalShots: 2.1851 -> 2.2917
shotOffTarget: 1.2825 -> 1.3451
onTargetScoringAttempt: 0.8559 -> 0.8977
bigChanceMissed: 0.3927 -> 0.4119
goals: 0.3032 -> 0.318
expectedGoals: 0.2901 -> 0.3043
expectedGoalsOnTarget: 0.2779 -> 0.2915
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.87 (squad xG sum 1.1744, xG scale 0.7400, xA scale 0.7968, team xA 0.56 = 0.65 x lambda)scoreline_reset=true
team_lambda=0.869
squad_xg_sum=1.1744
squad_xa_sum=0.7089
team_expected_assists=0.5648
team_xa_to_xg_ratio=0.65
expected_goals: 0.3043 -> 0.2252
expected_assists: 0.036 -> 0.0287
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 80.0)match_squad_rank=10
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv_filled
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.2016
goal_rate=0.318
scorer_weight=0.2339
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0283
assist_rate=0.0
provider_weight=0.023
-
Dani LorenzoM7900.040.0337%10.37.054.910FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 0.9922, quality 0.437)market_value_eur=2300000
quality_factor=0.4374
boost_factor=0.9922
reference_quality=0.505
history_matches=8
history_shrink=0.3846
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0300)blend_weight=0.03
history_matches=8
season_overlap_discount=1.0
per90_to_match_factor=0.8738
prior_reliability=0.12
competition=La Liga
fouls: 0.9028 -> 0.8757
totalShots: 0.6276 -> 0.6088
wonTackle: 1.0944 -> 1.0761
interceptionWon: 0.6236 -> 0.634
totalCross: 0.2031 -> 0.197
onTargetScoringAttempt: 0.1911 -> 0.1854
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Pablo Ibáñez', 'matchup_zone': 'Central Mid vs Defensive Mid — Pressing/Creation Duel', 'duel_win_rate': 0.428, 'pressing_faced': 'LOW', 'numerical_situation': '1v1', 'xg_multiplier': 0.9674, 'skill_edge': -0.0102, 'height_edge': -0.012, 'attacker_skill': 0.4374, 'defender_skill': 0.46, 'attacker_role': 'CM', 'attacker_mv_price_index': 0.9, 'defender_adjusted_parts': [{'player': 'Pablo Ibáñez', 'market_value': 4099999, 'role': 'CDM', 'price_index': 0.85, 'adjusted_quality': 0.46}], 'xg_override': 0.049}
aerialWon: 0.2389 -> 0.9
totalShots: 0.6219 -> 0.6017
shotOffTarget: 0.4365 -> 0.4223
onTargetScoringAttempt: 0.1854 -> 0.1794
bigChanceMissed: 0.1845 -> 0.1785
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.87 (squad xG sum 1.1744, xG scale 0.7400, xA scale 0.7968, team xA 0.56 = 0.65 x lambda)scoreline_reset=true
team_lambda=0.869
squad_xg_sum=1.1744
squad_xa_sum=0.7089
team_expected_assists=0.5648
team_xa_to_xg_ratio=0.65
expected_goals: 0.049 -> 0.0363
expected_assists: 0.0651 -> 0.0519
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 72.0)match_squad_rank=1
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0356
goal_rate=0.0509
scorer_weight=0.037
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0506
assist_rate=0.0709
provider_weight=0.0545
-
Adrián NiñoF8100.240.1389%21.46.850.47XGBoost F_service
Step-by-step (9 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost F_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 0.9899, quality 0.437)market_value_eur=1900000
quality_factor=0.4374
boost_factor=0.9899
reference_quality=0.505
history_matches=5
history_shrink=0.5
-
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Ville Koski, Nicolás Valentini', 'matchup_zone': 'Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle', 'duel_win_rate': 0.195, 'pressing_faced': 'LOW', 'numerical_situation': '1v2', 'xg_multiplier': 0.993, 'skill_edge': -0.0108, 'height_edge': 0.006, 'attacker_skill': 0.4374, 'defender_skill': 0.4613, 'attacker_role': 'ST', 'attacker_mv_price_index': 1.0, 'defender_adjusted_parts': [{'player': 'Ville Koski', 'market_value': 4300000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.4712}, {'player': 'Nicolás Valentini', 'market_value': 3100000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.4515}], 'xg_override': 0.3221}
totalShots: 2.327 -> 2.3107
shotOffTarget: 1.3309 -> 1.3216
onTargetScoringAttempt: 0.996 -> 0.989
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.87 (squad xG sum 1.1744, xG scale 0.7400, xA scale 0.7968, team xA 0.56 = 0.65 x lambda)scoreline_reset=true
team_lambda=0.869
squad_xg_sum=1.1744
squad_xa_sum=0.7089
team_expected_assists=0.5648
team_xa_to_xg_ratio=0.65
expected_goals: 0.3221 -> 0.2383
expected_assists: 0.0399 -> 0.0318
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 72.0)match_squad_rank=9
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.212
goal_rate=0.3539
scorer_weight=0.2587
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0313
assist_rate=0.0
provider_weight=0.0254
-
Pablo MartínezM8200.080.0632%20.96.961.427FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 0.9974, quality 0.439)market_value_eur=3100000
quality_factor=0.4387
boost_factor=0.9974
reference_quality=0.505
history_matches=34
history_shrink=0.1282
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0028)blend_weight=0.0028
history_matches=34
season_overlap_discount=1.0
per90_to_match_factor=0.9127
prior_reliability=0.0333
competition=La Liga
-
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Ville Koski', 'matchup_zone': 'LM vs CB', 'duel_win_rate': 0.395, 'pressing_faced': 'LOW', 'numerical_situation': '1v1', 'xg_multiplier': 0.9637, 'skill_edge': -0.0127, 'height_edge': -0.012, 'attacker_skill': 0.4429, 'defender_skill': 0.4712, 'attacker_role': 'LM', 'attacker_mv_price_index': 0.9, 'defender_adjusted_parts': [{'player': 'Ville Koski', 'market_value': 4300000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.4712}], 'xg_override': 0.1015}
aerialWon: 0.3454 -> 1.1
totalShots: 1.5947 -> 1.5368
shotOffTarget: 1.1819 -> 1.139
onTargetScoringAttempt: 0.4128 -> 0.3978
bigChanceMissed: 0.1543 -> 0.1487
goals: 0.1498 -> 0.1444
expectedGoalsOnTarget: 0.1371 -> 0.1321
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.87 (squad xG sum 1.1744, xG scale 0.7400, xA scale 0.7968, team xA 0.56 = 0.65 x lambda)scoreline_reset=true
team_lambda=0.869
squad_xg_sum=1.1744
squad_xa_sum=0.7089
team_expected_assists=0.5648
team_xa_to_xg_ratio=0.65
expected_goals: 0.1015 -> 0.0751
expected_assists: 0.1559 -> 0.1242
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 82.0)match_squad_rank=5
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv_filled
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0723
goal_rate=0.1444
scorer_weight=0.0939
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.1168
assist_rate=0.1395
provider_weight=0.1143
-
Carlos DotorM7800.040.03ok10.46.956.411FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 0.9922, quality 0.437)market_value_eur=1200000
quality_factor=0.4374
boost_factor=0.9922
reference_quality=0.505
history_matches=8
history_shrink=0.3846
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0417)blend_weight=0.0417
history_matches=8
season_overlap_discount=1.0
per90_to_match_factor=0.8649
prior_reliability=0.1667
competition=La Liga
fouls: 1.208 -> 1.1721
wasFouled: 0.7497 -> 0.7185
totalCross: 0.0972 -> 0.122
wonTackle: 1.5 -> 1.524
totalShots: 0.6517 -> 0.6386
interceptionWon: 0.9623 -> 0.951
onTargetScoringAttempt: 0.1793 -> 0.1859
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Pablo Ibáñez', 'matchup_zone': 'Central Mid vs Defensive Mid — Pressing/Creation Duel', 'duel_win_rate': 0.444, 'pressing_faced': 'LOW', 'numerical_situation': '1v1', 'xg_multiplier': 0.9909, 'skill_edge': -0.0102, 'height_edge': 0.004, 'attacker_skill': 0.4374, 'defender_skill': 0.46, 'attacker_role': 'CM', 'attacker_mv_price_index': 0.9, 'defender_adjusted_parts': [{'player': 'Pablo Ibáñez', 'market_value': 4099999, 'role': 'CDM', 'price_index': 0.85, 'adjusted_quality': 0.46}], 'xg_override': 0.0507}
aerialWon: 0.2691 -> 1.1
totalShots: 0.6583 -> 0.6523
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.87 (squad xG sum 1.1744, xG scale 0.7400, xA scale 0.7968, team xA 0.56 = 0.65 x lambda)scoreline_reset=true
team_lambda=0.869
squad_xg_sum=1.1744
squad_xa_sum=0.7089
team_expected_assists=0.5648
team_xa_to_xg_ratio=0.65
expected_goals: 0.0507 -> 0.0375
expected_assists: 0.0515 -> 0.041
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 85.0)match_squad_rank=4
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv_filled
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0368
goal_rate=0.0544
scorer_weight=0.0389
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0402
assist_rate=0.0666
provider_weight=0.0471
-
David LarrubiaF8400.070.07ok21.46.953.119FBref Prior F_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost F_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 0.9971, quality 0.478)market_value_eur=6300000
quality_factor=0.4781
boost_factor=0.9971
reference_quality=0.505
history_matches=9
history_shrink=0.3571
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0371)blend_weight=0.0371
history_matches=9
season_overlap_discount=1.0
per90_to_match_factor=0.9374
prior_reliability=0.16
competition=La Liga
totalCross: 1.4658 -> 1.4114
totalShots: 1.6074 -> 1.6497
wonTackle: 1.813 -> 1.8472
fouls: 0.8729 -> 0.855
totalOffside: 0.0776 -> 0.0892
onTargetScoringAttempt: 0.4808 -> 0.4922
wasFouled: 1.0488 -> 1.0389
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Ville Koski, Nicolás Valentini', 'matchup_zone': 'Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle', 'duel_win_rate': 0.18, 'pressing_faced': 'LOW', 'numerical_situation': '1v2', 'xg_multiplier': 0.9376, 'skill_edge': 0.0075, 'height_edge': -0.05, 'attacker_skill': 0.4781, 'defender_skill': 0.4613, 'attacker_role': 'ST', 'attacker_mv_price_index': 1.0, 'defender_adjusted_parts': [{'player': 'Ville Koski', 'market_value': 4300000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.4712}, {'player': 'Nicolás Valentini', 'market_value': 3100000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.4515}], 'xg_override': 0.0947}
totalShots: 1.6497 -> 1.5468
shotOffTarget: 1.1265 -> 1.0562
onTargetScoringAttempt: 0.4922 -> 0.4615
goals: 0.1235 -> 0.1158
expectedGoals: 0.101 -> 0.0947
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.87 (squad xG sum 1.1744, xG scale 0.7400, xA scale 0.7968, team xA 0.56 = 0.65 x lambda)scoreline_reset=true
team_lambda=0.869
squad_xg_sum=1.1744
squad_xa_sum=0.7089
team_expected_assists=0.5648
team_xa_to_xg_ratio=0.65
expected_goals: 0.0947 -> 0.0701
expected_assists: 0.1569 -> 0.125
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 81.0)match_squad_rank=2
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv_filled
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0677
goal_rate=0.1158
scorer_weight=0.0803
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.1175
assist_rate=0.0
provider_weight=0.1
-
Adam AznouD9000.080.02329%10.26.711.111XGBoost D_service
Step-by-step (9 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 0.9940, quality 0.477)market_value_eur=6200000
quality_factor=0.4769
boost_factor=0.994
reference_quality=0.505
history_matches=2
history_shrink=0.7143
-
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Mariano Díaz', 'matchup_zone': 'Shape fallback'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.87 (squad xG sum 1.1744, xG scale 0.7400, xA scale 0.7968, team xA 0.56 = 0.65 x lambda)scoreline_reset=true
team_lambda=0.869
squad_xg_sum=1.1744
squad_xa_sum=0.7089
team_expected_assists=0.5648
team_xa_to_xg_ratio=0.65
expected_goals: 0.104 -> 0.077
expected_assists: 0.0945 -> 0.0753
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 15 by projected rating, fifa_overall 67.0)match_squad_rank=15
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0741
goal_rate=0.0
scorer_weight=0.0616
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0725
assist_rate=0.0
provider_weight=0.0602
-
Ángel RecioD9000.020.01ok10.66.954.711XGBoost D_service
Step-by-step (9 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 0.9928, quality 0.437)market_value_eur=1000000
quality_factor=0.4374
boost_factor=0.9928
reference_quality=0.505
history_matches=9
history_shrink=0.3571
-
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Lucas Boyé', 'matchup_zone': 'Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.87 (squad xG sum 1.1744, xG scale 0.7400, xA scale 0.7968, team xA 0.56 = 0.65 x lambda)scoreline_reset=true
team_lambda=0.869
squad_xg_sum=1.1744
squad_xa_sum=0.7089
team_expected_assists=0.5648
team_xa_to_xg_ratio=0.65
expected_goals: 0.0212 -> 0.0157
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 65.0)match_squad_rank=6
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0156
goal_rate=0.0
scorer_weight=0.0126
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0067
assist_rate=0.0
provider_weight=0.0057
-
Fernando CaleroD8500.020.03ok00.36.854.521XGBoost D_service
Step-by-step (9 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 0.9971, quality 0.437)market_value_eur=2100000
quality_factor=0.4374
boost_factor=0.9971
reference_quality=0.505
history_matches=30
history_shrink=0.1429
-
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Lucas Boyé', 'matchup_zone': 'Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.87 (squad xG sum 1.1744, xG scale 0.7400, xA scale 0.7968, team xA 0.56 = 0.65 x lambda)scoreline_reset=true
team_lambda=0.869
squad_xg_sum=1.1744
squad_xa_sum=0.7089
team_expected_assists=0.5648
team_xa_to_xg_ratio=0.65
expected_goals: 0.0329 -> 0.0243
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 11 by projected rating, fifa_overall 81.0)match_squad_rank=11
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv_filled
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.024
goal_rate=0.0
scorer_weight=0.0194
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0093
assist_rate=0.0
provider_weight=0.0075
-
Rafa GarridoD8800.000.0045%00.16.854.211XGBoost D_service
Step-by-step (9 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 0.9928, quality 0.437)market_value_eur=1400000
quality_factor=0.4374
boost_factor=0.9928
reference_quality=0.505
history_matches=9
history_shrink=0.3571
-
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Nahuel Tenaglia', 'matchup_zone': 'Left Wingback vs Right Back — Overlapping Run'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.87 (squad xG sum 1.1744, xG scale 0.7400, xA scale 0.7968, team xA 0.56 = 0.65 x lambda)scoreline_reset=true
team_lambda=0.869
squad_xg_sum=1.1744
squad_xa_sum=0.7089
team_expected_assists=0.5648
team_xa_to_xg_ratio=0.65
expected_assists: 0.0257 -> 0.0205
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 79.0)match_squad_rank=12
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv_filled
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0015
goal_rate=0.0
scorer_weight=0.0014
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0203
assist_rate=0.174
provider_weight=0.0256
-
Alfonso HerreroG9000.00-n/a0.06.958.011FBref Prior G_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost G_service raw output over 3 target models--
market_value_boostMarket-value quality scaling (boost 0.9928, quality 0.437)market_value_eur=420000
quality_factor=0.4374
boost_factor=0.9928
reference_quality=0.505
history_matches=9
history_shrink=0.3571
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0464)blend_weight=0.0464
history_matches=9
season_overlap_discount=1.0
per90_to_match_factor=1.0
prior_reliability=0.2
competition=La Liga
saves: 2.8729 -> 2.9252
wasFouled: 0.2412 -> 0.23
fouls: 0.119 -> 0.1135
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Lucas Boyé, Mariano Díaz', 'matchup_zone': 'Goalkeeper shot-stopping context', 'opponent_lambda': 1.2308}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 0.87 (squad xG sum 1.1744, xG scale 0.7400, xA scale 0.7968, team xA 0.56 = 0.65 x lambda)scoreline_reset=true
team_lambda=0.869
squad_xg_sum=1.1744
squad_xa_sum=0.7089
team_expected_assists=0.5648
team_xa_to_xg_ratio=0.65
shots_faced: 11.7 -> 11.9
expected_saves: 2.86 -> 2.91
high_pressure_saves: 0.98 -> 1.01
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 75.0)match_squad_rank=3
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0
scorer_weight=0.0
squad_weight_total=0.91
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0
provider_weight=0.0
squad_weight_total=0.5067
-
Team totals00.87146.8
Bench Candidates (7 modeled substitutes with empirical playing time)
PlayerPosExp MinApp ProbSubstitute Modeling Details
Carlos LopezG4.4m10.9%Market-value substitute prior
Jose SalinasD13.6m29.9%Market-value substitute prior
Diego MurilloD13.6m29.9%Market-value substitute prior
Jens-Lys CajusteM22.1m50.7%Market-value substitute prior
Izan MerinoM22.1m50.3%Market-value substitute prior
Joaquín MuñozF25.3m55.9%Market-value substitute prior
Antagonist / tactical summary
Midfield is evenly contested — Antonio Blanco vs Pablo Martínez will be the pivotal duel. Total antagonist xG — Home: 0.97, Away: 0.92. Home danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle.
Midfield — possession 50.3% / 49.7%, dominance ratio 0.53, key duel: Antonio Blanco vs Pablo Martínez
Nahuel Tenaglia xG 0.05Ángel Pérez xG 0.17Antonio Blanco xG 0.04Pablo Martínez xG 0.10Dani Lorenzo xG 0.05Carlos Dotor xG 0.05

Summary

Antagonist matchup analysis for Alavés vs Málaga. Most likely scoreline: 1-0. Lambdas derived from 7 home and 6 away individual player duels. Head-to-head: Alavés 5W-3D-2L vs Málaga over 10 meetings.
Tactical parity between 5-3-2 and 4-4-2. Match outcome driven primarily by individual player quality. Midfield is evenly contested — Antonio Blanco vs Pablo Martínez will be the pivotal duel. Total antagonist xG — Home: 0.97, Away: 0.92. Home danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle. Away danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle.

Ipswich vs Forest

Premier League · 20261023 · 4-2-3-1 vs 3-4-2-1
Predicted 0-1Winner: ForestWinning H 1-0 (7.0%)Winning A 0-1 (9.4%)Confidence 0.72λ home/away 1.22 / 1.62Most-likely P 9.4%
Actual vs predicted: result not available yet (upcoming fixture).
XGBoost Reasoning & FBref Dataset Tracing
Antagonist + XGBoost match analysis for Ipswich vs Forest. Player statistics regressed using position-specific XGBoost models (G, D, M, F) with 2026-2027 FBref priors. Micro-duels resolved across 4-2-3-1 vs 3-4-2-1 (duel lambdas: Home 1.262, Away 1.566). Final calibrated Poisson lambdas: Home 1.217, Away 1.622 (most likely score 0-1).
Home Starters 11/11 XGBoost (9 FBref) Away Starters 11/11 XGBoost (9 FBref) Bench Modeled H: 7 / A: 7 Duel λ (H/A) 1.26 / 1.57 Final λ (H/A) 1.22 / 1.62
FBref Team Priors: Ipswich Town (Gls/90: 2.0, GA/90: 2.0 → E[λ]: 1.379) vs Nottingham Forest (Gls/90: 1.0, GA/90: 1.0 → E[λ]: 1.379) | Blend Weight: 0.192
Modeling Pipeline Stages (5 layers)
  1. 1. XGBoost player regressions for volume & event rates with market-value quality scaling
  2. 2. Multi-source prior blending (FBref 2026-2027 tables + Sofascore season history)
  3. 3. Antagonist formation duel matrix resolving 1v1 and zonal matchups
  4. 4. Team-level prior calibration (FBref possession and attack/defense efficiencies)
  5. 5. Bivariate Poisson matrix with Dixon-Coles low-score correction

Standing & form context

MetricIpswichForest
League position10.0019.00
Points per game1.321.01
Attack index1.090.77
Defense (concede) index0.911.24
Form multiplier1.020.98
Standing λ multiplier1.000.98

Lambda decomposition (how the goal rates were built)

StageIpswich λForest λ
FBref Squad Prior E[λ] (weight 0.192)1.3791.379
Pre-competitive-floor1.2171.622
Pre-calibration (Micro-duels)1.2621.566
Final λ1.2171.622
competition calibration scale 1.0competition observed total goals 0.0quality gap applied Truemismatch score pressure applied Falsecompetitive underdog floor applied Falsestage discount 1.0

Scoreline distribution & markets

Top 5 scorelinesP
1-111.6%
0-19.4%
1-29.4%
0-27.7%
1-07.0%
Home win28.6%
Draw24.7%
Away win46.7%
Over 2.554.0%
BTTS yes56.6%
Pregame fair line — favorite Forest (46.7%), fair total 2.84, fair spread -0.41

Projected players vs season baseline

Proj = projected for this match · Season = this season's per-game average from match data · deviation badge compares projected xG to the player's season xG/game.

Ipswich — projected line vs season baseline (4-2-3-1)

PlayerPosMinProj GProj xGSeason xG/gProj ShSeason Sh/gProj RtgSeason RtgRecModel / FBref Prior
Christian WaltonG9000.00-n/a0.06.916.712FBref Prior G_service
Step-by-step (9 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost G_service raw output over 3 target models--
market_value_boostMarket-value quality scaling (boost 0.9873, quality 0.437)market_value_eur=2600000
quality_factor=0.4374
boost_factor=0.9873
reference_quality=0.505
history_matches=3
history_shrink=0.625
-
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Liam Delap, Dan Ndoye', 'matchup_zone': 'Goalkeeper shot-stopping context', 'opponent_lambda': 1.5662}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.22 (squad xG sum 1.2552, xG scale 0.9696, xA scale 1.1308, team xA 0.79 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.217
squad_xg_sum=1.2552
squad_xa_sum=0.6996
team_expected_assists=0.7911
team_xa_to_xg_ratio=0.65
shots_faced: 14.9 -> 15.4
expected_saves: 3.65 -> 3.77
high_pressure_saves: 1.25 -> 1.3
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 73.0)match_squad_rank=3
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0
scorer_weight=0.0
squad_weight_total=1.3594
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0
provider_weight=0.0
squad_weight_total=0.8906
-
Abdoul OuattaraM8800.050.01379%10.36.849.318FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 1.0113, quality 0.595)market_value_eur=16500000
quality_factor=0.5953
boost_factor=1.0113
reference_quality=0.505
history_matches=7
history_shrink=0.4167
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0054)blend_weight=0.0054
history_matches=7
season_overlap_discount=1.0
per90_to_match_factor=0.9822
prior_reliability=0.02
competition=Premier League
totalCross: 2.1818 -> 2.17
interceptionWon: 1.6383 -> 1.6294
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=true
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Morgan Gibbs-White', 'matchup_zone': 'CAM vs CM', 'duel_win_rate': 0.329, 'pressing_faced': 'ULTRA_HIGH', 'numerical_situation': '1v1', 'xg_multiplier': 0.867, 'skill_edge': -0.1265, 'height_edge': 0.036, 'attacker_skill': 0.6044, 'defender_skill': 0.8855, 'attacker_role': 'CAM', 'attacker_mv_price_index': 0.95, 'defender_adjusted_parts': [{'player': 'Morgan Gibbs-White', 'market_value': 76000000, 'role': 'CM', 'price_index': 0.9, 'adjusted_quality': 0.8855}], 'xg_override': 0.0522}
aerialWon: 0.7272 -> 1.1
totalShots: 0.6988 -> 0.6059
shotOffTarget: 0.5401 -> 0.4683
onTargetScoringAttempt: 0.1587 -> 0.1376
expectedGoalsOnTarget: 0.144 -> 0.1248
expectedGoals: 0.0602 -> 0.0522
goals: 0.0535 -> 0.0464
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.22 (squad xG sum 1.2552, xG scale 0.9696, xA scale 1.1308, team xA 0.79 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.217
squad_xg_sum=1.2552
squad_xa_sum=0.6996
team_expected_assists=0.7911
team_xa_to_xg_ratio=0.65
expected_assists: 0.072 -> 0.0814
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 8 by projected rating, fifa_overall 73.0)match_squad_rank=8
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0493
goal_rate=0.0464
scorer_weight=0.0477
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0782
assist_rate=0.1012
provider_weight=0.1009
-
EmersonnF7200.250.21ok21.26.739.712FBref Prior F_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost F_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 1.0204, quality 0.669)market_value_eur=24000000
quality_factor=0.6685
boost_factor=1.0204
reference_quality=0.505
history_matches=7
history_shrink=0.4167
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0217)blend_weight=0.0217
history_matches=7
season_overlap_discount=1.0
per90_to_match_factor=0.7983
prior_reliability=0.08
competition=Premier League
totalCross: 0.085 -> 0.0976
onTargetScoringAttempt: 0.828 -> 0.8384
totalOffside: 0.4605 -> 0.4505
wasFouled: 1.775 -> 1.7654
goals: 0.3216 -> 0.329
wonTackle: 0.3653 -> 0.3718
totalShots: 2.2272 -> 2.2213
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Murillo, Ousmane Diomande', 'matchup_zone': 'Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle', 'duel_win_rate': 0.18, 'pressing_faced': 'ULTRA_HIGH', 'numerical_situation': '1v2', 'xg_multiplier': 0.8728, 'skill_edge': -0.0845, 'height_edge': -0.002, 'attacker_skill': 0.6685, 'defender_skill': 0.8564, 'attacker_role': 'ST', 'attacker_mv_price_index': 1.0, 'defender_adjusted_parts': [{'player': 'Murillo', 'market_value': 49000000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.8633}, {'player': 'Ousmane Diomande', 'market_value': 44000000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.8495}], 'xg_override': 0.2534}
totalShots: 2.2376 -> 1.953
shotOffTarget: 1.3992 -> 1.2212
onTargetScoringAttempt: 0.8384 -> 0.7318
bigChanceMissed: 0.471 -> 0.4111
goals: 0.329 -> 0.2872
expectedGoals: 0.2903 -> 0.2534
expectedGoalsOnTarget: 0.2101 -> 0.1834
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.22 (squad xG sum 1.2552, xG scale 0.9696, xA scale 1.1308, team xA 0.79 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.217
squad_xg_sum=1.2552
squad_xa_sum=0.6996
team_expected_assists=0.7911
team_xa_to_xg_ratio=0.65
expected_goals: 0.2534 -> 0.2458
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 13 by projected rating, fifa_overall 74.0)match_squad_rank=13
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.2179
goal_rate=0.2872
scorer_weight=0.2732
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0376
assist_rate=0.1354
provider_weight=0.0479
-
Daizen MaedaF7600.140.11ok10.46.743.416FBref Prior F_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost F_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 1.0059, quality 0.552)market_value_eur=12600000
quality_factor=0.5525
boost_factor=1.0059
reference_quality=0.505
history_matches=7
history_shrink=0.4167
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0307)blend_weight=0.0307
history_matches=7
season_overlap_discount=1.0
per90_to_match_factor=0.8406
prior_reliability=0.1133
competition=Premier League
wonTackle: 1.0178 -> 1.0473
totalShots: 1.3966 -> 1.3844
fouls: 1.1475 -> 1.1578
goals: 0.2468 -> 0.2392
totalCross: 1.2115 -> 1.2047
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Murillo, Ousmane Diomande', 'matchup_zone': 'Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle', 'duel_win_rate': 0.18, 'pressing_faced': 'ULTRA_HIGH', 'numerical_situation': '1v2', 'xg_multiplier': 0.7196, 'skill_edge': -0.1367, 'height_edge': -0.054, 'attacker_skill': 0.5525, 'defender_skill': 0.8564, 'attacker_role': 'ST', 'attacker_mv_price_index': 1.0, 'defender_adjusted_parts': [{'player': 'Murillo', 'market_value': 49000000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.8633}, {'player': 'Ousmane Diomande', 'market_value': 44000000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.8495}], 'xg_override': 0.1468}
totalShots: 1.3952 -> 1.004
shotOffTarget: 0.8452 -> 0.6082
onTargetScoringAttempt: 0.55 -> 0.3958
expectedGoalsOnTarget: 0.2687 -> 0.1934
goals: 0.2392 -> 0.1721
expectedGoals: 0.204 -> 0.1468
bigChanceMissed: 0.1758 -> 0.1265
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.22 (squad xG sum 1.2552, xG scale 0.9696, xA scale 1.1308, team xA 0.79 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.217
squad_xg_sum=1.2552
squad_xa_sum=0.6996
team_expected_assists=0.7911
team_xa_to_xg_ratio=0.65
-
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 16 by projected rating, fifa_overall 78.0)match_squad_rank=16
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.1326
goal_rate=0.1721
scorer_weight=0.1606
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0382
assist_rate=0.0
provider_weight=0.0312
-
Julio EncisoM8100.140.1040%21.56.936.813FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 1.0246, quality 0.702)market_value_eur=28000000
quality_factor=0.7022
boost_factor=1.0246
reference_quality=0.505
history_matches=7
history_shrink=0.4167
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0325)blend_weight=0.0325
history_matches=7
season_overlap_discount=1.0
per90_to_match_factor=0.9007
prior_reliability=0.12
competition=Premier League
goalAssist: 0.1252 -> 0.1537
totalCross: 0.7836 -> 0.7581
totalShots: 2.3948 -> 2.4159
wonTackle: 0.4119 -> 0.431
interceptionWon: 0.5476 -> 0.5298
wasFouled: 1.4673 -> 1.4847
onTargetScoringAttempt: 0.7637 -> 0.7553
goals: 0.2266 -> 0.2192
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Murillo', 'matchup_zone': 'LW vs CB', 'duel_win_rate': 0.308, 'pressing_faced': 'ULTRA_HIGH', 'numerical_situation': '1v1', 'xg_multiplier': 0.8346, 'skill_edge': -0.0725, 'height_edge': -0.04, 'attacker_skill': 0.7022, 'defender_skill': 0.8633, 'attacker_role': 'LW', 'attacker_mv_price_index': 1.0, 'defender_adjusted_parts': [{'player': 'Murillo', 'market_value': 49000000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.8633}], 'xg_override': 0.1486}
aerialWon: 0.1389 -> 0.9
totalShots: 2.4159 -> 2.0163
shotOffTarget: 1.6311 -> 1.3613
onTargetScoringAttempt: 0.7553 -> 0.6304
goals: 0.2192 -> 0.1829
expectedGoalsOnTarget: 0.1822 -> 0.1521
expectedGoals: 0.1781 -> 0.1486
bigChanceMissed: 0.1134 -> 0.0946
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.22 (squad xG sum 1.2552, xG scale 0.9696, xA scale 1.1308, team xA 0.79 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.217
squad_xg_sum=1.2552
squad_xa_sum=0.6996
team_expected_assists=0.7911
team_xa_to_xg_ratio=0.65
expected_assists: 0.1255 -> 0.1418
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 78.0)match_squad_rank=5
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.1342
goal_rate=0.1829
scorer_weight=0.169
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.1322
assist_rate=0.1537
provider_weight=0.1646
-
Abdul Fatawu IssahakuF7300.090.02444%10.46.935.621FBref Prior F_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost F_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 1.0223, quality 0.669)market_value_eur=24000000
quality_factor=0.6685
boost_factor=1.0223
reference_quality=0.505
history_matches=6
history_shrink=0.4545
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0315)blend_weight=0.0315
history_matches=6
season_overlap_discount=1.0
per90_to_match_factor=0.8151
prior_reliability=0.1067
competition=Premier League
totalShots: 1.2315 -> 1.1927
fouls: 2.2352 -> 2.1969
interceptionWon: 1.1286 -> 1.1091
wonTackle: 1.0897 -> 1.1035
totalCross: 5.4782 -> 5.4661
onTargetScoringAttempt: 0.3755 -> 0.3637
goalAssist: 0.1693 -> 0.18
totalOffside: 0.1693 -> 0.18
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Murillo, Ousmane Diomande', 'matchup_zone': 'Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle', 'duel_win_rate': 0.18, 'pressing_faced': 'ULTRA_HIGH', 'numerical_situation': '1v2', 'xg_multiplier': 0.8375, 'skill_edge': -0.0845, 'height_edge': -0.026, 'attacker_skill': 0.6685, 'defender_skill': 0.8564, 'attacker_role': 'ST', 'attacker_mv_price_index': 1.0, 'defender_adjusted_parts': [{'player': 'Murillo', 'market_value': 49000000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.8633}, {'player': 'Ousmane Diomande', 'market_value': 44000000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.8495}], 'xg_override': 0.092}
totalShots: 1.2196 -> 1.0214
shotOffTarget: 0.8559 -> 0.7168
onTargetScoringAttempt: 0.3637 -> 0.3046
goals: 0.1109 -> 0.0929
expectedGoals: 0.1099 -> 0.092
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.22 (squad xG sum 1.2552, xG scale 0.9696, xA scale 1.1308, team xA 0.79 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.217
squad_xg_sum=1.2552
squad_xa_sum=0.6996
team_expected_assists=0.7911
team_xa_to_xg_ratio=0.65
expected_assists: 0.1209 -> 0.1367
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 82.0)match_squad_rank=7
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv_filled
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0853
goal_rate=0.0929
scorer_weight=0.0898
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.1278
assist_rate=0.18
provider_weight=0.1709
-
Exequiel PalaciosM8600.03-n/a10.07.038.011FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 1.0247, quality 0.686)market_value_eur=26000000
quality_factor=0.6858
boost_factor=1.0247
reference_quality=0.505
history_matches=6
history_shrink=0.4545
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0059)blend_weight=0.0059
history_matches=6
season_overlap_discount=1.0
per90_to_match_factor=0.9502
prior_reliability=0.02
competition=Premier League
interceptionWon: 1.5437 -> 1.572
wasFouled: 1.0632 -> 1.0756
fouls: 1.257 -> 1.2683
wonTackle: 1.8654 -> 1.8731
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Liam Delap, Dan Ndoye, Morgan Gibbs-White', 'matchup_zone': 'Shadow Striker vs CDM + CB — Zone 14 Battle'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.22 (squad xG sum 1.2552, xG scale 0.9696, xA scale 1.1308, team xA 0.79 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.217
squad_xg_sum=1.2552
squad_xa_sum=0.6996
team_expected_assists=0.7911
team_xa_to_xg_ratio=0.65
expected_assists: 0.055 -> 0.0622
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 2 by projected rating, fifa_overall 83.0)match_squad_rank=2
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0287
goal_rate=0.0396
scorer_weight=0.0326
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0603
assist_rate=0.0519
provider_weight=0.0604
-
Florentino LuísM7600.030.00524%10.26.845.729XGBoost M_service
Step-by-step (9 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 1.0030, quality 0.585)market_value_eur=15500000
quality_factor=0.5846
boost_factor=1.003
reference_quality=0.505
history_matches=35
history_shrink=0.125
-
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Xaver Schlager', 'matchup_zone': 'Midfield lane'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.22 (squad xG sum 1.2552, xG scale 0.9696, xA scale 1.1308, team xA 0.79 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.217
squad_xg_sum=1.2552
squad_xa_sum=0.6996
team_expected_assists=0.7911
team_xa_to_xg_ratio=0.65
expected_assists: 0.0502 -> 0.0568
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 80.0)match_squad_rank=9
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv_filled
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0282
goal_rate=0.0437
scorer_weight=0.0337
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0552
assist_rate=0.0493
provider_weight=0.0563
-
Leif DavisD9000.210.1367%10.56.735.813FBref Prior D_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 1.0226, quality 0.686)market_value_eur=26000000
quality_factor=0.6858
boost_factor=1.0226
reference_quality=0.505
history_matches=7
history_shrink=0.4167
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0361)blend_weight=0.0361
history_matches=7
season_overlap_discount=1.0
per90_to_match_factor=1.0
prior_reliability=0.1333
competition=Premier League
totalCross: 3.0971 -> 3.0394
wonTackle: 0.8728 -> 0.8413
fouls: 0.8065 -> 0.7774
onTargetScoringAttempt: 0.339 -> 0.3629
totalShots: 0.7203 -> 0.7304
goals: 0.2388 -> 0.2482
interceptionWon: 0.8221 -> 0.8285
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Liam Delap', 'matchup_zone': 'Shape fallback'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.22 (squad xG sum 1.2552, xG scale 0.9696, xA scale 1.1308, team xA 0.79 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.217
squad_xg_sum=1.2552
squad_xa_sum=0.6996
team_expected_assists=0.7911
team_xa_to_xg_ratio=0.65
expected_goals: 0.2176 -> 0.211
expected_assists: 0.0831 -> 0.094
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 12 by projected rating, fifa_overall 75.0)match_squad_rank=12
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.1902
goal_rate=0.2482
scorer_weight=0.2351
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0897
assist_rate=0.1337
provider_weight=0.1175
-
Issa DiopD9000.050.0370%00.16.934.929FBref Prior D_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 1.0013, quality 0.526)market_value_eur=10300000
quality_factor=0.526
boost_factor=1.0013
reference_quality=0.505
history_matches=20
history_shrink=0.2
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0173)blend_weight=0.0173
history_matches=20
season_overlap_discount=1.0
per90_to_match_factor=0.9972
prior_reliability=0.1333
competition=Premier League
fouls: 0.6096 -> 0.625
totalShots: 0.4189 -> 0.4116
interceptionWon: 1.1139 -> 1.1205
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Liam Delap', 'matchup_zone': 'Shadow Striker vs CDM + CB — Zone 14 Battle'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.22 (squad xG sum 1.2552, xG scale 0.9696, xA scale 1.1308, team xA 0.79 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.217
squad_xg_sum=1.2552
squad_xa_sum=0.6996
team_expected_assists=0.7911
team_xa_to_xg_ratio=0.65
-
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 75.0)match_squad_rank=4
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.0514
goal_rate=0.0519
scorer_weight=0.0515
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0215
assist_rate=0.0
provider_weight=0.0174
-
Dara O'SheaD9000.050.0396%10.26.939.312FBref Prior D_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 1.0170, quality 0.641)market_value_eur=21000000
quality_factor=0.6408
boost_factor=1.017
reference_quality=0.505
history_matches=7
history_shrink=0.4167
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0361)blend_weight=0.0361
history_matches=7
season_overlap_discount=1.0
per90_to_match_factor=1.0
prior_reliability=0.1333
competition=Premier League
interceptionWon: 1.2268 -> 1.2006
wonTackle: 1.1461 -> 1.1228
fouls: 0.9051 -> 0.9266
wasFouled: 0.7019 -> 0.7127
goals: 0.1909 -> 0.184
onTargetScoringAttempt: 0.1909 -> 0.184
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'James McAtee', 'matchup_zone': 'Right Wingback vs Left Back — Overlapping Run'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 0 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=0
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.22 (squad xG sum 1.2552, xG scale 0.9696, xA scale 1.1308, team xA 0.79 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.217
squad_xg_sum=1.2552
squad_xa_sum=0.6996
team_expected_assists=0.7911
team_xa_to_xg_ratio=0.65
-
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 75.0)match_squad_rank=6
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation skipped: 0 projected goalsteam_goals=0
allocation_applied=false
goals_allocated=0
goal_probability=0.049
goal_rate=0.184
scorer_weight=0.0628
-
integer_assist_projectionTeam scoreline allocation skipped: 0 projected assistsallocation_applied=false
team_assists=0
assists_allocated=0
assist_probability=0.0396
assist_rate=0.0
provider_weight=0.0323
-
Team totals01.22146.8
Bench Candidates (7 modeled substitutes with empirical playing time)
PlayerPosExp MinApp ProbSubstitute Modeling Details
Kjell ScherpenG4.8m14.0%Market-value substitute prior
Jacob GreavesD14.2m23.0%Market-value substitute prior
Cédric KipréD13.6m29.9%Market-value substitute prior
Marcelino NúñezM22.5m31.8%Market-value substitute prior
Azor MatusiwaM22.4m52.0%Market-value substitute prior
Jack ClarkeF22.7m73.5%Market-value substitute prior

Forest — projected line vs season baseline (3-4-2-1)

PlayerPosMinProj GProj xGSeason xG/gProj ShSeason Sh/gProj RtgSeason RtgRecModel / FBref Prior
Liam DelapF8000.380.18112%31.36.852.430FBref Prior F_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost F_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 1.0100, quality 0.764)market_value_eur=37000000
quality_factor=0.7641
boost_factor=1.01
reference_quality=0.505
history_matches=34
history_shrink=0.1282
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0017)blend_weight=0.0017
history_matches=34
season_overlap_discount=1.0
per90_to_match_factor=0.8927
prior_reliability=0.02
competition=Premier League
-
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Exequiel Palacios, Issa Diop', 'matchup_zone': 'Shadow Striker vs CDM + CB — Zone 14 Battle', 'duel_win_rate': 0.326, 'pressing_faced': 'LOW', 'numerical_situation': '1v2', 'xg_multiplier': 1.0827, 'skill_edge': 0.0542, 'height_edge': 0.002, 'attacker_skill': 0.7641, 'defender_skill': 0.6436, 'attacker_role': 'SS', 'attacker_mv_price_index': 1.0, 'defender_adjusted_parts': [{'player': 'Exequiel Palacios', 'market_value': 26000000, 'role': 'CDM', 'price_index': 0.85, 'adjusted_quality': 0.7219}, {'player': 'Issa Diop', 'market_value': 10300000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.5652}], 'xg_override': 0.3611}
totalShots: 2.3423 -> 2.536
shotOffTarget: 1.4431 -> 1.5624
onTargetScoringAttempt: 0.8962 -> 0.9703
bigChanceMissed: 0.514 -> 0.5565
expectedGoals: 0.3335 -> 0.3611
goals: 0.2991 -> 0.3238
expectedGoalsOnTarget: 0.1415 -> 0.1532
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.62 (squad xG sum 1.5378, xG scale 1.0548, xA scale 1.1941, team xA 1.05 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.622
squad_xg_sum=1.5378
squad_xa_sum=0.8829
team_expected_assists=1.0543
team_xa_to_xg_ratio=0.65
expected_goals: 0.3611 -> 0.3807
expected_assists: 0.0629 -> 0.0751
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 7 by projected rating, fifa_overall 77.0)match_squad_rank=7
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.3166
goal_rate=0.3238
scorer_weight=0.3462
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0723
assist_rate=0.0
provider_weight=0.0601
-
Morgan Gibbs-WhiteM8900.270.27ok31.97.163.435FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 1.0117, quality 0.878)market_value_eur=76000000
quality_factor=0.8781
boost_factor=1.0117
reference_quality=0.505
history_matches=43
history_shrink=0.1042
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0090)blend_weight=0.009
history_matches=43
season_overlap_discount=1.0
per90_to_match_factor=0.9884
prior_reliability=0.1333
competition=Premier League
totalCross: 3.8286 -> 3.8119
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Exequiel Palacios', 'matchup_zone': 'Central Mid vs Defensive Mid — Pressing/Creation Duel', 'duel_win_rate': 0.5, 'pressing_faced': 'MEDIUM', 'numerical_situation': '1v1', 'xg_multiplier': 1.073, 'skill_edge': 0.0736, 'height_edge': -0.024, 'attacker_skill': 0.8855, 'defender_skill': 0.7219, 'attacker_role': 'CM', 'attacker_mv_price_index': 0.9, 'defender_adjusted_parts': [{'player': 'Exequiel Palacios', 'market_value': 26000000, 'role': 'CDM', 'price_index': 0.85, 'adjusted_quality': 0.7219}], 'xg_override': 0.2595}
aerialWon: 0.5532 -> 0.8
totalShots: 2.2767 -> 2.4429
shotOffTarget: 1.4838 -> 1.5921
onTargetScoringAttempt: 0.7929 -> 0.8508
bigChanceMissed: 0.3484 -> 0.3738
goals: 0.2969 -> 0.3186
expectedGoalsOnTarget: 0.2542 -> 0.2728
expectedGoals: 0.2418 -> 0.2595
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.62 (squad xG sum 1.5378, xG scale 1.0548, xA scale 1.1941, team xA 1.05 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.622
squad_xg_sum=1.5378
squad_xa_sum=0.8829
team_expected_assists=1.0543
team_xa_to_xg_ratio=0.65
expected_goals: 0.2595 -> 0.2737
expected_assists: 0.1882 -> 0.2246
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 1 by projected rating, fifa_overall 83.0)match_squad_rank=1
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.2394
goal_rate=0.3186
scorer_weight=0.326
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=1
assist_probability=0.2012
assist_rate=0.1809
provider_weight=0.2177
-
Dan NdoyeF6910.340.07361%20.76.831.632FBref Prior F_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost F_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 1.0100, quality 0.746)market_value_eur=34000000
quality_factor=0.7455
boost_factor=1.01
reference_quality=0.505
history_matches=31
history_shrink=0.1389
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0084)blend_weight=0.0084
history_matches=31
season_overlap_discount=1.0
per90_to_match_factor=0.7649
prior_reliability=0.0933
competition=Premier League
totalCross: 0.9321 -> 0.9242
totalOffside: 0.6557 -> 0.6502
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Exequiel Palacios, Issa Diop', 'matchup_zone': 'Shadow Striker vs CDM + CB — Zone 14 Battle', 'duel_win_rate': 0.31, 'pressing_faced': 'LOW', 'numerical_situation': '1v2', 'xg_multiplier': 1.0586, 'skill_edge': 0.0459, 'height_edge': -0.006, 'attacker_skill': 0.7455, 'defender_skill': 0.6436, 'attacker_role': 'SS', 'attacker_mv_price_index': 1.0, 'defender_adjusted_parts': [{'player': 'Exequiel Palacios', 'market_value': 26000000, 'role': 'CDM', 'price_index': 0.85, 'adjusted_quality': 0.7219}, {'player': 'Issa Diop', 'market_value': 10300000, 'role': 'CB', 'price_index': 0.75, 'adjusted_quality': 0.5652}], 'xg_override': 0.3189}
totalShots: 2.1178 -> 2.2419
shotOffTarget: 1.3131 -> 1.39
onTargetScoringAttempt: 0.8047 -> 0.8519
bigChanceMissed: 0.6749 -> 0.7144
goals: 0.3304 -> 0.3498
expectedGoals: 0.3012 -> 0.3189
expectedGoalsOnTarget: 0.2471 -> 0.2616
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.62 (squad xG sum 1.5378, xG scale 1.0548, xA scale 1.1941, team xA 1.05 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.622
squad_xg_sum=1.5378
squad_xa_sum=0.8829
team_expected_assists=1.0543
team_xa_to_xg_ratio=0.65
expected_goals: 0.3189 -> 0.3364
expected_assists: 0.0904 -> 0.1079
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 10 by projected rating, fifa_overall 77.0)match_squad_rank=10
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=1
goal_probability=0.2857
goal_rate=0.3498
scorer_weight=0.3646
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.1023
assist_rate=0.0071
provider_weight=0.0863
-
Neco WilliamsD8900.090.0566%11.26.860.236FBref Prior D_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 1.0063, quality 0.710)market_value_eur=29000000
quality_factor=0.71
boost_factor=1.0063
reference_quality=0.505
history_matches=44
history_shrink=0.102
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0088)blend_weight=0.0088
history_matches=44
season_overlap_discount=1.0
per90_to_match_factor=0.9926
prior_reliability=0.1333
competition=Premier League
wonTackle: 1.3378 -> 1.3567
totalCross: 5.9255 -> 5.9082
interceptionWon: 1.0592 -> 1.0498
totalShots: 1.3934 -> 1.3855
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Abdul Fatawu Issahaku', 'matchup_zone': 'Shape fallback'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.62 (squad xG sum 1.5378, xG scale 1.0548, xA scale 1.1941, team xA 1.05 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.622
squad_xg_sum=1.5378
squad_xa_sum=0.8829
team_expected_assists=1.0543
team_xa_to_xg_ratio=0.65
expected_assists: 0.1296 -> 0.1548
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 9 by projected rating, fifa_overall 80.0)match_squad_rank=9
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.0858
goal_rate=0.0243
scorer_weight=0.0718
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.1434
assist_rate=0.0372
provider_weight=0.1238
-
Xaver SchlagerM8500.070.03151%10.86.941.112FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 1.0082, quality 0.570)market_value_eur=14200000
quality_factor=0.5704
boost_factor=1.0082
reference_quality=0.505
history_matches=7
history_shrink=0.4167
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0217)blend_weight=0.0217
history_matches=7
season_overlap_discount=1.0
per90_to_match_factor=0.948
prior_reliability=0.08
competition=Premier League
fouls: 1.2924 -> 1.2644
interceptionWon: 1.1501 -> 1.1252
wonTackle: 2.5141 -> 2.4939
totalCross: 0.0 -> 0.0171
totalShots: 1.0921 -> 1.1029
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Christian Walton', 'matchup_zone': 'Left Wingback vs Right Back — Overlapping Run', 'duel_win_rate': 0.439, 'pressing_faced': 'LOW', 'numerical_situation': '1v1', 'xg_multiplier': 1.0276, 'skill_edge': 0.0788, 'height_edge': -0.06, 'attacker_skill': 0.6339, 'defender_skill': 0.4588, 'attacker_role': 'LWB', 'attacker_mv_price_index': 0.7, 'defender_adjusted_parts': [{'player': 'Christian Walton', 'market_value': 2600000, 'role': 'GK', 'price_index': 0.55, 'adjusted_quality': 0.4588}], 'xg_override': 0.0622}
aerialWon: 0.5854 -> 0.9
totalShots: 1.1029 -> 1.1333
shotOffTarget: 0.8902 -> 0.9148
onTargetScoringAttempt: 0.1974 -> 0.2028
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.62 (squad xG sum 1.5378, xG scale 1.0548, xA scale 1.1941, team xA 1.05 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.622
squad_xg_sum=1.5378
squad_xa_sum=0.8829
team_expected_assists=1.0543
team_xa_to_xg_ratio=0.65
expected_assists: 0.0406 -> 0.0485
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 6 by projected rating, fifa_overall 78.0)match_squad_rank=6
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.0635
goal_rate=0.0671
scorer_weight=0.0685
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0473
assist_rate=0.0598
provider_weight=0.0588
-
James McAteeM8500.090.02308%10.56.928.431FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 1.0072, quality 0.629)market_value_eur=19800000
quality_factor=0.6291
boost_factor=1.0072
reference_quality=0.505
history_matches=21
history_shrink=0.1923
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0150)blend_weight=0.015
history_matches=21
season_overlap_discount=1.0
per90_to_match_factor=0.9393
prior_reliability=0.12
competition=Premier League
totalShots: 1.2874 -> 1.2681
fouls: 1.023 -> 1.0077
wasFouled: 1.0699 -> 1.0852
interceptionWon: 0.7481 -> 0.7369
wonTackle: 1.4205 -> 1.4148
onTargetScoringAttempt: 0.3495 -> 0.3443
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': "Dara O'Shea", 'matchup_zone': 'Right Wingback vs Left Back — Overlapping Run', 'duel_win_rate': 0.362, 'pressing_faced': 'MEDIUM', 'numerical_situation': '1v1', 'xg_multiplier': 0.9443, 'skill_edge': -0.0059, 'height_edge': -0.032, 'attacker_skill': 0.7044, 'defender_skill': 0.7176, 'attacker_role': 'RWB', 'attacker_mv_price_index': 0.7, 'defender_adjusted_parts': [{'player': "Dara O'Shea", 'market_value': 21000000, 'role': 'LB', 'price_index': 0.7, 'adjusted_quality': 0.7176}], 'xg_override': 0.0873}
aerialWon: 0.4996 -> 1.1
totalShots: 1.2822 -> 1.2108
shotOffTarget: 0.9379 -> 0.8857
onTargetScoringAttempt: 0.3443 -> 0.3251
goals: 0.0927 -> 0.0875
expectedGoals: 0.0924 -> 0.0873
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.62 (squad xG sum 1.5378, xG scale 1.0548, xA scale 1.1941, team xA 1.05 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.622
squad_xg_sum=1.5378
squad_xa_sum=0.8829
team_expected_assists=1.0543
team_xa_to_xg_ratio=0.65
expected_assists: 0.1256 -> 0.15
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 5 by projected rating, fifa_overall 73.0)match_squad_rank=5
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.088
goal_rate=0.0875
scorer_weight=0.0922
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.1393
assist_rate=0.097
provider_weight=0.1256
-
Daniel MuñozM8000.140.06134%10.76.851.729FBref Prior M_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost M_service raw output over 8 target models--
market_value_boostMarket-value quality scaling (boost 1.0058, quality 0.660)market_value_eur=23000000
quality_factor=0.6595
boost_factor=1.0058
reference_quality=0.505
history_matches=35
history_shrink=0.125
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0033)blend_weight=0.0033
history_matches=35
season_overlap_discount=1.0
per90_to_match_factor=0.8909
prior_reliability=0.04
competition=Premier League
totalShots: 1.0923 -> 1.0984
totalCross: 1.6219 -> 1.6166
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Exequiel Palacios', 'matchup_zone': 'Central Mid vs Defensive Mid — Pressing/Creation Duel', 'duel_win_rate': 0.456, 'pressing_faced': 'MEDIUM', 'numerical_situation': '1v1', 'xg_multiplier': 1.0089, 'skill_edge': -0.0179, 'height_edge': 0.024, 'attacker_skill': 0.6821, 'defender_skill': 0.7219, 'attacker_role': 'CM', 'attacker_mv_price_index': 0.9, 'defender_adjusted_parts': [{'player': 'Exequiel Palacios', 'market_value': 26000000, 'role': 'CDM', 'price_index': 0.85, 'adjusted_quality': 0.7219}], 'xg_override': 0.1312}
aerialWon: 2.14 -> 1.1
totalShots: 1.0984 -> 1.1082
shotOffTarget: 0.7239 -> 0.7303
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.62 (squad xG sum 1.5378, xG scale 1.0548, xA scale 1.1941, team xA 1.05 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.622
squad_xg_sum=1.5378
squad_xa_sum=0.8829
team_expected_assists=1.0543
team_xa_to_xg_ratio=0.65
expected_goals: 0.1312 -> 0.1384
expected_assists: 0.0825 -> 0.0985
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 8 by projected rating, fifa_overall 82.0)match_squad_rank=8
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.1292
goal_rate=0.1448
scorer_weight=0.1488
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0938
assist_rate=0.0898
provider_weight=0.1039
-
MurilloD8800.120.05122%10.76.955.024FBref Prior D_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 1.0128, quality 0.821)market_value_eur=49000000
quality_factor=0.8206
boost_factor=1.0128
reference_quality=0.505
history_matches=32
history_shrink=0.1351
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0117)blend_weight=0.0117
history_matches=32
season_overlap_discount=1.0
per90_to_match_factor=0.9731
prior_reliability=0.1333
competition=Premier League
totalShots: 1.3027 -> 1.2931
interceptionWon: 1.2309 -> 1.2222
fouls: 1.2219 -> 1.2133
wonTackle: 1.118 -> 1.1106
onTargetScoringAttempt: 0.4344 -> 0.4293
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Julio Enciso', 'matchup_zone': 'LW vs CB'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.62 (squad xG sum 1.5378, xG scale 1.0548, xA scale 1.1941, team xA 1.05 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.622
squad_xg_sum=1.5378
squad_xa_sum=0.8829
team_expected_assists=1.0543
team_xa_to_xg_ratio=0.65
expected_goals: 0.114 -> 0.1202
expected_assists: 0.0576 -> 0.0688
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 4 by projected rating, fifa_overall 82.0)match_squad_rank=4
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.1133
goal_rate=0.0042
scorer_weight=0.0962
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0665
assist_rate=0.0927
provider_weight=0.086
-
Ousmane DiomandeD8700.060.02196%10.26.722.212FBref Prior D_service
Step-by-step (9 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 1.0443, quality 0.800)market_value_eur=44000000
quality_factor=0.8002
boost_factor=1.0443
reference_quality=0.505
history_matches=5
history_shrink=0.5
-
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Emersonn', 'matchup_zone': 'Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.62 (squad xG sum 1.5378, xG scale 1.0548, xA scale 1.1941, team xA 1.05 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.622
squad_xg_sum=1.5378
squad_xa_sum=0.8829
team_expected_assists=1.0543
team_xa_to_xg_ratio=0.65
-
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 14 by projected rating, fifa_overall 81.0)match_squad_rank=14
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.0553
goal_rate=0.0
scorer_weight=0.0455
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0072
assist_rate=0.0
provider_weight=0.0064
-
JairD8400.020.02ok00.26.739.522XGBoost D_service
Step-by-step (9 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost D_service raw output over 7 target models--
market_value_boostMarket-value quality scaling (boost 1.0143, quality 0.686)market_value_eur=26000000
quality_factor=0.6858
boost_factor=1.0143
reference_quality=0.505
history_matches=14
history_shrink=0.2632
-
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Daizen Maeda', 'matchup_zone': 'Shape fallback'}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.62 (squad xG sum 1.5378, xG scale 1.0548, xA scale 1.1941, team xA 1.05 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.622
squad_xg_sum=1.5378
squad_xa_sum=0.8829
team_expected_assists=1.0543
team_xa_to_xg_ratio=0.65
-
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 17 by projected rating, fifa_overall 80.0)match_squad_rank=17
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv_filled
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.0169
goal_rate=0.0
scorer_weight=0.0136
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0081
assist_rate=0.0
provider_weight=0.0071
-
Matz SelsG9000.00-n/a0.07.056.628FBref Prior G_service
Step-by-step (10 steps)
StepDescriptionKey paramsChanges
xgboost_rawXGBoost G_service raw output over 3 target models--
market_value_boostMarket-value quality scaling (boost 0.9979, quality 0.446)market_value_eur=3700000
quality_factor=0.4461
boost_factor=0.9979
reference_quality=0.505
history_matches=38
history_shrink=0.1163
-
fbref_prior_blendFBref 2026-27 prior blended (weight 0.0101)blend_weight=0.0101
history_matches=38
season_overlap_discount=1.0
per90_to_match_factor=0.9962
prior_reliability=0.1333
competition=Premier League
saves: 2.9332 -> 2.9237
final_capStats clamped to historical constraints and shot-component identitystats_clamped=0
shot_identity_applied=false
-
enriched_model_outputModel output after duel-context enrichment (pre router post-processing)duel_context_applied=true
duel_context={'opponent_faced': 'Emersonn, Julio Enciso', 'matchup_zone': 'Goalkeeper shot-stopping context', 'opponent_lambda': 1.2622}
-
scoreline_resetTeam scoreline allocation: goal/assist counters reset to 0; the team's 1 goals are handed out as whole numbers by integer_goal_projection / integer_assist_projectionscoreline_reset=true
team_goals=1
-
team_lambda_rescalePlayer expected_goals/expected_assists rescaled to unconditional contributions so squad sum equals team lambda 1.62 (squad xG sum 1.5378, xG scale 1.0548, xA scale 1.1941, team xA 1.05 = 0.65 x lambda)scoreline_reset=true
team_lambda=1.622
squad_xg_sum=1.5378
squad_xa_sum=0.8829
team_expected_assists=1.0543
team_xa_to_xg_ratio=0.65
shots_faced: 12.0 -> 11.6
expected_saves: 2.94 -> 2.84
high_pressure_saves: 1.01 -> 0.97
rankings_attachedDisplay-only provenance: no published number changes. Global ranking attached (match squad rank 3 by projected rating, fifa_overall 81.0)match_squad_rank=3
squad_role=starter
squad_rank_basis=projected_rating
affects_projection=false
ranking_source=sofascore_plus_fifa_csv
ranking_status=combined
-
integer_goal_projectionTeam scoreline allocation: 1 projected goals distributed by scorer weight (xG x finishing x appearance)team_goals=1
allocation_applied=true
goals_allocated=0
goal_probability=0.0
scorer_weight=0.0
squad_weight_total=1.6318
-
integer_assist_projectionTeam scoreline allocation: 1 projected assists distributed by provider weight (xA x creation x appearance; nobody assists his own goal)allocation_applied=true
team_assists=1
assists_allocated=0
assist_probability=0.0
provider_weight=0.0
squad_weight_total=0.992
-
Team totals11.62156.9
Bench Candidates (7 modeled substitutes with empirical playing time)
PlayerPosExp MinApp ProbSubstitute Modeling Details
John VictorG4.5m11.3%Market-value substitute prior
Nikola MilenkovićD14.6m23.7%Market-value substitute prior
Ola AinaD14.2m23.0%Market-value substitute prior
Omari HutchinsonM23.0m54.6%Market-value substitute prior
Ibrahim SangaréM22.8m32.3%Market-value substitute prior
Callum Hudson OdoiF26.5m61.2%Market-value substitute prior
Antagonist / tactical summary
Midfield is evenly contested — Julio Enciso vs Morgan Gibbs-White will be the pivotal duel. Total antagonist xG — Home: 0.69, Away: 1.22. Home danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle. Away danger zone: Shadow Striker vs CDM + CB — Zone 14 Battle.
Midfield — possession 49.9% / 50.1%, dominance ratio 0.48, key duel: Julio Enciso vs Morgan Gibbs-White
Julio Enciso xG 0.15Abdoul Ouattara xG 0.05Emersonn xG 0.25Liam Delap xG 0.36Dan Ndoye xG 0.32Xaver Schlager xG 0.06

Summary

Antagonist matchup analysis for Ipswich vs Forest. Most likely scoreline: 0-1. Lambdas derived from 5 home and 6 away individual player duels. Head-to-head: Ipswich 2W-1D-7L vs Forest over 10 meetings.
Tactical parity between 4-2-3-1 and 3-4-2-1. Match outcome driven primarily by individual player quality. Midfield is evenly contested — Julio Enciso vs Morgan Gibbs-White will be the pivotal duel. Total antagonist xG — Home: 0.69, Away: 1.22. Home danger zone: Striker vs Two Centre Backs — 1v2 Aerial/Physical Battle. Away danger zone: Shadow Striker vs CDM + CB — Zone 14 Battle.


Generated 2026-10-23 13:40:00 UTC · Soccer prediction reporting