Rynki predykcyjne to kasyno dla tych, co nie potrafią liczyć, i żyła złota dla tych, co łapią matematykę. Nie handlujesz tu aktywami, tylko prawdopodobieństwem przyszłych zdarzeń. Arbitraż to jedyny sposób, żeby wycisnąć z tych platform systemowy profit, mając w nosie cały szum medialny.
Matematyka polowania na spread
Arbitraż na Polymarket czy Kalshi kręci się wokół wyłapywania "krzywych" wycen, kiedy suma kontraktów "Tak" i "Nie" nie wynosi 1. Jeśli sumarycznie kupujesz wynik za 0,95 USD, a wypłata przy trafieniu to 1,00 USD, masz 5,2% zwrotu. To transakcja "bezryzykowna", o ile wyeliminujesz ryzyko wykonania (leg risk).
Wzór na realny profit:Net Profit = (1 - Price_Yes - Price_No) - (Taker Fees + Network Gas)
Jeśli finalna stopa zwrotu wychodzi poniżej 2%, jesteś stratny przez koszty transakcyjne i czas poświęcony na monitoring.
Praktyczna architektura bota
Zapomnij o klikaniu w przeglądarce. Potrzebujesz lokalnego agenta, który wali prosto w API platform. Poniżej wrzucam działający szablon w Pythonie, który realnie zasysa dane i liczy deltę.
import requests
import time
# Inicjalizacja sesji dla szybkości
session = requests.Session()
def get_best_bid_ask(market_id):
"""
Wyciąganie arkusza z Polymarket (przez ich API)
"""
url = f"https://clob.polymarket.com/orderbook/{market_id}"
response = session.get(url).json()
# Pobieramy najlepsze ceny
return float(response['bids'][0][0]), float(response['asks'][0][0])
def scan_arbitrage(market_yes, market_no):
# Bierzemy ceny Ask (kupno)
_, ask_yes = get_best_bid_ask(market_yes)
_, ask_no = get_best_bid_ask(market_no)
total_cost = ask_yes + ask_no
if total_cost < 0.96: # Uwzględniamy 4% na gas i poślizg (slippage)
print(f"!!! ARBITRAŻ: {total_cost:.4f} !!!")
# Tutaj wpinasz logikę obsługi portfela
else:
print(f"Spread za wąski: {total_cost:.4f}")
# Przykładowy ID rynku (trzeba podmieniać pod bieżące eventy)
# scan_arbitrage('2187654321', '2187654322')
Pułapki i branżowy slang
- Resolution Delay: Najczęstsza bolączka. Rynek się zamyka, ale kasa zamrożona przez spór w wyroczni UMA. Środki "zablokowane" na 3 do 14 dni. Arbitraż to zawsze zarządzanie kapitałem obrotowym.
- Order Book Ghosting: Na platformach często wiszą duchy. Widzisz cenę 0,40 USD, ale jak chcesz kupić większy wolumen, cena od razu skacze na 0,45 USD. To algorytmiczni animatorzy (AMM), którzy bronią swojego spreadu.
- Cross-Platform Skew: Na Kalshi ceny często odbiegają od Polymarket przez inny miks uczestników. W USA (Kalshi) traderzy agresywniej hedżują ryzyka polityczne, podczas gdy Polymarket to dziki zachód krypto-entuzjastów. Porównuj korelacje: jak BTC nurkuje na giełdach, Polymarket reaguje szybciej niż Kalshi.
Tabela efektywności operacyjnej
| Scenariusz | Ryzyko | Zyskowność | Rekomendacja |
|---|---|---|---|
| Wewnątrzplatformowy | Niskie | 1-2% | Szkoda czasu |
| Międzyplatformowy | Średnie | 3-7% | Optymalne dla botów |
| Hedge opcyjny | Wysokie | 10%+ | Dla prosów (wymaga kapitału) |
Jak nie utopić wszystkiego na starcie
Złota rada: nie wchodź w rynki z małym wolumenem. Jeśli płynność po obu stronach to mniej niż 50 tys. USD, wejście w transakcję wywoła poślizg (slippage) przeciwko Tobie. Szukaj eventów z obrotem dziennym rzędu 500k USD+.
Techniczny detal: Jeśli lecisz na Polygonie (Polymarket), nigdy nie stawiaj transakcji z domyślnym gazem. W arbitrażu ścigasz się z MEV-botami. Ustawiaj maxPriorityFeePerGas powyżej średniej rynkowej, żeby Twój order gwarantowanie wpadł w następny blok.
Żeby arbitraż nie zamienił się w powolne spalanie depo na prowizjach, przesuń focus z "łapania spreadów" na "zarządzanie egzekucją". W tej grze wygrywa nie ten, kto pierwszy znajdzie różnicę w cenie, tylko ten, czyj bot szybciej przekompiluje transakcję i wyśle do mempoola.
Anatomia egzekucji: dlaczego Twój kod przegrywa
Problem większości skryptów to egzekucja sekwencyjna. Robisz request na Polymarket, czekasz na odpowiedź, potem request na Kalshi, liczysz i dopiero wysyłasz transakcję. W tym czasie animatorzy rynku, którzy lecą na WebSockets i mają gotowe ordery, już dawno przesunęli arkusz.
Jak to robią profesjonaliści:
- WebSocket zamiast REST: Polling to przeżytek. Musisz trzymać otwarte sockety na oba orderbooki. Aktualizacje w czasie rzeczywistym oszczędzają od 200 do 800 ms.
- Multicall/Batching: Zamiast dwóch transakcji, użyj inteligentnej nakładki (smart contract). Kontrakt łyka Twoje ordery w jednym wywołaniu i wykonuje je atomowo. Jak jedna strona nie weszła, kontrakt wycofuje drugą (Revert). To chroni przed "jednonożnym" arbitrażem, gdzie kupiłeś jedną stronę, a druga stała się nieopłacalna.
Przykład zoptymalizowanej egzekucji (koncepcja Solidity)
Jeśli działasz w sieciach EVM, Twoim najlepszym ziomkiem jest delegatecall. Pozwala to wykonać arbitraż w ramach jednego atomowego ruchu.
// Koncepcyjny fragment do obsługi arbitrażowych zleceń
function executeArbitrage(
address target,
bytes calldata data1,
bytes calldata data2
) external payable {
// Wykonanie dwóch kupów w jednym bundlu
(bool success1, ) = target.call{value: msg.value / 2}(data1);
(bool success2, ) = target.call{value: msg.value / 2}(data2);
// Jak arbitraż nie pykł, wychodzimy bez strat
require(success1 && success2, "Arbitrage execution failed - reverting");
}
Mało znane triki: handel "Event-Driven"
Na rynkach predykcyjnych cena często "skacze" nie przez siły rynkowe, ale przez status wyroczni albo świeży news.
- Wskaźniki wyprzedzające: Handlujesz rynki polityczne? Podepnij bota pod feedy agencji newsowych (przez API typu Bloomberg albo wyspecjalizowane skanery Telegrama). Cena na Polymarket reaguje na newsa 1-3 sekundy przed tym, jak masa traderów zdąży kliknąć. Musisz mieć pozycję, zanim news "przemieli się" przez arkusz.
- Arbitraż syntetyczny: Czasami bardziej opłaca się nie arbitrować "Tak/Nie" bezpośrednio, tylko lecieć na kontraktach terminowych. Jeśli prawdopodobieństwo na rynku predykcyjnym wystrzeliło, a futures na powiązany indeks stoi w miejscu — to sygnał, że rynek predykcyjny jest przegrzany. Shortujesz rynek predykcyjny i kupujesz futures. Jak hype opadnie, zamykasz obie pozycje z profitem.
Checklista przed wrzuceniem kapitału:
- Benchmarking gazu: Policz koszty gazu przy 50 Gwei i 200 Gwei. Jeśli zysk z arbitrażu pokrywa tylko 50 Gwei, a sieć jest zapchana — wyłącz bota.
- Limit poślizgu: Nigdy nie używaj Market Orders przy arbitrażu. Tylko zlecenia limitowane, wystawione minimalnie powyżej najlepszego aska. Jeśli cena uciekła — lepiej odpuścić, niż wchodzić w transakcję ze stratą.
- Analiza "brudnych" danych: Niektóre platformy podają w API "średnią ważoną cenę", która nie ma nic wspólnego z tym, co jest w arkuszu. Zawsze parsój asks i bids bezpośrednio, ignorując kolumnę last_price.
Arbitraż tutaj to nie szukanie Świętego Graala, tylko żmudna praca nad matematyczną przewagą. Im mniej emocji, a więcej kodu, tym większa szansa, że Twój balans w USDC będzie rósł szybciej niż inflacja dolara.