[ blog · comparison ]11 min read

Polymarket vs Kalshi API: руководство разработчика бок о бок (Auth, CLOB, WebSocket, исторические данные)

Sarah ChoyОпубликовано 3 мая 2026 г.11 мин чтения
Polymarket vs Kalshi API: руководство разработчика бок о бок (Auth, CLOB, WebSocket, исторические данные)

Polymarket и Kalshi реализуют один и тот же примитив — yes/no контракты на CLOB — через совершенно разные API. Один требует EIP-712-подписей и кошелька Polygon; другой — это REST-эндпоинт с опциональным FIX. Если вы строите forecasting-агента, арбитражного бота или монитор smart-money, вот руководство бок о бок, которое уже должно было существовать.

Кратко

  • Polymarket использует EIP-712-подписанные ордера, отправляемые в свой CLOB на Polygon — нужны онбординг кошелька и плата за газ.
  • Kalshi использует стандартную REST + WebSocket-авторизацию (email/пароль → токен), плюс опциональный FIX-шлюз для институциональных пользователей.
  • Обе отдают стакан, сделки и исторические данные, но схема и семантика разрешения различаются достаточно, чтобы 'унифицированные' библиотеки были самой запрашиваемой темой HN Show HN в этом уголке crypto/quant-инструментария.
  • Кросс-площадочный арбитраж между эквивалентными контрактами — самый частый паттерн сборки (10+ open-source ботов на GitHub).
  • API Pick Prediction Markets Search оборачивает обе площадки в один POST-эндпоинт для discovery контрактов на естественном языке — 50 кредитов за вызов, ранжированные семантические результаты.

Почему существует эта статья

Если вы хоть сколько-то строили на prediction-markets, вы знаете каноническую просьбу: 'Хочу запрашивать Polymarket и Kalshi из одного Python-скрипта и получать обратно чистый список совпадающих контрактов.' Тред комментариев HN на каждом prediction-market Show HN неизбежно сходится на этом — есть повторяющийся паттерн постов "CCXT for prediction markets", указывающий, что спрос существует, а существующие решения не вполне попадают в цель.

Сложность реальна. Две площадки решают один примитив — бинарные "yes/no" контракты на central limit order book — но отдают их через драматически разные API. Вот рабочий взгляд разработчика на обе, бок о бок, с кодом, который вам реально нужен.

Две площадки, две архитектуры

Polymarket

  • Сеть: Polygon (расчёты в USDC.e)
  • Авторизация: подпись типизированных данных EIP-712 приватным ключом кошелька; никакого традиционного bearer-токена
  • Выставление ордеров: подписанный ордер отправляется в CLOB API; газ оплачивает Polymarket через мета-транзакции
  • Discovery рынков: Gamma API (REST + JSON) для просмотра активных рынков, плюс отдельный CLOB API для живого стакана
  • Данные в реальном времени: WebSocket-стрим для обновлений стакана и сделок
  • Исторические данные: REST-эндпоинты для сделок; дневные снапшоты скачиваются отдельно

Kalshi

  • Расчёты: USD через ACH и wire (нужен банк США)
  • Авторизация: email + пароль → bearer-токен, ИЛИ API-ключ (институциональный)
  • Выставление ордеров: стандартный авторизованный REST POST на /portfolio/orders
  • Discovery рынков: REST-эндпоинты для событий, рынков и серий; чистая схема
  • Данные в реальном времени: WebSocket и FIX (институциональный) для исполнений, стакана, тикера
  • Исторические данные: REST-эндпоинты для сделок; данные о разрешении рынка и расчётах прямолинейны

Бок о бок

Архитектуры меняются. Сверьте rate-limit, комиссии и требования KYC с документацией каждой площадки до интеграции.
PolymarketKalshiAPI Pick
АвторизацияEIP-712-подписанные ордера + кошелёк PolygonEmail/пароль → bearer; или API-ключЗаголовок x-api-key (read-only discovery)
РасчётыUSDC на PolygonUSD банковский перевод (только США)n/a (только поиск)
Легальность в СШАГеоблокировка (не США)Регулируется CFTCn/a
Реальное времяWebSocketWebSocket + FIXn/a
ИсторическиеREST сделки + снапшотыREST сделки + расчётыПоиск возвращает ссылки на источник
Лучший сценарийCrypto-native, глобальные рынки, отслеживание smart-moneyРегулируемые в США, выборы и экономикаКросс-площадочный discovery контрактов

Рабочий код: hello-world на каждой

Polymarket: список активных рынков

import requests

# Gamma API — no auth required for browsing
r = requests.get(
    "https://gamma-api.polymarket.com/markets",
    params={"active": "true", "limit": 25, "order": "volume"},
)
markets = r.json()
for m in markets[:5]:
    print(m["question"], "→", m["outcomePrices"])

Polymarket: выставление подписанного ордера (набросок)

# Full order placement requires py-order-utils + a Polygon wallet
# This is the structural sketch — not runnable without wallet setup
from py_order_utils.builders import OrderBuilder
from py_order_utils.signer import Signer

signer = Signer(private_key="0xYOUR_PRIVATE_KEY")
builder = OrderBuilder(
    exchange_address="0x...",
    chain_id=137,
    signer=signer,
)

order = builder.build_signed_order({
    "maker": signer.address(),
    "tokenId": "...",        # the yes/no token ID for the market
    "makerAmount": "1000000", # USDC.e in atomic units
    "takerAmount": "1500000",
    "side": "BUY",
    "feeRateBps": 0,
    "nonce": 0,
    "expiration": 0,         # 0 = no expiry
})

requests.post(
    "https://clob.polymarket.com/order",
    json={"order": order, "owner": signer.address(), "orderType": "GTC"},
)

Kalshi: вход и выставление лимитного ордера

import requests

# Step 1 — login
r = requests.post(
    "https://api.elections.kalshi.com/trade-api/v2/login",
    json={"email": "you@example.com", "password": "..."},
).json()
token = r["token"]
headers = {"Authorization": f"Bearer {token}"}

# Step 2 — list markets in an event
r = requests.get(
    "https://api.elections.kalshi.com/trade-api/v2/markets",
    params={"event_ticker": "POTUS-2028", "limit": 25},
    headers=headers,
).json()
print(r["markets"][:5])

# Step 3 — place a limit buy on the "Yes" side at 60 cents
r = requests.post(
    "https://api.elections.kalshi.com/trade-api/v2/portfolio/orders",
    headers=headers,
    json={
        "ticker": "POTUS-2028-DEM",
        "type": "limit",
        "action": "buy",
        "side": "yes",
        "count": 100,            # 100 contracts
        "yes_price": 60,         # 60 cents
        "client_order_id": "abc123",
    },
)
print(r.json())

API Pick: discovery на естественном языке по обеим

import requests

r = requests.post(
    "https://www.apipick.com/api/search/prediction-markets",
    headers={"x-api-key": "pk_yourkey"},
    json={"query": "Federal Reserve rate cuts before end of 2026"},
)
for hit in r.json()["results"][:5]:
    print(hit["title"], "@", hit["venue"], "→", hit["url"])

# Returns ranked matches across Polymarket + Kalshi.
# 50 credits per call (~$0.05), only on HTTP 200.

Три продакшен-паттерна, которые реально работают

1. Кросс-площадочный арбитражный бот

Самый частый паттерн на GitHub: курируемый whitelist "этот контракт Polymarket разрешается по тому же исходу, что и этот контракт Kalshi". Бот следит за обоими стаканами, считает подразумеваемую вероятность и занимает позицию, когда спред пересекает порог. Примеры: ImMike/polymarket-arbitrage и realfishsam/prediction-market-arbitrage-bot.

Сложная часть — whitelist. "Will the Fed cut by 25 bps at the December meeting" для человека выглядит одинаково, но источники разрешения и точная формулировка различаются; автоматический matcher ошибается достаточно часто, чтобы реальные боты использовали сопоставления, курируемые человеком.

2. Монитор smart-money

Киты на Polymarket видны on-chain. Монитор следит за Polygon на крупный поток ордеров по конкретным рынкам, выводит большие позиции и помечает резкие движения цены до того, как заголовки попадут в news-API. Совместите с News Search, чтобы подтвердить, движение ли это, вызванное новостями, или чистая спекуляция.

3. Forecasting-фид для LLM-агента

Подтягивание текущих цен Polymarket / Kalshi в контекст LLM-агента позволяет модели давать ответы, обоснованные вероятностью: "текущие ставочные рынки подразумевают ~65% вероятность X". Это и есть сценарий discovery, который покрывает API Pick — по вопросу на естественном языке от агента вернуть ранжированные контракты, чтобы агент мог процитировать цену в своём ответе.

Частые подводные камни (собрано из комментариев HN)

  • Подпись EIP-712 в Polymarket — подпись ордера детерминирована, но ошибки инструментария часты. Используйте py-order-utils, а не свою реализацию. Большинство ранних потерь ботов — от рассогласований подписи, которые API молча отклоняет.
  • Rate-limit Kalshi — задокументирован как 100 запросов/сек, но ниже для некоторых эндпоинтов в загруженные событийные дни (ночи выборов, FOMC). Встройте retry-with-backoff в свой клиент.
  • Скачки газа Polymarket — газ Polygon может подскочить в дни большого объёма. Polymarket субсидирует большую часть выставления ордеров через мета-транзакции, но расчёты и вывод средств оплачивает пользователь. Учитывайте это в расчётах P&L.
  • Рассогласования расчётов — явные эквиваленты иногда разрешаются по-разному. Всегда читайте пункты об источнике разрешения обоих контрактов до парной торговли.
  • Разрывы WebSocket — у обеих площадок бывают рутинные сбои WebSocket. Логика переподключения с воспроизведением по sequence-number необсуждаема для любого продакшен-бота.

Выбираем быстро

Лучший для: регулируемая в США торговля
Kalshi. Надзор CFTC, расчёты в USD, без крипто-онбординга. Правильный ответ для любого продукта, нацеленного на пользователей США.
Лучший для: crypto-native, глобальное, отслеживание smart-money
Polymarket. Polygon-native означает, что on-chain поток ордеров наблюдаем; более широкое покрытие событий, особенно в геополитике, крипто и развлечениях.
Лучший для: кросс-площадочный арбитраж
Обе, в паре. Сначала постройте бота против одной (обычно Kalshi за более чистую авторизацию); добавьте Polymarket, когда логика сопоставления надёжна.
Лучший для: discovery контрактов на естественном языке в LLM-агенте
API Pick Prediction Markets Search. Один POST, возвращает ранжированные совпадения по обеим площадкам, 50 кредитов за вызов, только за успех. Попробовать →

Куда это движется

Prediction-markets получают необычно много внимания мейнстрима прямо сейчас: большие объёмы вокруг выборов в США, событий FOMC, спорта и вопросов AI-takeoff; более широкие интеграции с новостными сайтами, выводящими подразумеваемые вероятности; и волна инструментария для разработчиков (Show HN, GitHub-репозитории), сходящаяся на одной теме — 'кто-нибудь должен написать CCXT для prediction-markets.'

Мы не думаем, что унифицированная библиотека исполнения в стиле CCXT — правильная форма. Различия в авторизации, расчётах и регуляторном режиме слишком глубоки, чтобы абстрагировать их чисто, не вводя пользователя в заблуждение. Но проблема discovery — по вопросу на естественном языке найти уже существующие контракты — решаема семантическим поиском, и именно это делает API Pick Prediction Markets Search. Найдите контракт; выставьте ордер на площадке.

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

У какой площадки больше контрактов?

На момент написания обе листят десятки тысяч активных рынков. Polymarket уклоняется в crypto-native и глобальное (политика, спорт, крипто, текущие события); Kalshi регулируется CFTC и ориентирован на США (выборы, экономика, погода, спорт). Распределение объёма зависит от категории — по выборам в США Kalshi обычно глубже; по глобальной политике и crypto-native вопросам — Polymarket.

Почему open-source 'унифицированные' библиотеки постоянно всплывают на Show HN?

Потому что спрос существует, а никто не решил это хорошо. Посты Show HN вроде 'Open-source library to unify Polymarket and Kalshi APIs' и 'dr-manhattan — CCXT for Prediction Markets' — повторяющиеся паттерны. Сложность — в сопоставлении эквивалентных контрактов (один исход, разная формулировка) и согласовании семантики расчётов. Библиотеки обычно справляются с обёрткой авторизации, но останавливаются, не доходя до сопоставления контрактов.

Как сделать базовый кросс-площадочный арбитраж?

Концептуально: найти два контракта, разрешающихся по одному исходу на разных площадках, проверить подразумеваемые вероятности, взять более дорогую сторону 'No' и более дешёвую сторону 'Yes', держать до разрешения. На практике трение — в исполнении: плата за газ Polymarket, USD-фондирование Kalshi, частичные исполнения и проблема сопоставления выше. Большинство живых арбитражных ботов на GitHub работают по курируемому whitelist сопоставлений пар контрактов, а не находят их автоматически.

Легален ли Polymarket в США?

Polymarket в настоящее время не авторизован для пользователей США; доступ геоблокируется. Kalshi регулируется CFTC и легален в США. Если вы строите продукт для пользователей США, Kalshi — единственный вариант. Если строите глобально, Polymarket несёт более широкое покрытие рынков.

Где API Pick вписывается в этот стек?

API Pick Prediction Markets Search решает проблему 'discovery': по вопросу на естественном языке (например, 'Fed cuts rates by year-end') он возвращает ранжированные семантические совпадения по контрактам Polymarket и Kalshi одним POST-вызовом. Мы не заменяем API исполнения ордеров — для выставления ордеров вы по-прежнему идёте к каждой площадке напрямую. Мы делаем поиск нужного рынка простым.

API, использованные в статье

Sarah Choy
Автор
Sarah Choy
CEO, API Pick

Сара Чой — CEO API Pick. Пишет о продакшен-готовых API для AI-агентов и LLM-воркфлоу.