Polymarket Bot Tutorial · Rozdział 14 z 32

Arbitraż newsów na Polymarket: jak wygrywać z rynkiem na nagłówkach, source feeds (RSS/Twitter/AP), latency budgets, false-positive filters i kiedy news edge znika w cenie rynkowej.

Co obejmuje ten rozdział

News arbitrage to strategia tradingu na publicznej informacji szybciej, niż market ją reprices. Edge jest realny, ale wąski — większość "newsów" jest już w cenie, zanim człowiek zdąży to przeczytać. Ten rozdział omawia, które źródła faktycznie beat the market, latency budget definiujący strategię oraz false-positive filter, bez którego bot trade'uje na każdy retweet.

To jest rozdział 14 z naszej 32-częściowej serii o budowie Polymarket trading bota. Temat omawiamy szczegółowo w sekcjach poniżej. Treść główna dla każdej sekcji jest dopiero pisana i publikowana rozdział po rozdziale; odpowiedzi FAQ i referencje są już kompletne i odzwierciedlają production experience z uruchamiania naszego własnego tradera.

  • Jak wygląda information edge
  • News sources: RSS, Twitter, AP, official feeds
  • Latency budget: read-to-trade w mniej niż 2 sekundy
  • False-positive filters
  • Kiedy news edge umiera
  • Code: polling news feed i składanie FOK na relevant markets
  • Risk: half-truths i walked-back headlines

Jak wygląda information edge

News arbitrage oznacza trading na publicznej informacji szybciej, niż market ją reprices. Edge istnieje w wąskim oknie — zwykle 30-300 sekund — między momentem, gdy fakt staje się publiczny, a tym, gdy Polymarket go odzwierciedla.

Aby edge był realny, muszą być spełnione trzy warunki. Po pierwsze, source newsów musi być szybsze niż mediana traderów Polymarket (Twitter jest szybszy niż mainstream press; AP wire jest szybszy niż Twitter). Po drugie, news musi być jednoznaczny (ogłoszenie o kontuzji, wyrok sądu) — interpretacja zjada latency. Po trzecie, market musi być na tyle szeroki, żeby ruch ceny był wart spread tax.

Boty, które polują na ten edge, dzielą się na dwie grupy: te, które subskrybują direct sources i parsują je, oraz te, które obserwują nietypowy ruch ceny na Polymarket i wnioskują, że news już się wydarzył. Oba podejścia są poprawne; pierwsze wyprzedza, drugie podąża.

News sources: RSS, Twitter, AP, official feeds

Źródła uporządkowane według latency do statusu public-information, od najszybszych.

  • Direct primary sources: court filings, government press releases, central-bank announcements. Często mają publiczny RSS lub API. Najszybsze, najniższy false-positive rate.
  • AP wire / Reuters Eikon (płatne). Wire, którego używają tradycyjni traderzy. Około 5-30 sekund przewagi nad consumer Twitterem.
  • Twitter (X, płatne API). Listy zweryfikowanych kont: oficjalne konta organizacji, reporterzy branżowi. Darmowe API ma zbyt niskie limity; zapłać za Pro tier albo użyj relay service.
  • Specialized newsletters / Discord: płatne Substacki, embargoed industry feeds. Przydatne na niszowych rynkach (crypto, esports).
  • Mainstream press websites: zbyt wolne na news-arb edge.

RSS dla wszystkiego, co publikuje RSS — jest darmowy, polling intervals są przewidywalne. Twitter dla reszty. AP dla news desks, które traktują produkcję poważnie.

Latency budget: read-to-trade w mniej niż 2 sekundy

Bot musi ingestować, klasyfikować, podejmować decyzję i składać order w łącznym czasie 1-2 sekund. Budżet:

  • Ingest: 50-300 ms (websocket feed, RSS poll, Twitter stream).
  • Classify: 50-200 ms (regex / keyword match, opcjonalnie LLM, jeśli cache'ujesz prompt).
  • Decide: 50 ms (lookup w rules table; mapping z news tag do market slug).
  • Place: 200-500 ms (FOK signed order do CLOB).

Największym pożeraczem budżetu jest LLM classification. Wywołanie GPT-4 z 500 tokenami dodaje 1-3 sekundy; i cały arb window znika. W production klasyfikuj za pomocą keyword rules; LLM używaj tylko do offline calibration zestawu keywordów.

False-positive filters

News-arb boty, które nie filtrują false positives, trade'ują na każdy retweet i tracą przez spread tax. Trzy filtry.

  • Source whitelist: działaj tylko na kontach/feedach z wcześniej zatwierdzonej listy. Lista jest mała (10-30 sources).
  • Keyword + confirmation pair: pojedynczy keyword match to szum; dopasowania w dwóch niezależnych sources w ciągu 30 s to sygnał.
  • Market-state guard: pomijaj markets, które już ruszyły > 5% w ostatnich 60 sekundach — ktoś inny złapał news pierwszy, edge już zniknął.

False-positive rate dobrze dostrojonych filtrów: około 1 na 5-10. 90% false-positive rate niszczy strategię; 50% rate jest wykonalny przy małych position sizes.

Kiedy news edge umiera

Okno od „news public” do „price reflects news” zamyka się z roku na rok szybciej. W 2020 roku średnio wyceniane markets polityczne potrzebowały minut, by przyswoić headline. W 2026 roku te same headlines kompresują się do 30-90 sekund, zanim cena w pełni się ruszy.

Sygnały, że edge umarł: per-trade PnL na oznaczonych trade'ach spada z +3c do zera w oknie 30 trade'ów; rate false positives, które okazują się już uwzględnione w cenie, rośnie powyżej 70%; market trafia w twoją ofertę FOK w 200 ms, bo ktoś inny był tam wcześniej.

Uczciwy pivot, gdy edge umiera: przejdź do wolniejszych, bardziej interpretacyjnych newsów (wyroki sądów, minutes z posiedzeń banku centralnego), gdzie zrozumienie znaczenia trwa dłużej niż wyścig latency. Albo przestań prowadzić tę strategię.

Code: poll news feed i place FOK na relevant markets

Production skeleton: polling źródła newsów, uruchamianie rule matches, składanie FOK orders przy trafieniu.

import feedparser, time, re
from py_clob_client.client import ClobClient

RULES = [
  {"regex": re.compile(r"out for season|torn ACL", re.I), "tag":"injury-fade"},
  {"regex": re.compile(r"federal reserve.*(rate cut|rate hike)", re.I), "tag":"fed-move"},
]

seen = set()
while True:
    feed = feedparser.parse("https://example.com/news.rss")
    for entry in feed.entries[:20]:
        if entry.id in seen: continue
        seen.add(entry.id)
        for rule in RULES:
            if rule["regex"].search(entry.title + " " + entry.summary):
                # Look up relevant Polymarket markets, place FOK
                fire(rule["tag"], entry)
                break
    time.sleep(15)

Polling intervals: 5-15 sekund dla RSS. WebSocket tam, gdzie dostępny (Twitter, AP wire). Zawsze deduplikuj po ID dostarczonym przez source; nigdy nie zakładaj, że polling jest exactly-once.

Risk: half-truths i walked-back headlines

Najgorszy dzień news-arb bota to ten, w którym headline okazuje się nieprawdziwy. Przykłady: tweet Reutersa mówi „Trump fires Yellen”, market skacze o 8 centów, 12 minut później tweet zostaje usunięty i poprawiony. Bot, który kupił przy +8c, trzyma teraz inventory przy -3c bez możliwości wyjścia.

Defenses:

  • Two-source confirmation: nigdy nie trade'uj na pojedynczym tweecie; wymagaj potwierdzenia z drugiego niezależnego source w ciągu 60-180 sekund.
  • Position size scaled to source confidence: AP wire = pełny size; Twitter od zweryfikowanego reportera branżowego = 50%; rumor source = 25%.
  • Auto-exit on retraction signal: jeśli source, którego użyłeś, wyda correction w ciągu 30 minut, wyjdź po market, niezależnie od PnL.

Problem walked-back to twardy sufit dla position sizing w news-arb. Trading za 50 USD na sygnał pozwala przetrwać 30% false-positive rate; trading za 500 USD już nie.

Najczęściej zadawane pytania

Czy retail bot naprawdę może beat the market na newsach?
Tak — ale tylko jeśli masz szybkie, niezawodne źródło newsów i low-latency execution path. Twitter (dziś X) był gold standard, dopóki nie pojawiły się ograniczenia API; RSS z Reuters/AP/Bloomberg to następna najlepsza rzecz. Retail edge zmalał, bo więcej botów konkuruje; spodziewaj się 200-1000 ms łącznego read-to-trade, a nie 50 ms.
Na jakie news sources powinienem się subskrybować?
RSS feeds z AP (apnews.com), Reuters (reuters.com) i BBC dają szeroki coverage. Dla Polymarket-specific: własne kanały Twitter i Discord platform często wcześniej ogłaszają zmiany marketów. Dla konkretnych tematów: government press releases (Federal Reserve PDFs, CFTC, WHO).
Jak szybko mój bot musi reagować na newsy?
Dla retail edge: mniej niż 2 sekundy od pojawienia się newsu do wysłania orderu. Dla HFT-tier edge (w porównaniu z innymi botami): mniej niż 200 ms. Większość retail może konkurować w oknie 1-3 sekund, bo większość innych retail botów jest jeszcze wolniejsza albo nie działa na niektórych typach feedów.
Jak uniknąć false-positive news triggers?
Dopasowuj news do konkretnego marketu bardzo ostrożnie. „Ceasefire” może pojawić się w 100 kontekstach; tylko niektóre dotyczą twojego konkretnego marketu. Używaj filtrów keyword AND market-tag: keyword "ceasefire" AND market-tag "Israel-Hezbollah" przed uruchomieniem. Jeszcze lepiej — sklasyfikuj news jako relevant za pomocą LLM przed tradingiem.
Co się dzieje, gdy news później zostaje wycofany?
Twoja pozycja może w kilka sekund przejść z wygrywającej w przegrywającą. News-arb boty potrzebują szybkiej polityki wyjścia: jeśli follow-up source przeczy headline w ciągu N minut, natychmiast zamknij pozycję, nawet ze stratą. Nasza zasada: zamknij przy -3% do -5%, jeśli jakikolwiek follow-up obniża confidence w pierwotny sygnał.
Czy news arbitrage jest legalny?
Trading na publicznych newsach jest legalny wszędzie, o czym wiemy. Trading na material non-public information (insider tips, leaks przed oficjalną publikacją) — nie. Trzymaj się publicznych sources, a trading jest w porządku.