[ blog · comparison ]11 min read

API Polymarket vs Kalshi: przewodnik porównawczy dla programistów (auth, CLOB, WebSocket, dane historyczne)

Sarah ChoyOpublikowano 3 maja 202611 min czytania
API Polymarket vs Kalshi: przewodnik porównawczy dla programistów (auth, CLOB, WebSocket, dane historyczne)

Polymarket i Kalshi realizują ten sam prymityw — kontrakty tak/nie na CLOB — przez zupełnie różne API. Jedno wymaga podpisów EIP-712 i portfela Polygon; drugie to endpoint REST z opcjonalnym FIX. Jeśli budujesz agenta prognozującego, bota arbitrażowego lub monitor smart money, oto przewodnik porównawczy, który już powinien istnieć.

TL;DR

  • Polymarket używa zleceń podpisanych EIP-712 wysyłanych do swojego CLOB na Polygon — obowiązują onboarding portfela i opłaty za gas.
  • Kalshi używa standardowej autoryzacji REST + WebSocket (e-mail/hasło → token), plus opcjonalna bramka FIX dla użytkowników instytucjonalnych.
  • Oba udostępniają księgę zleceń, transakcje i dane historyczne, ale schemat i semantyka rozliczeń różnią się na tyle, że 'ujednolicone' biblioteki są najczęściej proszonym tematem Show HN w tym zakątku narzędzi crypto/quant.
  • Arbitraż międzyrynkowy na równoważnych kontraktach to najczęstszy wzorzec budowy (ponad 10 botów open-source na GitHubie).
  • API Pick Prediction Markets Search opakowuje oba rynki w jeden endpoint POST do odkrywania kontraktów w języku naturalnym — 50 kredytów za wywołanie, posortowane wyniki semantyczne.

Dlaczego ten artykuł istnieje

Jeśli spędziłeś jakikolwiek czas budując na rynkach predykcyjnych, znasz kanoniczną prośbę: 'chcę odpytać Polymarket i Kalshi z tego samego skryptu w Pythonie i otrzymać czystą listę pasujących kontraktów.' Wątek komentarzy na HN przy każdym Show HN o rynkach predykcyjnych nieuchronnie zbiega się do tego — istnieje powracający wzorzec postów "CCXT dla rynków predykcyjnych", co wskazuje, że popyt istnieje, a obecne rozwiązania nie do końca trafiają w sedno.

Trudność jest realna. Oba rynki rozwiązują ten sam prymityw — binarne kontrakty "tak/nie" na centralnej księdze zleceń limitowanych — ale udostępniają je przez dramatycznie różne API. Oto działające, programistyczne spojrzenie na oba, obok siebie, z kodem, którego naprawdę potrzebujesz.

Dwa rynki, dwie architektury

Polymarket

  • Łańcuch: Polygon (rozliczenia w USDC.e)
  • Auth: podpisywanie typowanych danych EIP-712 kluczem prywatnym portfela; brak tradycyjnego tokenu bearer
  • Składanie zleceń: podpisane zlecenie wysłane do API CLOB; gas opłacany przez Polymarket via meta-transakcje
  • Odkrywanie rynków: Gamma API (REST + JSON) do przeglądania aktywnych rynków, plus osobne API CLOB dla księgi zleceń na żywo
  • Dane w czasie rzeczywistym: strumień WebSocket dla aktualizacji księgi zleceń i transakcji
  • Dane historyczne: endpointy REST dla transakcji; dzienne snapshoty do pobrania osobno

Kalshi

  • Rozliczenie: USD przez ACH i przelew (wymagany bank w USA)
  • Auth: e-mail + hasło → token bearer, LUB klucz API (instytucjonalny)
  • Składanie zleceń: standardowy uwierzytelniony POST REST do /portfolio/orders
  • Odkrywanie rynków: endpointy REST dla zdarzeń, rynków i serii; czysty schemat
  • Dane w czasie rzeczywistym: WebSocket i FIX (instytucjonalny) dla realizacji, księgi zleceń, tickera
  • Dane historyczne: endpointy REST dla transakcji; dane rozstrzygnięcia i rozliczenia rynków proste

Obok siebie

Architektury się zmieniają. Zweryfikuj limity zapytań, opłaty i wymogi KYC w dokumentacji każdego rynku przed integracją.
PolymarketKalshiAPI Pick
AuthZlecenia podpisane EIP-712 + portfel PolygonE-mail/hasło → bearer; lub klucz APINagłówek x-api-key (odkrywanie tylko do odczytu)
RozliczenieUSDC na PolygonPrzelew bankowy w USD (tylko USA)nd. (tylko wyszukiwanie)
Legalność w USAGeofenced (nie USA)Regulowany przez CFTCnd.
Czas rzeczywistyWebSocketWebSocket + FIXnd.
HistoryczneTransakcje REST + snapshotyTransakcje REST + rozliczenieWyszukiwanie zwraca linki do źródła
Najlepsze dopasowanieCrypto-native, rynki globalne, śledzenie smart moneyRegulowany w USA, wybory i ekonomiaOdkrywanie kontraktów międzyrynkowe

Działający kod: hello-world na każdym

Polymarket: lista aktywnych rynków

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: złóż podpisane zlecenie (szkic)

# 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: zaloguj się i złóż zlecenie limitowane

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: odkrywanie w języku naturalnym na obu

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.

Trzy wzorce produkcyjne, które naprawdę działają

1. Bot arbitrażu międzyrynkowego

Najczęstszy wzorzec na GitHubie: ręcznie wyselekcjonowana biała lista "ten kontrakt Polymarket rozlicza się na tym samym wyniku, co ten kontrakt Kalshi". Bot obserwuje obie księgi, oblicza prawdopodobieństwo implikowane i zajmuje pozycję, gdy spread przekroczy próg. Przykłady: ImMike/polymarket-arbitrage oraz realfishsam/prediction-market-arbitrage-bot.

Trudną częścią jest biała lista. "Czy Fed obniży o 25 pb na grudniowym posiedzeniu" dla człowieka wygląda tak samo, ale źródła rozstrzygnięcia i dokładne sformułowanie się różnią; automatyczny matcher myli się na tyle często, że prawdziwe boty używają mapowań tworzonych ręcznie.

2. Monitor smart money

Wieloryby na Polymarket są widoczne on-chain. Monitor obserwuje Polygon pod kątem dużego przepływu zleceń na konkretnych rynkach, wydobywa duże pozycje i sygnalizuje szybkie ruchy cen, zanim nagłówki dotrą do API z wiadomościami. Połącz z News Search, aby potwierdzić, czy pozorny ruch jest napędzany wiadomościami, czy to czysta spekulacja.

3. Kanał prognostyczny dla agenta LLM

Wciągnięcie aktualnych cen Polymarket / Kalshi do kontekstu agenta LLM pozwala modelowi udzielać odpowiedzi opartych na prawdopodobieństwie: "obecne rynki zakładów implikują ~65% prawdopodobieństwa X". To jest przypadek użycia odkrywania, który pokrywa API Pick — mając pytanie w języku naturalnym od agenta, zwróć posortowane kontrakty, aby agent mógł zacytować cenę w swojej odpowiedzi.

Częste pułapki (zebrane z komentarzy HN)

  • Podpisywanie EIP-712 Polymarketu — podpis zlecenia jest deterministyczny, ale błędy narzędziowe są częste. Używaj py-order-utils, zamiast pisać własne. Większość wczesnych strat botów wynika z niezgodności podpisów, które API po cichu odrzuca.
  • Limity zapytań Kalshi — udokumentowane na 100 req/s, ale niższe dla niektórych endpointów w ruchliwe dni zdarzeń (wieczory wyborcze, FOMC). Wbuduj w klienta ponawianie z backoffem.
  • Skoki gas Polymarketu — gas na Polygon może podskoczyć w dni dużego wolumenu. Polymarket subsydiuje większość składania zleceń via meta-transakcje, ale rozliczenie i wypłatę opłaca użytkownik. Uwzględnij to w obliczeniach P&L.
  • Niezgodności rozliczeń — pozorne równoważniki czasem rozliczają się inaczej. Zawsze czytaj klauzule źródła rozstrzygnięcia obu kontraktów przed handlem parami.
  • Rozłączenia WebSocket — oba rynki mają rutynowe zaniki WebSocket. Logika ponownego łączenia z odtwarzaniem numerów sekwencji jest nienegocjowalna dla każdego bota produkcyjnego.

Szybki wybór

Najlepsze dla: handlu regulowanego w USA
Kalshi. Nadzór CFTC, rozliczenie w USD, brak onboardingu crypto. Właściwa odpowiedź dla każdego produktu skierowanego do użytkowników z USA.
Najlepsze dla: crypto-native, globalne, śledzenie smart money
Polymarket. Bycie Polygon-native oznacza, że przepływ zleceń on-chain jest obserwowalny; szerszy zasięg zdarzeń, zwłaszcza w geopolityce, krypto i rozrywce.
Najlepsze dla: arbitrażu międzyrynkowego
Oba, w parze. Zbuduj bota najpierw na jednym (zwykle Kalshi ze względu na czystszą autoryzację); dodaj Polymarket, gdy twoja logika dopasowania będzie solidna.
Najlepsze dla: odkrywania kontraktów w języku naturalnym w agencie LLM
API Pick Prediction Markets Search. Jeden POST, zwraca posortowane dopasowania na obu rynkach, 50 kredytów za wywołanie, tylko przy sukcesie. Wypróbuj →

Dokąd to zmierza

Rynki predykcyjne otrzymują obecnie niezwykłą ilość uwagi mainstreamu: większe wolumeny wokół wyborów w USA, zdarzeń FOMC, sportu i pytań o AI-takeoff; szersze integracje ze stronami z wiadomościami, które pokazują prawdopodobieństwa implikowane; oraz fala narzędzi programistycznych (Show HN-y, repozytoria GitHub), która zbiega się do tego samego tematu — 'ktoś powinien napisać CCXT dla rynków predykcyjnych.'

Nie sądzimy, że biblioteka ujednoliconej realizacji w stylu CCXT to właściwa forma. Różnice w autoryzacji, rozliczeniu i reżimie regulacyjnym są zbyt głębokie, by je czysto wyabstrahować bez okłamywania użytkownika. Ale problem odkrywania — mając pytanie w języku naturalnym, znaleźć kontrakty, które już istnieją — jest rozwiązywalny dzięki wyszukiwaniu semantycznemu, i to właśnie robi API Pick Prediction Markets Search. Znajdź kontrakt; złóż zlecenie na rynku.

Najczęściej zadawane pytania

Który rynek ma więcej kontraktów?

W chwili pisania oba wymieniają dziesiątki tysięcy aktywnych rynków. Polymarket skłania się ku crypto-native i globalności (polityka, sport, krypto, bieżące wydarzenia); Kalshi jest regulowany przez CFTC i skupiony na USA (wybory, ekonomia, pogoda, sport). Rozkład wolumenu różni się w zależności od kategorii — dla wyborów w USA Kalshi jest zwykle głębszy; dla polityki globalnej i pytań crypto-native jest nim Polymarket.

Dlaczego open-source'owe biblioteki 'ujednolicone' wciąż pojawiają się na Show HN?

Bo popyt istnieje, a nikt nie rozwiązał tego dobrze. Posty na Show HN takie jak 'Open-source library to unify Polymarket and Kalshi APIs' oraz 'dr-manhattan — CCXT for Prediction Markets' to powracające wzorce. Wyzwaniem jest dopasowanie równoważnych kontraktów (ten sam wynik, inne sformułowanie) i pogodzenie semantyki rozliczeń. Biblioteki zwykle dopinają wrapper autoryzacji, ale zatrzymują się przed dopasowywaniem kontraktów.

Jak zrobić podstawowy arbitraż międzyrynkowy?

Koncepcyjnie: znajdź dwa kontrakty rozliczające się na tym samym wyniku na różnych rynkach, sprawdź prawdopodobieństwa implikowane, zajmij droższą stronę 'No' i tańszą stronę 'Yes', trzymaj do rozliczenia. W praktyce tarciem jest realizacja: opłaty za gas Polymarketu, finansowanie w USD Kalshi, częściowe realizacje i problem dopasowania powyżej. Większość żywych botów arbitrażowych na GitHubie działa na ręcznie wyselekcjonowanej białej liście mapowań par kontraktów, zamiast odkrywać je automatycznie.

Czy Polymarket jest legalny w USA?

Polymarket nie jest obecnie autoryzowany dla użytkowników z USA; dostęp jest geofenced. Kalshi jest regulowany przez CFTC i legalny w USA. Jeśli budujesz produkt dla użytkowników z USA, Kalshi to jedyna opcja. Jeśli budujesz globalnie, Polymarket oferuje szerszy zasięg rynkowy.

Gdzie API Pick pasuje w tym stacku?

API Pick Prediction Markets Search rozwiązuje problem 'odkrywania': mając pytanie w języku naturalnym (np. 'Fed obniża stopy przed końcem roku'), zwraca posortowane semantyczne dopasowania w kontraktach Polymarket i Kalshi w jednym wywołaniu POST. Nie zastępujemy API realizacji zleceń — aby składać zlecenia, nadal idziesz bezpośrednio na każdy rynek. Sprawiamy, że znalezienie właściwego rynku jest proste.

API użyte w tym artykule

Sarah Choy
Autor
Sarah Choy
CEO, API Pick

Sarah Choy jest CEO API Pick. Pisze o budowaniu produkcyjnych API dla agentów AI i przepływów pracy z LLM.