Даже лучшая ML модель имеет calibration error. XGBoost HC Cover -3.5 даёт probability 0.65 — но реальная вероятность может быть 0.58 или 0.72. Источники ошибок: (1) train-test distribution shift (исторические паттерны меняются), (2) feature noise (incomplete data для некоторых матчей), (3) fundamental uncertainty — тенисной матч имеет irreducible randomness. Ставка на одной модели = exposure ко всем её персональным слабостям. Статистически: 45-55% WR на single model picks даже при положительном long-term ROI. Простой ансамбль: усреднить probability от нескольких моделей. Если HC -3.5 XGBoost даёт P=0.65, CatBoost P=0.60, LineMove P=0.62 → ensemble P=0.62. Это снижает variance отдельных моделей, но ставит на ту же линию для каждого матча. Проблема — ансамбль всё равно может ошибаться на out-of-distribution matches, просто чуть менее драматически. Эта стратегия даёт +3-5% ROI over single model, но это marginal. Радикально другой подход: не усреднять, а **фильтровать**. Сигнал проходит