Polymarket Bot Tutorial · Rozdział 16 z 32

Statistical arbitrage na Polymarket: pary cross-market (skorelowane zdarzenia), spready Polymarket-vs-Kalshi, mean reversion oraz jak dobierać wielkość pozycji stat-arb, gdy rynki ostatecznie się rozliczają.

Co obejmuje ten rozdział

Statistical arbitrage na Polymarket polega na wykorzystywaniu przejściowych nieprawidłowości cenowych między skorelowanymi rynkami — tym samym zdarzeniem na Polymarket i Kalshi albo powiązanymi rynkami wewnątrz samego Polymarket. Przewagi są niewielkie (zwykle 1-3 centy) i operacyjnie kruche. Ten rozdział uczciwie pokazuje, co działa, co nie działa, oraz ryzyko wykonania wieloetapowego, które zabija większość prób.

Cross-market statistical arbitrage wykorzystuje przejściowe niespójności cenowe między Polymarket i Kalshi, Polymarket i Manifold albo między skorelowanymi rynkami wewnątrz Polymarket. Przewagi są niewielkie (zwykle 1-3 centy) i wymagają szybkiej realizacji po obu stronach. Ten rozdział to uczciwy playbook, łącznie z operacyjną złożonością, która zabija większość prób.

To jest rozdział 16 z naszej 32-częściowej serii o budowie Polymarket trading bota. Temat omawiamy dogłębnie w sekcjach poniżej. Treść dla każdej sekcji jest pisana i publikowana rozdział po rozdziale; odpowiedzi w FAQ i referencje są już kompletne i odzwierciedlają production experience z działania naszego własnego tradera.

  • Co oznacza stat-arb na prediction markets
  • Przykłady spreadów Polymarket-vs-Kalshi
  • Pary wewnątrz Polymarket (skorelowane zdarzenia)
  • Mean reversion vs continuation trendu
  • Dobór wielkości pozycji dla rynków rozliczających się, a nie wieczystych
  • Ryzyko: divergence aż do rozliczenia
  • Code: pairs monitor i threshold-trigger

Co oznacza stat-arb na prediction markets

Statistical arbitrage na prediction markets oznacza trading spreadu między dwoma rynkami, które powinny być wyceniane spójnie. Na Polymarket najczęściej spotyka się trzy warianty.

  • Cross-venue: to samo zdarzenie na Polymarket i Kalshi (albo Manifold, PredictIt). Ceny powinny się zbiegać; w praktyce rozjeżdżają się o 2-5 centów.
  • Same-event-pair: parent vs suma legs w rynkach NegRisk multi-outcome. Invariant sum-to-1 pozwala arbitrażować, gdy suma legs spada poniżej 1.0.
  • Correlated-event-pair: dwa rynki dotyczące powiązanych wyników (np. „Trump president on Jan 1” vs „Trump president on Mar 1”). Powinny być wyceniane w granicach 2-3 centów od siebie.

Przewagi są małe. Złożoność operacyjna jest realna. Większość prób kończy się na execution, a nie w teorii.

Przykłady spreadów Polymarket-vs-Kalshi

Z obserwacji z lat 2025-26 wynika, że Polymarket i Kalshi notują te same duże wydarzenia w USA, ale regularnie wyceniają je z różnicą 1-4 centów. Ta luka istnieje z powodów strukturalnych, które trzeba uwzględnić w każdym arb.

Strukturalne czynniki:

  • Fee asymmetry: Kalshi pobiera 4-7% od wygrywających transakcji (zależnie od rynku); Polymarket pobiera 0 fee po stronie taker. Matematyka arbitrażu musi odjąć „ugryzienie” Kalshi.
  • Settlement risk premium: gdy rozliczenie rynku jest niejednoznaczne, UMA na jednej giełdzie może rozstrzygnąć inaczej niż sędziowie na drugiej. Rynek wycenia to ryzyko.
  • Trader population: Polymarket ma zwykle młodszych, bardziej crypto-native traderów; Kalshi przyciąga bardziej profesjonalnych / hedge uczestników. Systematycznie nie zgadzają się co do tych samych zdarzeń.

Arb działa wtedy, gdy luka przekracza premię strukturalną plus fee. Luka 5 centów na rynku, gdzie premia strukturalna wynosi 1c, a łączne fee 1c, oznacza realną przewagę 3c.

Pary wewnątrz Polymarket (skorelowane zdarzenia)

Wewnątrz Polymarket skorelowane pary zdarzeń są łatwiejsze do arbitrażu niż cross-venue. Taka sama struktura fee, ten sam wallet, możliwa atomic execution.

Przykłady, które konsekwentnie są wyceniane niespójnie:

  • Trump president on date A vs Trump president on date B (gdzie B jest później niż A o < 90 dni).
  • Will Bitcoin hit $100k by July 31 vs $100k by August 31.
  • Legs Yes vs No na tym samym binary market (suma powinna = 1.0; czasem w cienkich książkach rozjeżdża się nawet do 1.04).

Arb Yes+No=1 jest najczystszy: odczytaj oba legs z tego samego rynku, uruchom FOK na obu, jeśli suma spadnie poniżej 0.97 (z zapasem na spread tax). Wymagany kapitał jest mniej więcej równy na każdej nodze; execution jest atomiczne, gdy oba fill-e wracają w tej samej odpowiedzi.

Mean reversion vs continuation trendu

Dwa reżimy stat-arb. Mean reversion: para rozjechała się z powodu szumu; grasz na convergence. Trend continuation: para zaczęła się rozjeżdżać, bo pojawiła się nowa informacja; grasz na dalsze divergence.

Rozróżnienie ich to najtrudniejsza część. Heurystyka: jeśli divergence nastąpił przy widocznym volume (whale przesunął książkę jednej nogi), to jest to news — fade tylko wtedy, gdy masz model. Jeśli drift był powolny i przy niskim volume, to jest to szum — trade reversion z większą pewnością.

Dla nowych builderów: handluj tylko mean reversion, na parach, gdzie divergence jest < 1 standard deviation historycznego driftu. Trend continuation wymaga modelu, który wychwytuje news; bez niego handlujesz przeciw informed flow.

Dobór wielkości pozycji dla rynków rozliczających się, a nie wieczystych

Prediction markets się rozliczają. Pary crypto nie. To zmienia matematykę.

Pozycja pair-arb na Polymarket ma stały harmonogram wypłaty: gdy oba rynki się rozliczą, różnica między prognozowanym spreadem a rzeczywistym spreadem zostaje zamknięta. Nie ma rolling, nie ma nieskończonego trzymania.

Konsekwencja dla sizingu: maksymalna pozycja, jaką możesz utrzymać, jest ograniczona czasem do rozliczenia, ponieważ kapitał jest zablokowany do tego momentu. Para rozliczająca się za 6 miesięcy może przynieść 3c na share, ale nie możesz w międzyczasie użyć tego kapitału ponownie, jeśli oba rynki są w pełni zajęte.

Właściwe podejście: stat-arb na Polymarket to seria trade’ów o ograniczonym czasie trwania, a nie strategia ciągła. Porównuj PnL na jednostkę zablokowanego kapitału dziennie, a nie gross PnL.

Ryzyko: divergence aż do rozliczenia

Najgorszy wynik stat-arb to sytuacja, w której twoja prognoza convergence jest błędna, bo błędne było założenie bazowe. Przykłady:

  • Zająłeś short na „Trump president on Apr 1”, oczekując, że zbiegnie do „Trump president on Mar 1” — ale rynek z datą 1 rozlicza się YES, a rynek z datą 2 rozlicza się NO z powodu marcowego impeachmentu. Twoja teza „spread powinien być płaski” była błędna.
  • Arbowałeś Polymarket vs Kalshi na tego samego zwycięzcę NBA Finals. Polymarket rozlicza się na podstawie zespołu, który wygrał oficjalną serię; Kalshi rozlicza się według nieco innej definicji, która inaczej uwzględnia overtime tie-breakers. Oba rynki rozliczają się YES zgodnie z własnymi zasadami, ale w przeciwnych kierunkach.

Czytaj dokładnie kryteria rozliczenia każdego rynku. Cross-venue arb jest o jedno niedopasowanie rozliczenia od pełnej straty na obu nogach.

Code: pairs monitor i threshold-trigger

Reference: monitoruj dwa skorelowane tokeny, uruchamiaj arb, gdy spread przekroczy threshold.

def pairs_monitor(token_a, token_b, threshold_cents=3, size=10):
    """Buy A and Sell B when (1 - ask_A) + bid_B > 1 + threshold."""
    while True:
        book_a = fetch_book(token_a)
        book_b = fetch_book(token_b)
        if not (book_a.best_ask and book_b.best_bid):
            time.sleep(2); continue
        # implied: cost of buying A at ask + value of selling B at bid
        edge = (1 - book_a.best_ask) + book_b.best_bid - 1
        if edge > threshold_cents / 100:
            print(f"ARB edge={edge:.3f}; firing")
            r_a = fok_buy(token_a, price=book_a.best_ask, size=size)
            if r_a.status != "matched": continue
            r_b = fok_sell(token_b, price=book_b.best_bid, size=size)
            if r_b.status != "matched":
                # leg A filled, B failed -- unhedged, exit A
                fok_sell(token_a, price=book_a.best_bid, size=size)
        time.sleep(3)

Cleanup-on-partial-fill jest krytyczne. Bez tego częściowe wykonanie zostawia bota z ekspozycją kierunkową, co jest przeciwieństwem całej idei stat-arb.

Często zadawane pytania

Czy mogę arbitrażować między Polymarket i Kalshi?
Tak, gdy to samo zdarzenie jest notowane na obu platformach. Spready 2-5 centów utrzymują się między tymi dwiema giełdami z powodu różnic regulacyjnych, struktur fee i różnic wśród użytkowników. Haczyk: Kalshi działa tylko w USA i wymaga KYC, więc potrzebujesz kont na obu — sprawdź nasz /guide/polymarket-vs-kalshi/ po instrukcję konfiguracji. Spread arbitrage jest realny, ale operacyjnie ciężki.
Czym jest pairs trade w kontekście Polymarket?
To dwa skorelowane rynki, w których relacja cenowa mean-revertyuje. Przykład: „Trump wins 2028” i „Republicans win 2028 House” — jeśli trade Trumpa skoczy o 5%, a trade House się nie ruszył, bot kupuje House i sprzedaje Trumpa (albo odwrotnie), zakładając, że relacja wróci do normy. Przewaga jest mała, ale stała na płynnych rynkach politycznych.
Jak dobrać wielkość pozycji stat-arb, gdy oba rynki się rozliczają?
Dobierz wielkość do największego oczekiwanego divergence — jeśli twój model mówi, że spread może rozjechać się jeszcze o 8 centów, zanim się odwróci, ustaw pozycję tak, by 8 centów nie przekraczało twojego limitu straty. Traktuj każdą parę jako niezależny trade z twardym limitem straty. Stat-arb udający darmowe pieniądze to najprostsza droga do wyzerowania konta.
Czy arb Polymarket-Kalshi jest trwały?
Tak, ale stopniowo się kurczy, gdy coraz więcej botów go wykrywa. W 2026 nadal widzimy spready 1-3 centy na płynnych rynkach politycznych utrzymujące się przez godziny. Rynki sportowe mają węższe spready. Rynki ogonowe (low-volume) mają szersze, ale nieopłacalne do handlu spready.
Co jeśli oba rynki rozjadą się aż do rozliczenia?
Pairs trade kończy się pełnym PnL na podstawie rzeczywistych wyników — dlatego pairs trading na prediction markets jest z natury ograniczony czasowo (w przeciwieństwie do perpetuals, gdzie divergence może rosnąć bez końca). Netto strata na pairs trade jest ograniczona do różnicy cen przy wejściu, a nie nieskończona.
Jakie narzędzia pomagają znajdować pary Polymarket?
Punktem wyjścia jest matrix korelacji dla aktywnych rynków. Zbuduj ją na podstawie 30-dniowych historii cen pobranych z gamma+CLOB. Szukaj par z historycznym rho > 0.7, które obecnie są źle wycenione względem typowej relacji. Aktualizuj matrix co tydzień — korelacje wygasają.