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.











