Один из самых популярных элементов match-страницы ScanGoal — momentum chart: горизонтальный ряд маленьких зелёных и красных полосок под счётом. Каждая полоса = 3 минуты игрового времени. Зелёная — давит хозяин, красная — гости. Высота = интенсивность. Вот как читать точно.

Что входит в полоску

Каждый 3-минутный срез — взвешенная сумма нескольких потоков событий:

Интенсивность нормализуется относительно лиговой базы — угловой в низкотемповой лиге весит чуть больше чем тот же угловой в высокотемповой.

Узнаваемые паттерны

1. Контроль (runaway)

Одна сторона показывает высокие зелёные/красные полосы много 3-минуток подряд. Команда реально доминирует — высока вероятность гола, угла или ошибки соперника.

2. Качели (seesaw)

Зелёные и красные чередуются среднего размера. Открытая обоюдная игра. Выше вероятность BTTS, нет явного контроля. Хороший контекст для in-play Over.

3. Зажим (defensive lock)

Обе стороны показывают очень низкие полосы много слотов. Матч застрял — мяч ходит в середине без проникновения. Часто предшествует 0:0 или 1:0, сильный сигнал в пользу Under.

Почему мы перерисовываем график каждый раз

Технический нюанс: на каждом обновлении график строится с нуля. Это потому что частичные апдейты постепенно течут SVG-элементами в DOM, тормозя страницу. (Мы узнали это на своей шкуре — ранняя версия momentum chart утекала ~3000 SVG прямоугольников за матч за 3 часа, раздувая HTML до ~1MB.)

Так что обновление графика — всегда чистая перерисовка, не приписывание.

Чего график не показывает

Комбинация momentum с другими сигналами

Самый полезный workflow:

  1. Глянуть счёт и Powerd для базы матча
  2. Прочитать momentum chart — что происходит сейчас
  3. Сверить с dominance bar (текущее 5-мин окно давления)
  4. Проверить live-линию — если линия не двигается несмотря на давление, рынок медленно реагирует

Эта комбинация гораздо полезнее счёта в одиночку. Команда 0:1 с устойчивым зелёным давлением 12+ минут — это другая ситуация чем 0:1 без давления.

Откуда данные

События берутся из нескольких match-data scrapers и нормализуются в нашей БД. Сэмплируем с минутным разрешением где источник позволяет, потом агрегируем в 3-минутный срез для визуализации. Скорость обновления для live-матчей обычно 30 секунд.