@@ -597,7 +597,7 @@ class SingleMatchOrchestrator:
|
||||
the model fall back on stronger signals (odds, ELO, form, H2H).
|
||||
"""
|
||||
defaults = {
|
||||
'home_squad_quality': 0.50, 'away_squad_quality': 0.50, 'squad_diff': 0.0,
|
||||
'home_squad_quality': 12.0, 'away_squad_quality': 12.0, 'squad_diff': 0.0,
|
||||
'home_key_players': 3.0, 'away_key_players': 3.0,
|
||||
'home_missing_impact': 0.0, 'away_missing_impact': 0.0,
|
||||
'home_goals_form': 1.3, 'away_goals_form': 1.3,
|
||||
@@ -612,7 +612,7 @@ class SingleMatchOrchestrator:
|
||||
away_lineup=data.away_lineup,
|
||||
sidelined_data=data.sidelined_data,
|
||||
)
|
||||
return {
|
||||
result = {
|
||||
'home_squad_quality': float(pred.home_squad_quality),
|
||||
'away_squad_quality': float(pred.away_squad_quality),
|
||||
'squad_diff': float(pred.squad_diff),
|
||||
@@ -623,6 +623,13 @@ class SingleMatchOrchestrator:
|
||||
'home_goals_form': float(pred.home_goals_form),
|
||||
'away_goals_form': float(pred.away_goals_form),
|
||||
}
|
||||
# Sanity check: squad_quality must be in training range (~3-36)
|
||||
for side in ('home', 'away'):
|
||||
sq = result[f'{side}_squad_quality']
|
||||
if sq > 50 or sq < 0:
|
||||
print(f"🚨 SCALE MISMATCH: {side}_squad_quality={sq:.1f} "
|
||||
f"(expected 3-36). Check player_predictor formula!")
|
||||
return result
|
||||
except Exception as e:
|
||||
print(f"⚠️ Squad features failed: {e}")
|
||||
return defaults
|
||||
|
||||
Reference in New Issue
Block a user