Polymarket Bot Tutorial · Rozdział 21 z 32
Strategie botów dla binarnych rynków Yes/No na Polymarket: standardowe event contracts, twardy limit dźwigni 1x, skalowanie przez breadth portfela, częste błędy (gonienie 0.99) oraz skeleton kodu.
Co obejmuje ten rozdział
Binarnie rynki (Yes/No) są fundamentem Polymarket. Większość strategii działa właśnie tutaj. Ten rozdział omawia limit dźwigni, pułapkę ceny 0.99, w którą wpadają nowi twórcy, oraz wzorzec breadth-not-size, do którego dochodzą boty produkcyjne.
To 21. rozdział naszej 32-częściowej serii o budowie trading bota na Polymarket. Omawiamy temat szczegółowo w sekcjach poniżej. Treści główne dla każdej sekcji są pisane i publikowane rozdział po rozdziale; odpowiedzi FAQ i referencje są już kompletne i odzwierciedlają doświadczenie produkcyjne z prowadzenia naszego własnego tradera.
- Co obejmują binarne rynki
- Limit dźwigni 1x (i jak skalować wokół niego)
- Typowy błąd: gonienie cen 0.99
- Breedth portfela jako efektywna dźwignia
- Ryzyko na rynek vs na portfel
- Kod: skanowanie binarnych rynków i składanie zleceń kupna o odpowiedniej wielkości
Co obejmują binarne rynki
Binarnie rynki są fundamentem Polymarket: pojedyncze pytanie yes/no z dwoma outcome tokens. „Will Trump win the 2024 election?” jest binarne; „Who will win the 2024 election?” z 5 kandydatami to NegRisk (rozdział 11).
Dwa outcome tokens (YES i NO) na binarnym rynku sumują się do 1.0 minus niewielki spread tax. Możesz kupić dowolną stronę; obie strony mają własny order book. Ceny są symetryczne — kupno YES po 0.40 jest ekonomicznie równoważne sprzedaży NO po 0.60 w expected payoff.
Większość rynków innych niż turniejowe na Polymarket jest binarna: pytania o pogodę, pojedyncze wydarzenia polityczne, indywidualne mecze sportowe, pojedyncze pytania crypto o target ceny. Wzorzec bota jest podobny dla większości z nich.
Limit dźwigni 1x (i jak skalować wokół niego)
Binarne rynki Polymarket mają dźwignię 1x: wydajesz 40 USD, aby kupić 100 udziałów po 0.40; maksymalna wypłata to 100 USD. Nie ma margin ani liquidation. Efektywność kapitałowa jest niższa niż w perp futures (rozdział 24), gdzie dostępna jest dźwignia 2-25x.
Skalowanie wokół limitu 1x oznacza albo: (1) angażowanie większego kapitału na wielu rynkach — dywersyfikacja zamiast dźwigni, (2) rotowanie kapitału przez rozstrzygane rynki — kapitał uwalnia się przy każdym resolution i przechodzi do następnego, (3) używanie rynków NegRisk, gdzie arb sum-to-1 może dawać efektywną syntetyczną dźwignię.
Właściwe podejście do strategii binarnej: niska dźwignia, wysoki breadth. 50 małych pozycji na 50 rynkach to typowy profil dojrzałego bota, a nie 5 dużych pozycji na 5 rynkach.
Typowy błąd: gonienie cen 0.99
Najczęstsza porażka binarnego bota: kupowanie prawie rozstrzygniętego faworyta po 0.99, z oczekiwaniem łatwej wypłaty 1c po rozstrzygnięciu YES.
Matematyka: przy 0.99 płacisz 99c, aby wygrać 1c. 1% failure rate (1 na 100 rynków), gdzie każdy kosztuje Cię 99c, kasuje 99 udanych wygranych po 1c. Stosunek ryzyka do zysku jest brutalny na ekstremach.
Capacity też jest problemem. Order book przy 0.99 jest cienki; ustawienie sensownego size podnosi cenę do 0.995 lub wyżej, co zjada i tak już bardzo mały edge.
Trzymaj się z dala od rynków wycenionych powyżej 0.92, chyba że masz konkretną strategię zaprojektowaną pod tail-yield arb profile. Większość botów binarnych nie powinna kupować powyżej 0.85.
Breadth portfela jako efektywna dźwignia
Nie możesz lewarować pojedynczych pozycji, ale możesz lewarować charakterystykę wariancji portfela, trzymając wiele nieskorelowanych zakładów jednocześnie.
50 pozycji po 20 USD to 1,000 USD w grze. Jeśli win rate wynosi 55% przy ekonomii +3c/-4c, oczekiwane dzienne PnL to (0.55 × 3 − 0.45 × 4) × 50 × $0.20 = $1.50 expected, z ograniczoną wariancją. Ten sam expected return, znacznie niższy drawdown, w porównaniu z pojedynczą pozycją za 1,000 USD.
Ograniczenie: pozycje muszą być naprawdę nieskorelowane. 50 faworytów NFL w jeden weekend nie oznacza 50 niezależnych zakładów; to w dużej mierze jeden zakład na pogodę i faworyta, skorelowany między meczami. Dywersyfikuj między sport, typ wydarzenia i horyzont czasowy.
Ryzyko na rynek vs na portfel
Dwa limity ryzyka, oba są potrzebne.
- Per-market: maksymalnie X USD na rynek, niezależnie od edge. Ogranicza katastrofalną stratę na pojedynczym rynku. Typowa wartość: 25-100 USD na rynek.
- Portfolio: maksymalny łączny kapitał zaangażowany w dowolnym momencie. Ogranicza całkowity drawdown w słabsze, nieskorelowane dni. Typowa wartość: 50-70% salda walleta.
Limit per-market jest ważniejszy, bo ogranicza blast radius jednego błędu lub sytuacji, gdy edge znika. Limit portfela to sanity check; przy 50+ pozycjach prawo wielkich liczb zwykle utrzymuje Cię w granicach nawet bez niego.
Oba limity powinny być egzekwowane w kodzie, a nie „w głowie”. Bot bez wymuszonych limitów prędzej czy później znajdzie konfigurację, w której lokuje 90% kapitału w jednym rynku i wszystko traci.
Kod: skanowanie binarnych rynków i składanie zleceń kupna o odpowiedniej wielkości
Referencja: skanuj binarne rynki o najwyższym volume, filtruj poprawne setupy, składaj sized FOK buys.
def scan_and_buy():
events = gamma_top_events(limit=50, active=True, closed=False)
for ev in events:
for m in ev.get("markets", []):
if m.get("negRisk"): continue # binaries only
outs = json.loads(m["outcomes"])
prices = [float(p) for p in json.loads(m["outcomePrices"])]
for i, out_name in enumerate(outs):
if not setup_qualifies(m, i, prices[i]): continue
tok = json.loads(m["clobTokenIds"])[i]
size = compute_size(m, prices[i])
if size < 5: continue
place_fok(tok, "BUY", prices[i] + 0.02, size, neg_risk=False)
def setup_qualifies(m, idx, price):
return 0.10 <= price <= 0.85 # avoid extremes
Funkcja setup_qualifies to miejsce, w którym żyje Twoja strategia. Wrapper to tylko plumbing.











