Kurs budowy bota na Polymarket · Rozdział 23 z 32
Wzorce bota dla 5-minutowych rynków BTC/ETH w górę/w dół na Polymarket: 288 wygaśnięć dziennie, realizacja krytyczna dla latencji, źródła przewagi, dlaczego większość detalicznych botów przegrywa oraz szkielet kodu dla tej strategii.
Co obejmuje ten rozdział
5-minutowa seria BTC w górę/w dół na Polymarket rozlicza się 288 razy dziennie, wzmacniając każdą przewagę przez wiele powtórzeń. Większość detalicznych botów przegrywa tutaj mimo wolumenu, ponieważ próg latencji i przewagi wyznaczają firmy profesjonalne. Ten rozdział pokazuje to, co faktycznie przetrwa.
To jest rozdział 23 naszej 32-częściowej serii o budowie bota tradingowego na Polymarket. Temat omawiamy szczegółowo w sekcjach poniżej. Treść każdej sekcji jest pisana i publikowana rozdział po rozdziale; odpowiedzi FAQ i sekcje referencyjne są już kompletne i odzwierciedlają doświadczenie produkcyjne z prowadzenia naszego własnego bota.
- Czym są 5-minutowe rynki krypto
- 288 wygaśnięć dziennie = efekt składania powtórzeń
- Dlaczego detaliczne boty tutaj przegrywają
- Źródła przewagi, które przetrwają
- Budżet latencji
- Ryzyko: małe na transakcję, duże na dzień
- Kod: szkielet strategii 5-minutowej
Czym są 5-minutowe rynki krypto
5-minutowe rynki krypto na Polymarket to binarne pytania w górę/w dół o cenę BTC (i ETH). Nowe rynki otwierają się co 5 minut; każdy rozlicza się na podstawie ceny zamknięcia 5 minut po otwarciu, pobieranej z opublikowanej wyroczni.
To daje 288 rynków na aktywo dziennie. Możliwość składania dowolnej przewagi jest ogromna: nawet niewielka przewaga na transakcję staje się istotna, gdy można ją wykorzystać ponad 100 razy dziennie.
Druga strona medalu: poprzeczkę wyznaczają firmy profesjonalne. Cena środkowa porusza się niemal w ścisłej zgodzie z bazowym kanałem cenowym, a arkusze są zwykle cienkie po przeciwnej nodze.
288 wygaśnięć dziennie = efekt składania powtórzeń
Jeśli twoja przewaga wynosi 0,5 centa na transakcję przy 55% skuteczności i możesz wykonać 60 transakcji dziennie, oczekiwany dzienny wynik to 60 × 0,5 centa = 0,30 USD na pozycjach 10-udziałowych = 3 USD/dzień. Brzmi skromnie, ale się kumuluje: 252 dni handlowe × 3 USD = 750 USD/rok przy niemal zerowej ekspozycji kapitałowej (pozycje rozliczają się w ciągu 5 minut).
Aby ta sama przewaga wygenerowała 750 USD/rok na rynku binarnym rozliczającym się raz na kwartał, potrzebowałbyś znacznie większego rozmiaru na transakcję i dużo szerszych ogonów strat.
5-minutowe rynki to jedyny segment na Polymarket, gdzie małe, ale częste przewagi sumują się do sensownego rocznego dochodu.
Dlaczego detaliczne boty tutaj przegrywają
Trzy tryby awarii, które konsekwentnie eliminują detalicznych uczestników.
- Latencja: firmy profesjonalne składają zlecenia w 50-100 ms; detaliczne boty potrzebują 1-3 sekund. Zanim wyślesz zlecenie, cena jest już w nowej cenie środkowej.
- Asymetria informacji: bazowa giełda CEX (Binance, Coinbase) publikuje taśmę transakcji szybciej niż kanał cenowy Polymarket. Boty bez bezpośrednich subskrypcji CEX handlują na przestarzałych danych.
- Koszt spreadu: przy częstotliwości 5-minutowej nawet spread 0,5 centa × 60 transakcji = 30 centów dziennie nieuniknionego kosztu. Przewaga musi to przebić, zanim stanie się rentowna.
Detaliczne boty zwykle wychodzą na zero albo tracą, bo nie są w stanie wyprzedzić profesjonalistów i nie potrafią uciec od kosztu spreadu. Strategie, które działają dla detalu, nie polegają na przewadze przeciwko profesjonalistom; to strategie wolniejszego podejmowania decyzji ze specyficznymi przewagami informacyjnymi.
Źródła przewagi, które przetrwają
Co działa dla detalu na 5-minutowych rynkach.
- Nastawienie kierunkowe napędzane stopą finansowania: ekstremalnie dodatni funding na perpach prognozuje powrót do średniej; graj przeciwko stopie finansowania.
- Okna czyszczenia otwartych pozycji: na początku każdej godziny likwidacje na perpach są bardziej prawdopodobne; graj przeciwko ekstremalnym ruchom w tym oknie.
- Arbitraż rozstrzygnięcia w późnym oknie: w ostatnich 30 sekundach 5-minutowego okna cena rozliczenia staje się coraz bardziej przewidywalna; arkusz często oferuje cienką płynność przy prawdopodobieństwach, które nie zgadzają się z taśmą na żywo.
Co nie działa: czyste sygnały techniczne (RSI, średnie kroczące), proste kopiowanie momentum, wszystko, co wymaga, by bot był szybszy niż profesjonaliści.
Budżet latencji
Dla sensownej strategii 5-minutowej budżet wygląda mniej więcej tak:
- Odczyt źródła sygnału (taśma transakcji CEX, stopa finansowania): 100-300 ms
- Obliczenie decyzji: 50 ms
- Wysłanie zlecenia FOK: 200-500 ms
- Otrzymanie potwierdzenia realizacji: 200 ms
Łącznie: 550-1050 ms. Osiągalne na VPS z płatnym RPC i bezpośrednią subskrypcją WebSocket CEX. Nieosiągalne na domowym laptopie ani przy API z darmowego poziomu.
Strategie wymagające łącznego czasu < 500 ms to teren profesjonalistów; detal nie powinien tam konkurować.
Ryzyko: małe na transakcję, duże na dzień
Dobieranie wielkości dla 5-minutowych rynków: małe na transakcję, z dziennym limitem.
- Na transakcję: 5-15 udziałów (1-6 USD) na rynek. Poniżej 5 uniemożliwia sensowną sprzedaż GTC; powyżej 15 powoduje przesuwanie arkusza przy wejściu.
- Łącznie dziennie: 50-100 transakcji. Więcej tworzy skorelowaną ekspozycję na pojedyncze dziwactwo wyroczni.
- Dzienny wyłącznik awaryjny wyniku: wstrzymaj handel, jeśli skumulowany wynik spadnie o > 10 USD (lub 5% przydzielonego kapitału). Złe dni na 5-minutowych rynkach zwykle wynikają z tego, że założyłeś coś, co przestało działać; przetrwaj dzień, zdebuguj, wdróż ponownie.
Asymetria między rozmiarem na transakcję a dzienną liczbą transakcji jest celowa. Grasz szerokością, nie głębokością.
Kod: szkielet strategii 5-minutowej
Referencja: pętla tradingowa dla bota opartego na stopie finansowania na rynkach 5-minutowych.
def five_min_loop():
while True:
wait_for_next_window_open() # blocks until xx:x0:00 or xx:x5:00
markets = find_open_5min_markets("btc")
if not markets: continue
funding = fetch_perp_funding_rate("BTCUSDT")
bias = "DOWN" if funding > 0.001 else "UP" if funding < -0.001 else None
if bias is None: continue
market = markets[0]
token = market["clobTokenIds"][0 if bias == "UP" else 1]
book = fetch_book(token)
if not book.best_ask or book.best_ask > 0.55: continue
place_fok(token, "BUY", book.best_ask + 0.01, 10)
Rozszerzenia w wersji produkcyjnej: śledź pozycje w obrębie 5-minutowego okna dla dokładnego czasu wyjścia, handluj treningowo przez 30 okien przed wejściem na żywo, zatrzymuj się po kolejnych stratach.


