@@ -154,7 +154,7 @@ def update_implied_odds(conn):
|
||||
implied_draw = %s,
|
||||
implied_away = %s,
|
||||
implied_over25 = %s,
|
||||
implied_btts = %s
|
||||
implied_btts_yes = %s
|
||||
WHERE match_id = %s
|
||||
""", updates)
|
||||
updated += len(updates)
|
||||
@@ -168,7 +168,7 @@ def update_implied_odds(conn):
|
||||
implied_draw = %s,
|
||||
implied_away = %s,
|
||||
implied_over25 = %s,
|
||||
implied_btts = %s
|
||||
implied_btts_yes = %s
|
||||
WHERE match_id = %s
|
||||
""", updates)
|
||||
updated += len(updates)
|
||||
|
||||
@@ -29,7 +29,14 @@ from psycopg2.extras import RealDictCursor
|
||||
from data.db import get_clean_dsn
|
||||
from models.v20_ensemble import FullMatchPrediction
|
||||
from models.v25_ensemble import V25Predictor, get_v25_predictor
|
||||
from models.v27_predictor import V27Predictor, compute_divergence, compute_value_edge
|
||||
try:
|
||||
from models.v27_predictor import V27Predictor, compute_divergence, compute_value_edge
|
||||
except ImportError:
|
||||
V27Predictor = None
|
||||
def compute_divergence(*args, **kwargs):
|
||||
return 0.0
|
||||
def compute_value_edge(*args, **kwargs):
|
||||
return 0.0
|
||||
from features.odds_band_analyzer import OddsBandAnalyzer
|
||||
try:
|
||||
from models.basketball_v25 import (
|
||||
@@ -246,6 +253,8 @@ class SingleMatchOrchestrator:
|
||||
|
||||
def _get_v27_predictor(self) -> Optional[V27Predictor]:
|
||||
"""Non-fatal V27 loader — returns None if models can't load."""
|
||||
if V27Predictor is None:
|
||||
return None
|
||||
if getattr(self, "_v27", None) is not None:
|
||||
return self._v27
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user