СТАВОЧНИК · что это и как работает

← к дашборду кабинет →
1. Идея в трёх абзацах 2. Математика: откуда берётся гарантированная прибыль 3. Откуда берутся данные (четыре источника) 4. Где это работает (три площадки) 5. Разбор дашборда: каждый раздел и каждая цифра 6. Кабинет: что значит «сделать ставку в эмуляции» 7. Что мы уже знаем о рисках и ограничениях 8. Где проект сейчас и что дальше

1. Идея в трёх абзацах

Один и тот же футбольный матч оценивают десятки площадок — букмекеры и биржи ставок. Они смотрят на одни и те же команды, но их цены (коэффициенты) отличаются: у кого-то своя модель, кто-то отстаёт от новостей, кто-то держит толстые заявки в стакане. Обычно разница маленькая. Но иногда цены расходятся настолько, что если поставить на одной площадке на один исход, а на другой захеджировать противоположную сторону, то выигрыш гарантирован при любом результате матча. Такая ситуация называется вилка (арбитраж).

Вилки существуют секунды или минуты, их надо ловить автоматически. Мы построили систему, которая каждые 15 секунд снимает цены с четырёх площадок, сшивает одинаковые матчи между ними, ищет вилки и эмулирует исполнение: считает, сколько условных денег можно было бы поставить и сколько заработать, если бы мы нажали кнопку. Реальных ставок пока нет — сначала надо понять, как часто это случается и стоит ли игра свеч.

Дашборд — это окно в этот процесс: сколько вилок найдено, какого размера, как долго они жили, сколько условной прибыли накопилось. Всё, что вы видите на нём, — измерение, а не факт заработка.

2. Математика: откуда берётся гарантированная прибыль

Два типа вилок, которые мы ищем

BL (Back-Lay) — самая понятная. В букмекере ставим на исход (это бэк, кэф Kb). На бирже ставим против того же исхода (это lay, кэф Kl, биржа берёт комиссию f с прибыли). Если исход случится — букмекер платит, биржа списывает обязательство. Если не случится — букмекер забирает ставку, биржа платит. Вилка есть, когда:
Kb · (1 − f) / (Kl − f) > 1
Размер lay-ставки под ставку S в буке: L = S · Kb / (Kl − f). Маржа — превышение над единицей. Заморозить на бирже придётся не L, а обязательство L · (Kl − 1) — вот почему биржа требует в разы больше капитала, чем букмекер.
BB (крест бэков) — на каждый из трёх исходов (П1, ничья, П2) берём лучшую цену бэка среди всех источников. Если сумма обратных кэфов меньше единицы — вилка:
1/K1 + 1/KX + 1/K2 < 1
Ставки распределяются так, чтобы выплата была одинаковой при любом исходе. Для бирж кэф считается эффективным — после вычета комиссии.

Варианты BLX (обе стороны — биржи) и EX (все исходы внутри одной биржи) — те же формулы, просто другие комбинации источников.

3. Откуда берутся данные

ИсточникЧто этоКак получаемОсобенности
PinnacleБукмекер, считается самым «острым» в мире — его цены ближе всех к истинеГостевой API без аккаунтаВ live гостевой фид заморожен (цены не обновляются), поэтому в игре Pinnacle из расчёта вилок исключён — только пре-матч. Блокирует запросы с известных хостингов (в т.ч. наш сервер)
CloudbetКрипто-букмекер с API для реальных ставокTrading API Key (получен, депозит внесён)Часто отключает основной рынок на заметных матчах в live. Единственный букмекер, доступный с нашего сервера
SX.betДецентрализованная биржа ставок на ArbitrumAPI-ключ (получен)Комиссия 1% с прибыли тейкера. Реальная ликвидность: на топ-лигах 2000+ USDC на уровне
SmarketsКлассическая биржа ставок (Лондон)Публичный APIКомиссия 2%. Блокирует наш домашний IP и сервер, доступна только с раннера GitHub
Betfair — крупнейшая биржа — недоступна: гео-блок Сербии подтверждён скриншотом при попытке регистрации, сервер в Германии и раннер GitHub тоже получают 403. Единственный путь — аккаунт партнёра из Молдовы.

4. Где это работает

ПлощадкаЧто собираетРежимЗачем именно так
Сервер hermes1
(Hetzner, Германия)
Cloudbet + SX.betКруглосуточно, systemd-сервис, автозапуск после перезагрузкиТолько эти два источника не блокируют запросы с хостинга. Здесь же живёт сайт и API кабинета
GitHub Actions
(раннер в США)
Все четыре источника4 окна по 5.5 часа в сутки, накапливает базу между окнамиЕдинственное место, откуда видны Pinnacle и Smarkets. Публичный репозиторий — чтобы минуты не тарифицировались
НоутбукВсе четыреТолько вручную, для отладкиНе нужен для работы: если выключить — ничего не остановится

Обе постоянные площадки пишут в свои базы; сайт объединяет их в одну картину. В шапке дашборда есть метка «коллектор» — она показывает, когда GitHub-сборщик в последний раз выгрузил данные.

5. Разбор дашборда

На самом дашборде каждый заголовок раздела, столбец таблицы и плитка с цифрой имеет подсказку — наведите курсор на пунктирное подчёркивание. Здесь — то же самое, но собрано в одном месте.

Шапка

опрос #NПорядковый номер цикла сбора данных. Каждый цикл — снимок цен по всем источникам сразу. Растёт каждые 15–30 секунд, пока система жива
N с назадСколько прошло с последнего опроса. Если это число заметно больше «цикла» — источник завис; кружок слева станет красным
цикл N сСколько секунд занял сбор. Обычно 2–5 с; первый опрос после старта — дольше
pinnacle 45 · sx 17 · …Сколько матчей в окне (идут сейчас плюс ближайшие часы) вернул каждый источник в этом опросе
сшито матчей N, live NСколько разных матчей удалось сопоставить хотя бы между двумя источниками. Только такие матчи участвуют в поиске вилок
коллекторСтатус сборщика на GitHub Actions: когда последний раз выгружал данные на сервер. «Не пишет» — сейчас между окнами сбора, это нормально

Плитки с цифрами (KPI)

Часов замера сегодняСколько часов сегодня непрерывно шёл сбор — от первого до последнего опроса за сутки (по Белграду)
Эпизодов вилокСколько раз за сегодня возникала вилка с положительной маржой — любого размера и длительности
Из них маржа ≥1%Сколько из них имели маржу от одного процента. Это наш условный порог «интересно»: ниже — комиссии и проскальзывание съедят всё
Вилок ≥1% в сутки (экстрап.)Сегодняшний темп, пересчитанный на полные 24 часа. Осторожно: утром цифра прыгает, к вечеру стабилизируется
Живут ≥30 с / ≥60 сИз вилок с маржой ≥1% — сколько держались 30 секунд и дольше, 60 секунд и дольше. Шестьдесят секунд — минимум, чтобы успеть поставить оба плеча
Доля liveКакая часть эпизодов пришлась на матчи в игре. В live вилки живут короче, но их больше
Сделок (60 с)Сколько виртуальных сделок исполнено при задержке 60 секунд — самый реалистичный портфель
Гарант. прибыль (60 с)Сумма гарантированной прибыли по этим сделкам. Одна вилка учитывается один раз в сутки — повторный вход в ту же позицию при «моргании» данных не считается

Перелив · условные балансы

Модель денег: у нас условно 3000 у.е. на стороне букмекера и 5000 на стороне бирж (биржам нужно больше — под обязательства lay). Каждая сделка при задержке 60 с двигает эти цифры: часть капитала «замораживается» в открытых ставках, гарантированная прибыль копится посередине. Куда именно она осядет — в бук или на биржу — решает результат каждого матча: проигравшее плечо списывается на одной площадке, выигравшее зачисляется на другой. Отсюда название «перелив».

Вилки прямо сейчас

То, что нашлось в последнем опросе. По каждой строке видны оба плеча — источник, кэф, доступный объём. Ёмкость — сколько максимум можно было поставить (ограничено лимитом бука или объёмом стакана биржи, что меньше). Заморожено — сколько капитала уходит под сделку на обеих площадках.

Эпизоды вилок за сегодня

Эпизод — одна и та же вилка, которая держится подряд несколько опросов. Как только она пропадает — эпизод закрывается. Жизнь — сколько секунд продержалась: это главный вопрос «успели бы мы». Полоска под цифрой — визуальная шкала относительно самого долгого эпизода дня.

Виртуальные сделки

Три переключателя — три сценария реакции: 0 с (мгновенно, недостижимый идеал), 30 с, 60 с (реалистично для бота с сетевой задержкой). Сделка при задержке T записывается только если вилка к моменту T ещё жива. Сравнивая сценарии, видно, сколько теряется из-за скорости.

Табло live

Сырые котировки по 1X2 из каждого источника для матчей в окне. У букмекера — кэф и лимит ставки. У биржи — бэк и lay через слеш, объём заявок в скобках. Зелёная подсветка — бэк бука выше lay биржи: сырой сигнал потенциальной вилки до учёта комиссий.

6. Кабинет

Страница для ручной эмуляции. Показывает вилки из последнего опроса, рядом с каждой — поле для суммы и кнопка «Поставить». Нажатие мгновенно записывает виртуальную сделку по текущей цене: прибыль считается по тем же формулам, копится история и условный банк. Это тренажёр «как бы мы действовали», без реальных денег. Его же в будущем можно будет переключить на реальные API ставок.

7. Что мы уже знаем о рисках

Экстремальные андердоги. Самые «жирные» вилки — на кэфах 20–70 у аутсайдера. Маржа красивая, но обязательство на бирже в десятки раз больше ставки: ради 20 у.е. прибыли надо заморозить 5000. Капитал — узкое место, не идея.
Малоизвестные турниры. Долгоживущие расхождения на 10–19% возникают на молодёжных и региональных лигах, где букмекеры по-разному видят фаворита. Цены живые, но реальную ликвидность там ещё предстоит проверить микротестом на 50 у.е.
Гостевой фид Pinnacle в live. Заморожен — не обновляется по ходу матча. Поэтому в игре Pinnacle из расчёта исключён; первые «вилки на 25%» были именно этим артефактом, отфильтрованы.
Cloudbet отключает рынки. На заметных матчах основной рынок часто в статусе «отключено» — вилку по нему найти нельзя, это не ошибка данных.
Кэши и дубли. Три бага дашборда за неделю были не в математике, а в отображении: устаревшая страница в браузере, потерянная база коллектора, повторный «вход» в одну и ту же вилку. Все исправлены; цифры на дашборде после 10.09 честные.

8. Где проект сейчас

Фаза −1, «эмуляция до денег». Сбор данных идёт круглосуточно на двух площадках без участия ноутбука. За первые 16.5 часов полного контура найдено 44 исполнимые вилки (маржа ≥1%, жизнь ≥60 с, ёмкость ≥50). Решение о реальных деньгах — только после 3–5 суток чистой статистики и микротеста ликвидности. Капитал пока не вносится.

Проект MAXIMUM · «Ставочник». Техническая документация для сопровождения — в репозитории проекта, файл docs/HERMES-HANDBOOK.md.