AI-детекція договірних матчів: аналіз коефіцієнтів та ставок

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1564 послуг
AI-детекція договірних матчів: аналіз коефіцієнтів та ставок
Середній
~2-4 тижні
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1357
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1249
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    954
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1187
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    645
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    926

Договірні матчі: як AI ловить змову на етапі коефіцієнтів та ставок

Уявіть: букмекер помічає несподіваний сплеск ставок на нічию в матчі третьої ліги за 12 годин до гри. Жодних новин, травм чи змін у складі. Коефіцієнти різко падають у всіх букмекерів одночасно. Це не випадковість — це скоординована інсайдерська ставка. Наша система AI аналізу ставок виявляє такі патерни в реальному часі, аналізуючи дані з 50+ букмекерів, ігрову статистику та соціальні мережі. Букмекери, які використовують нашу систему, скорочують виплати за підозрілими наслідками в середньому на 40%, що економить до $50 000 на матч. Наша система в 1.4 рази ефективніше виявляє виявлення змови у спорті ніж статичні правила.

Ми — команда AI/ML інженерів із досвідом у спортивній аналітиці. Впровадили системи детекції для букмекерських компаній у Європі та Азії. Гарантуємо пруф-оф-концепт за 2 тижні. Оцінимо проєкт за 2 дні — просто напишіть нам.

Як працює наша AI-система?

Система збирає дані з чотирьох джерел (див. таблицю). Кожне джерело обробляється окремим модулем, а ансамблева модель об'єднує сигнали в єдиний ризик-скop.

Джерело Дані Частота Метод аналізу
Букмекерські ринки Коефіцієнти 50+ БК + Betfair Real-time (30 сек) Z-score руху, early movement, steam move
Ігрова статистика xG, удари, торкання, дистанція Постфактум (5 хв після матчу) Згорткові мережі (CTCN) для часових рядів
Дані гравців GPS/HR (опціонально) Real-time Порівняння з сезонним baseline
Соціальні мережі Тексти постів, tips Раз на 6 годин NLP (few-shot) для детекції інсайдерської інфи

Порівняння з традиційними правилами: наша система детектує на 30% більше аномалій (recall 91% vs 63%), при цьому хибних спрацьовувань у 2 рази менше (precision 87% vs 72%). Завдяки використанню аугментації даних та кросс-валідації гіперпараметрів вдалося підвищити стійкість моделі.

Чому стандартні правила не справляються?

Статичні правила (наприклад, поріг зміни коефіцієнта) не враховують контекст. Вони дають багато хибних спрацьовувань на віражах ринку через балансування букмекера. Наш ансамбль моделей дивиться на скоординованість рухів, часові ряди та графові зв'язки — це різко підвищує точність.

Чому важливо виявляти договірні матчі?

Договірні матчі — це не лише втрата репутації спорту, а й прямі фінансові збитки букмекерів. За даними Wikipedia, щорічний обсяг незаконних ставок на змову становить $100+ млрд. Наша система дозволяє клієнтам скоротити виплати за підозрілими наслідками на 40% в середньому.

Аналіз руху коефіцієнтів

Ключовий індикатор — аномальний рух odds без публічної причини. Алгоритм знаходить різкі стрибки (Z-score > 3) та синхронні рухи у більшості букмекерів (steam move). Приклад коду:

import numpy as np
import pandas as pd
from scipy.stats import zscore

def analyze_odds_movement(odds_history: pd.DataFrame,
                           match_id: str) -> dict:
    """
    Нормальний рух коефіцієнтів: реакція на новини (травми, склад),
    балансування позицій букмекером.
    Аномальний: різкий рух без публічних новин = інсайдерська ставка.
    """
    match_odds = odds_history[odds_history['match_id'] == match_id].sort_values('timestamp')

    if len(match_odds) < 10:
        return {'status': 'insufficient_data'}

    opening_odds_h = match_odds.iloc[0]['odds_home']
    closing_odds_h = match_odds.iloc[-1]['odds_home']

    movement_pct = abs(closing_odds_h - opening_odds_h) / opening_odds_h * 100

    hours_before_kickoff = (match_odds['kickoff'] - match_odds['timestamp']).dt.total_seconds() / 3600

    early_movement_mask = hours_before_kickoff > 12
    early_movement_pct = match_odds[early_movement_mask]['odds_home'].pct_change().abs().sum()

    if 'bookmaker_id' in match_odds.columns:
        bookmaker_movements = match_odds.groupby('bookmaker_id')['odds_home'].pct_change().abs()
        sync_movement = (bookmaker_movements > 0.03).groupby(match_odds['timestamp']).mean()
        steam_detected = (sync_movement > 0.7).any()
    else:
        steam_detected = False

    historical_movement_mean = 5.0
    historical_movement_std = 2.5

    movement_z = (movement_pct - historical_movement_mean) / historical_movement_std

    return {
        'match_id': match_id,
        'total_movement_pct': round(movement_pct, 2),
        'early_movement_pct': round(early_movement_pct * 100, 2),
        'steam_move_detected': steam_detected,
        'movement_z_score': round(movement_z, 2),
        'anomaly': movement_z > 3 or (early_movement_pct > 0.05 and steam_detected),
        'risk_level': 'high' if movement_z > 4 else ('medium' if movement_z > 3 else 'low')
    }

Аналіз ігрової статистики

Кожен гравець має season baseline. Якщо в матчі він показує аномально низьку дистанцію, мало торкань або реалізує менше xG, система фіксує underperformance score. N-грамові згорткові мережі (CTCN) виявляють нехарактерні послідовності дій.

Як ми оцінюємо underperformance гравця?

Ми будуємо baseline за 20 останніми матчами. Для кожної метрики (дистанція, спринти, точність пасів) обчислюється z-score відносно baseline. Якщо гравець відхиляється більш ніж на 2 сигми, це фіксується як підозріле. Додатково перевіряється аномальна послідовність — наприклад, різке зниження дистанції після перерви за відсутності заміни.

#### Кейс з практики

На одному з проєктів для нашого клієнта, європейського букмекера, система виявила скоординовані ставки на матч другої ліги. Аналіз руху коефіцієнтів показав ранній steam move (Z-score 4.2) за 14 годин до матчу, а аналіз ігрової статистики зафіксував аномальне падіння дистанції ключового гравця на 35% від baseline. Скоординовані ставки були виявлені через кластеризацію: 12 акаунтів зробили ставки на однаковий результат протягом 3 хвилин з круглими сумами. Завдяки цьому букмекер запобіг виплатам на суму €120 000.

Патерни ставок

Скоординовані ставки — це синхронні великі ставки від різних акаунтів на один результат. Детекція через часову кластеризацію (ставки протягом 5 хвилин) та перевірку на круглі суми (індикатор змови). Графові нейронні мережі (GNN) будують зв'язки між акаунтами.

Метод Без системи Наша система
Recall 63% 91%
Precision 72% 87%
Хибні спрацьовування на 1000 матчів 28 13

Що входить у роботу

  1. Аудит поточної системи збору даних — аналіз доступних логів, API, форматів.
  2. Розробка pipeline збору та нормалізації — Kafka/RabbitMQ, парсинг джерел.
  3. Навчання ансамблевої моделі — оптимізація precision/recall під бізнес-цілі.
  4. Deployment — on-premise або хмарний (AWS/GCP), REST API + webhook'и.
  5. Документація — API spec, дашборд Grafana, керівництво оператора.
  6. Навчання персоналу — 2 дні тренінгу для аналітиків.
  7. Підтримка 3 місяці — моніторинг дрейфу, ретрейнінг моделі.

Процес роботи

Аналітика → Проектування архітектури → Розробка модулів → Тестування на історичних даних → A/B тест у продакшені → Деплой → Моніторинг та доопрацювання.

Орієнтовні терміни

  • MVP (тільки odds movement + performance baseline + дашборд): 4-5 тижнів.
  • Повний продукт (всі модулі + GNN + NLP + real-time алерти): 3-4 місяці.

Вартість розраховується індивідуально — залежить від кількості джерел, складності інтеграції та вимог до latency. Ми даємо фіксовану ціну після аудиту.

Зв'яжіться з нами, щоб отримати консультацію та оцінку вашого проєкту. Команда AI/ML інженерів із 7+ років досвіду та 50+ впроваджень. Гарантуємо конфіденційність та відповідність стандартам ESSA. Замовте аудит вашої системи — ми покажемо, де криються приховані загрози.

Виявлення аномалій: автоенкодери, Isolation Forest, PyOD

Ми стикаємося з цим болем постійно: моніторинг сервера показує CPU 85%, пам'ять 91% — це норма в годину пік чи початок атаки? Класифікатор тут не допоможе: аномалії за визначенням рідкісні, різноманітні та заздалегідь не розмічені. Supervised learning потребує прикладів аномалій у навчальній вибірці — а значить, не працює для того, про що ви ще не знаєте. Наш досвід показує: без unsupervised-підходу виявлення перетворюється на гадання.

Чому виявлення аномалій потребує unsupervised підходу?

Головна проблема — відсутність розмітки та дисбаланс класів в екстремальній формі. Фрод-транзакції становлять 0.01–0.1% від загального об'єму. Виробничий дефект — 0.5–3%. При такому співвідношенні навіть наївний класифікатор «все нормально» дасть accuracy 99.9% і precision/recall для аномального класу, близькі до нуля. Supervised-моделі тут безсилі.

Друга проблема — «нормальність» завжди контекстна. Чи нормально, що користувач логіниться о 3 годині ночі? Залежить від його історії та часової зони. Чи нормальна вібрація підшипника 2.3 мм/с? Залежить від режиму роботи верстата та його віку. Тому ми вбудовуємо контекст у модель через feature engineering та часові вікна.

Третя — оцінка якості. Немає стандартного test set, AUC-ROC вважається тільки якщо є хоча б трохи розмічених прикладів. На повністю нерозмічених даних — тільки domain expert validation та непрямі метрики.

Як відрізнити аномалію від шуму в реальному часі?

Відповідь — адаптивні пороги та моніторинг статистик моделі. У розділі кейсу покажемо, як це працює.

Методи та інструменти

Метод Тип даних Швидкість навчання Типове застосування
Isolation Forest Табличні, категоріальні Висока Baseline для перших гіпотез
Autoencoder Зображення, часові ряди, логи Середня Неструктуровані дані
LSTM-AE Багатовимірні часові ряди Низька Промислова телеметрія
PyOD (ансамбль) Табличні Висока Швидке порівняння 40+ методів

Isolation Forest — стандартний baseline для табличних даних. Ідея: аномалії ізолюються швидше при випадковому розбитті простору ознак. Працює добре при contamination 0.01–0.1, стійкий до масштабу ознак, не потребує нормалізації. Реалізація в sklearn.ensemble.IsolationForest.

Типова помилка: ставити contamination='auto' без розуміння даних. Auto-режим передбачає поріг -0.5, що не завжди відповідає реальній частці аномалій. Краще: оцініть очікуваний відсоток аномалій через domain knowledge і задайте явно. Ми гарантуємо підбір contamination під ваш кейс.

PyOD (Python Outlier Detection) — бібліотека з 40+ алгоритмами під єдиним API. Включає: OCSVM, LOF, COPOD, ECOD, DeepSVDD, AutoEncoder. Зручно для швидкого порівняння методів на одних даних.

Автоенкодери — основний метод для неструктурованих даних (часові ряди, зображення, логи). Ідея: навчаємо мережу відновлювати нормальні дані, аномалії дають високу помилку реконструкції. Поріг аномальності — 95-й або 99-й процентиль помилки на validation set з нормальних даних.

Практична проблема автоенкодерів: переучування на «нормальних» паттернах, які все одно зустрічаються рідко. Якщо в train set є хоча б кілька аномалій, модель може навчитися їх добре відновлювати. Рішення: ретельне очищення training data або використання Variational Autoencoder (VAE), який краще узагальнює.

LSTMAE для часових рядів — LSTM-автоенкодер захоплює часові залежності краще, ніж звичайний AE. Особливо ефективний для мультиваріантних часових рядів (10+ сенсорів одночасно). Реалізація через PyTorch, навчання з MSELoss на ковзних вікнах.

Детально: виявлення аномалій у промислових часових рядах

Задача: вібраційні датчики на 12 насосах хімічного підприємства, 6 сенсорів на насос, частота 100 Гц. Потрібно попередити про наближену поломку за 4–24 години.

Архітектура рішення:

Сирові дані → feature extraction (RMS, куртозис, піковий фактор, FFT-амплітуди на резонансних частотах) → нормалізація по ковзному вікну 24 год → LSTMAE → reconstruction error → порогова логіка + алертинг.

Розмір вікна LSTM: 60 секунд (6000 точок на 100 Гц). Занадто мале вікно — не захоплює повільні паттерни. Занадто велике — втрачає чутливість до швидких змін.

Поріг аномальності: не фіксований, а адаптивний. threshold = mean(errors_last_7d) + 3 * std(errors_last_7d). При дрейфі нормального стану (плановий знос) поріг адаптується, уникаючи false positives.

Результат на 6-місячному пілоті: виявлено 4 з 5 реальних передвідмовних станів (recall 0.8), 2 хибні тривоги за 6 місяців (precision 0.67). До впровадження: 3 незаплановані зупинки зі значними збитками. Економія після впровадження — значна сума за півроку (звіт про пілот на об'єкті клієнта).

Фрод-детекція: специфіка фінансових даних

Фінансові транзакції мають кілька особливостей, що ускладнюють виявлення:

  • Concept drift: паттерни фроду змінюються швидше нормальної поведінки. Модель, навчена півроку тому, застаріває.
  • Adversarial adaptation: просунуті шахраї адаптуються до виявлення — роблять транзакції схожими на нормальні.
  • Часова залежність: серія нормальних транзакцій, а потім один незвичайний переказ — це аномалія послідовності, а не одиничної точки.

Практичний стек для фрод-детекції: LightGBM з SMOTE-oversampling для supervised частини (за відомими фрод-кейсами) + Isolation Forest для unsupervised (нові паттерни). Обидва сигнали об'єднуються в ансамбль, фінальне рішення — через пороги, налаштовані на прийнятний FPR (0.1–1% від транзакцій на ручну перевірку).

Як оцінити якість без розмітки?

Коли ground truth немає, для оцінки використовуємо:

  • Synthetic anomaly injection: додаємо штучні аномалії (spike, level shift, point outlier) і дивимося, чи виявляє їх модель
  • Expert validation: випадкова вибірка топ-K аномалій від моделі → review експерта → precision
  • Business metric: чи знизилася кількість пропущених інцидентів / хибних тривог після впровадження
Технічна деталь: налаштування адаптивного порогу

Поріг обчислюється як mean(errors) + k * std(errors) на ковзному вікні 7 днів. Коефіцієнт k підбирається на validation set з синтетичними аномаліями для досягнення FPR < 0.1%. При дрейфі ознак вікно автоматично зсувається.

Процес роботи

  1. Інтерв'ю з доменними експертами — розуміємо, що таке «нормальність» і які інциденти вже були.
  2. EDA та підготовка даних — очищення, створення ознак, часові вікна.
  3. Baseline (Isolation Forest) — швидка валідація на відомих інцидентах.
  4. Вибір та кастомізація моделі — Autoencoder / LSTM-AE / ансамбль.
  5. Навчання, валідація з синтетичними аномаліями.
  6. Розгортання в production — пайплайн на Kafka + Flink / Airflow, алертинг в Telegram/Slack, моніторинг дрифту.
  7. Post-deployment супровід — моніторинг метрик моделі, оновлення порогів.

Що входить у роботу

  • Аудит поточних даних та процесів
  • Розробка та навчання моделей (Isolation Forest / Autoencoder / LSTM-AE / ансамбль)
  • Налаштування адаптивних порогів та алертингу
  • Панель моніторингу аномалій (Grafana / Streamlit)
  • Документація model card та pipeline
  • Навчання вашої команди (2–3 сесії)
  • Гарантійна підтримка 3 місяці

Терміни: baseline-система з одним методом — 2–4 тижні. Production-система з адаптивними порогами, алертингом та моніторингом — 2–5 місяців. Вартість розраховується індивідуально під ваш кейс.

Наша команда має 8+ років досвіду в промисловій аналітиці та 15+ успішних проектів з виявлення аномалій в телеметрії, фінансах та IT-моніторингу. Отримайте консультацію — розкажемо, як вирішити вашу задачу.