Polymarket Bot Tutorial · Chapitre 14 sur 32
Arbitrage de news sur Polymarket : comment battre le marché sur les headlines, les source feeds (RSS/Twitter/AP), les latency budgets, les false-positive filters, et quand l’avantage des news s’éteint dans le prix du marché.
Ce que couvre ce chapitre
L’arbitrage de news est la stratégie qui consiste à trader sur des informations publiques plus vite que le marché ne les reprice. L’avantage existe, mais il est étroit - la plupart des "news" sont déjà dans le prix au moment où un humain peut les lire. Ce chapitre couvre quelles sources battent réellement le marché, le latency budget qui définit la stratégie, et le false-positive filter sans lequel le bot trade sur chaque retweet.
- À quoi ressemble un avantage informationnel
- News sources : RSS, Twitter, AP, official feeds
- Latency budget : read-to-trade en moins de 2 secondes
- False-positive filters
- Quand l’avantage des news disparaît
- Code : poll news feed et placer des FOK sur les marchés pertinents
- Risque : half-truths et headlines rétractées
À quoi ressemble un avantage informationnel
L’arbitrage de news signifie trader sur des informations publiques plus vite que le marché ne les reprice. L’avantage existe dans une fenêtre étroite - généralement 30 à 300 secondes - entre le moment où un fait devient public et celui où Polymarket l’intègre.
Pour que l’avantage soit réel, trois choses doivent être vraies. D’abord, la source de news doit être plus rapide que le trader Polymarket médian (Twitter est plus rapide que la presse grand public ; le wire AP est plus rapide que Twitter). Ensuite, la news doit être sans ambiguïté (une annonce de blessure, une décision de justice) - l’interprétation consomme de la latence. Enfin, le marché doit être suffisamment large pour que le mouvement de prix vaille le spread tax.
Les bots qui cherchent cet avantage se divisent en deux camps : ceux qui s’abonnent à des sources directes et parsèment, et ceux qui surveillent un mouvement de prix inhabituel sur Polymarket et en déduisent qu’une news est tombée. Les deux approches sont valides ; la première précède, la seconde suit.
News sources : RSS, Twitter, AP, official feeds
Sources classées par latence jusqu’au statut d’information publique, les plus rapides d’abord.
- Direct primary sources : dossiers de justice, communiqués de presse gouvernementaux, annonces des banques centrales. Souvent accessibles via RSS public ou API. Les plus rapides, avec le plus faible taux de false-positive.
- AP wire / Reuters Eikon (payant). Le wire utilisé par les traders traditionnels. Environ 5 à 30 secondes d’avance sur Twitter grand public.
- Twitter (X, API payante). Listes de comptes vérifiés : comptes officiels d’organisations, journalistes spécialisés. Les API gratuites sont trop limitées en rate limit ; payez l’offre Pro ou utilisez un relay service.
- Specialized newsletters / Discord : Substacks payants, industry feeds sous embargo. Utiles pour les marchés de niche (crypto, esports).
- Mainstream press websites : trop lents pour l’avantage de news-arb.
RSS pour tout ce qui en publie - c’est gratuit, et les polling intervals sont fiables. Twitter pour le reste. AP pour des news desks vraiment orientés production.
Latency budget : read-to-trade en moins de 2 secondes
Le bot doit ingérer, classer, décider et placer un ordre en 1 à 2 secondes au total. Budget :
- Ingest : 50 à 300 ms (websocket feed, RSS poll, Twitter stream).
- Classify : 50 à 200 ms (regex / keyword match, éventuellement LLM si vous cachez le prompt).
- Decide : 50 ms (lookup dans une table de règles ; mapping d’un news tag vers un market slug).
- Place : 200 à 500 ms (ordre FOK signé vers le CLOB).
Le plus gros consommateur de budget est la LLM classification. Un appel GPT-4 de 500 tokens ajoute 1 à 3 secondes ; la fenêtre d’arbitrage est alors entièrement perdue. En production, classez avec des keyword rules ; utilisez un LLM uniquement pour calibrer hors ligne l’ensemble de mots-clés.
False-positive filters
Les news-arb bots qui ne filtrent pas les false positives tradent sur chaque retweet et s’érodent via le spread tax. Trois filtres.
- Source whitelist : n’agir que sur les comptes/feeds d’une liste pré-approuvée. La liste est petite (10 à 30 sources).
- Keyword + confirmation pair : une seule correspondance de mot-clé est du bruit ; des correspondances dans deux sources indépendantes en 30 s constituent un signal.
- Market-state guard : ignorer les marchés qui ont déjà bougé de > 5 % dans les 60 dernières secondes - quelqu’un d’autre a déjà capté la news, l’avantage est perdu.
Taux de false-positive de filtres bien réglés : environ 1 sur 5 à 10. Un taux de false-positive de 90 % détruit la stratégie ; un taux de 50 % reste exploitable avec de petites tailles de position.
Quand l’avantage des news disparaît
La fenêtre entre "news publique" et "prix qui reflète la news" se referme plus vite chaque année. En 2020, les marchés politiques à prix moyen mettaient des minutes à absorber un headline. En 2026, ces mêmes headlines se compressent à 30 à 90 secondes avant que le prix ait entièrement bougé.
Signes que l’avantage est mort : le PnL par trade sur les trades signalés passe de +3c à plat sur une fenêtre de 30 trades ; le taux de false positives qui s’avèrent déjà priced in dépasse 70 % ; le marché touche votre ask FOK en moins de 200 ms parce que quelqu’un d’autre est arrivé avant vous.
Le pivot honnête quand l’avantage disparaît : se tourner vers des news plus lentes et plus interprétatives (décisions de justice, minutes de réunions de banques centrales), où le sens à donner prend plus de temps que la course à la latence. Ou arrêter d’exploiter la stratégie.
Code : poll news feed et placer des FOK sur les marchés pertinents
Squelette de production : poll une source de news, exécuter des rule matches, lancer des ordres FOK sur les correspondances.
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 secondes pour RSS. WebSocket quand c’est disponible (Twitter, AP wire). Dédupliquez toujours à l’aide de l’ID fourni par la source ; n’assumez jamais qu’un polling est exactement une seule fois.
Risque : half-truths et headlines rétractées
Le pire jour d’un news-arb bot est celui où une headline s’avère fausse. Exemples : un tweet Reuters dit "Trump fires Yellen", le marché bondit de 8 cents, 12 minutes plus tard le tweet est supprimé et corrigé. Un bot qui a acheté à +8c détient désormais l’inventaire à -3c, sans recours.
Défenses :
- Two-source confirmation : ne jamais trader sur un seul tweet ; exiger un signal corroborant d’une seconde source indépendante dans les 60 à 180 secondes.
- Position size scaled to source confidence : AP wire = taille complète ; Twitter d’un journaliste spécialisé vérifié = 50 % ; source de rumeur = 25 %.
- Auto-exit on retraction signal : si une source que vous avez utilisée publie une correction dans les 30 minutes, sortez au marché quoi qu’il arrive côté PnL.
Le problème des walk-backs impose un plafond dur sur la taille de position en news-arb. Trader 50 $ par signal permet de survivre à un taux de false-positive de 30 % ; trader 500 $ ne le permet pas.





