Туториал по боту Полимаркет · Глава 15 из 32

Спортивные микроструктурные боты на Полимаркет: преимущество по ходу игры, неверная оценка из-за счёта, тег NBA (745) и тег Tennis (864), источники данных в реальном времени и паттерны исполнения для высокочастотных спортивных рынков.

Что охватывает эта глава

Спортивные рынки - самый стабильно активный неполитический сегмент на Полимаркет. Работающие боты делятся на две чёткие категории: ловцы линий до матча, которые торгуют после того, как линия уже установлена, и микроструктурные боты по ходу матча, которые реагируют на движение стакана заявок во время игры. Эта глава охватывает оба подхода с конкретными тегами, источниками данных и бюджетами задержки, применимыми к каждому.

Спортивные рынки - самый загруженный неполитический сегмент на Полимаркет. Рабочий паттерн исполнения сочетает поток счёта в реальном времени (ESPN, PandaScore) с микроструктурными сигналами стакана заявок. В этой главе рассматривается, что работает именно для NFL, NBA, футбола и тенниса, а также чем отличается киберспорт.

  • Почему на спортивных рынках можно торговать
  • До матча или в ходе матча (разные боты)
  • Подтверждённые tag ID (745 NBA, 864 Tennis)
  • Источники данных: ESPN, официальные API, считывание с экрана
  • Бюджет задержки для торговли по ходу игры
  • Ловушка 0.99 / 0.01
  • Код: подписка на стакан игры и реакция на него

Почему на спортивных рынках можно торговать

Sports markets закрываются в определенные временные рамки (от часов до дней), имеют public live data и привлекают непрерывный order flow во время игр. Все три фактора необходимы для tradeable market - political markets не имеют «определенного временного окна», weather markets не имеют «непрерывного flow», а obscure tournaments не имеют «public live data».

Пул trader-ов на sports markets также более разнообразен, чем, скажем, на election markets. Casual sports bettors оценивают события эмоционально; informed traders в течение игры корректируют цену к fair value. Разница между ними и есть bot edge.

Распределение volume неравномерно: в NFL Sunday через Полимаркет sports markets проходит сотни миллионов долларов; матч Saudi Pro League во вторник вечером может дать меньше $50k. Размер strategy нужно подбирать под то, где реально идет action.

До матча или в ходе матча (разные боты)

Два принципиально разных bot design.

Ловец линий до матча: сканирует только что открывшиеся рынки, находит неверно оценённые линии относительно вашей модели или относительно котировки на более «остром» рынке и размещает покупку FOK. Удерживает позицию до начала игры, иногда до расчёта. Скорость: минуты, а не секунды. Преимущество: модель плюс поиск лучшей линии.

Микроструктура по ходу матча: подписывается на WebSocket стакана заявок текущей игры, реагирует на сигналы дисбаланса и события счёта в течение секунд. Скорость: секунды, а не минуты. Преимущество: задержка плюс чтение потока заявок.

У этих двух подходов почти нет общего code. У них разные risk profiles, разные источники data, разные exit strategies. Bot, который пытается делать и то и другое, в итоге не делает хорошо ни одно; выберите один.

Подтверждённые tag ID (745 NBA, 864 Tennis)

Production tag IDs, подтвержденные в мае 2026 для основных спортивных категорий. Используйте их для эффективной фильтрации вызовов /events.

Вид спорта / лигаTag IDTag slugПримечания
NBA745nbaнаибольший объём окт-июнь
NFL450nflпик вс/пн сен-фев
Tennis (весь)864tennisкруглый год, по календарю турниров
Soccer (общий)1059soccerкомбинируйте с под-тегами ниже
EPL739epl
UCL2186uefa-champions-league
Esports (весь)702esportsLoL+CS2+Valorant+Dota
MLB1245mlbпик апр-окт
NHL823nhlпик окт-июнь

Tag IDs стабильны из года в год. Новые tags добавляются (Saudi Pro League, IPL), но старым tags не присваивают новые номера.

Источники data: ESPN, official APIs, on-screen

Для традиционных sports бесплатный ESPN scoreboard API покрывает все необходимое: scores, period/clock, win-probability, иногда shot location. API key не нужен; ограничение действует только на уровне IP. Шаблон endpoint: https://site.api.espn.com/apis/site/v2/sports/<sport>/<league>/scoreboard.

Для esports у ESPN нет покрытия. Варианты: PandaScore ($30-60/mo, industry standard), HLTV (только CS2, можно scrape, без API), Liquipedia (поддерживается community, можно scrape, но медленнее cadence обновления).

On-screen feeds (платить за TV stream и читать scorebug через OCR) работают, но operationally тяжелые. Рекомендуются только если у вас есть strategy, требующая обновлений быстрее 3 секунд для sport, у которого нет real-time API.

Бюджет задержки для торговли по ходу игры

Сквозной бюджет задержки для реактивного бота, торгующего по ходу игры.

  • Происходит результативное событие: t=0
  • Источник отражает событие: t+3-15с (ESPN: ~10с; PandaScore: ~3с)
  • Ваш бот читает поток: t+10-16с
  • Бот принимает решение: +50мс
  • Ордер FOK размещён: +200-500мс
  • Исполнение в CLOB: +300-1000мс (сеть + матчинг)

Итого: 11-17 секунд. Самые быстрые professional firms достигают 3-5 секунд end-to-end с paid premium feeds и co-located VPS. Retail bots, работающие на стандартных hosts и бесплатном ESPN, находятся в более медленном диапазоне.

Strategies, которым нужны sub-5s, не подходят для retail. Strategies, которые работают в окне 10-17s: line-catching after a score, fading overreactions, late-game certainty plays.

Ловушка 0.99 / 0.01

Самый частый failure in-play sports bot: покупка heavy favorite по 0.99 за минуту до конца в надежде на легкие +1¢. Почему это не работает, есть три причины.

Во-первых, 1% implied probability у underdog - это не ноль: поздние comebacks случаются с ненулевой частотой. Win с вероятностью 99.5%, сыгранный 200 раз, даст один loss на весь размер position.

Во-вторых, spread на 0.99/0.01 означает, что вы платите 99¢ за share, зарабатываете 1¢ при успехе и теряете 99¢ при редком reversal. Risk-reward здесь жестокий.

В-третьих, bot, использующий GTC sell на 0.999, почти никогда не исполнится - покупателей по этой цене нет. Position дотягивается до resolution. Если она выигрывает, вы получили 1¢. Если случается reversal, вы теряете 99¢.

Эта ловушка - реальные деньги, потерянные builders, которые не просчитали math. Держитесь подальше от markets с ценой 0.95+ unless ваша strategy специально построена под redemption-arbitrage profile.

Код: подписка на книгу матча и реакция

Образец: подпишитесь на WebSocket конкретной игры NBA, логируйте обновления стакана и отправляйте FOK при сигнале дисбаланса.

import websocket, json
THRESHOLD = 0.5  # imbalance level to trigger

def on_message(ws, message):
    msg = json.loads(message)
    if msg.get("event_type") != "book": return
    bids = msg.get("bids", [])
    asks = msg.get("asks", [])
    bid_depth = sum(float(b["price"]) * float(b["size"]) for b in bids[:5])
    ask_depth = sum(float(a["price"]) * float(a["size"]) for a in asks[:5])
    total = bid_depth + ask_depth
    if total < 100: return  # too illiquid
    imb = (bid_depth - ask_depth) / total
    if abs(imb) > THRESHOLD:
        print(f"signal imb={imb:.2f} bid={bid_depth:.0f} ask={ask_depth:.0f}")
        # fire FOK here

ws = websocket.WebSocketApp(
    "wss://ws-subscriptions-clob.polymarket.com/ws/market",
    on_open=lambda ws: ws.send(json.dumps({"type":"Market","markets":["<CONDITION_ID>"]})),
    on_message=on_message
)
ws.run_forever()

Дополнения для продакшна: пауза между срабатываниями, лимит инвентаря на токен, остановка при устаревшей книге (нет сообщений 30 с).

Часто задаваемые вопросы

Какие sports tags наиболее активны на Полимаркет?
NBA (tag_id 745), Tennis (tag_id 864) и soccer (в зависимости от competition) лидируют по 24h volume в свои сезоны. Мы подтверждали NBA и Tennis tag IDs в production - остальные следует проверять через endpoint gamma /tags, прежде чем полагаться на них.
Можно ли прибыльно ботить in-game sports markets?
Возможно, но это сложно. Edge реален (live scoreline часто mispriced на 30-90 секунд), но другие bots тоже смотрят за рынком. Лучшие результаты, которые мы видели, дают сочетания быстрого live-score data source с простыми правилами («opponent scored, market hasnt moved yet, buy»). Pure stat-arb без data source проигрывает более быстрым конкурентам.
Где взять live sports data?
ESPN.com имеет unofficial JSON endpoints, которые возвращают live scores - этого достаточно для многих strategies. Official APIs (NBA Stats API, NFL public endpoints) надежнее, но медленнее. Twitter accounts beat reporters дают text, но требуют LLM parsing. Ни один из вариантов не является HFT-grade; все они «достаточно быстрые» для retail.
Что такое ловушка 0.99 / 0.01?
Когда sports market стоит 99 cents YES (очень вероятно победит), почти не остается upside и move на 1 cent может стереть ожидаемую прибыль за месяц. Многие bots попадаются, покупая по 0.99 в погоне за последним центом и получают удар, когда неожиданный event снижает цену до 0.85. Жесткое правило: не покупайте выше примерно 0.95, если math expected value не безупречен.
Как Полимаркет sports сравнивается с traditional sportsbooks?
Нет house edge на spread (против примерно 5-10% vig у FanDuel/DraftKings), но liquidity тоньше, а spreads могут быть шире. Полимаркет особенно хорош для events, которые traditional books недооценивают - international tournaments, esports, niche markets. Для mainstream NFL/NBA traditional books более liquid, но дороже по vig.
Может ли мой bot торговать сразу на нескольких sports markets?
Да - и так и нужно делать. Sports microstructure лучше всего работает как portfolio из 5-20 одновременных games. Per-game position cap (например, 50 USD), portfolio cap (например, 500 USD) и uncorrelated exposure across games. Концентрация на одной игре максимизирует variance.