Polymarket Bot Tutorial · Capitolo 14 di 32

News arbitrage su Polymarket: come battere il mercato sulle headline, source feeds (RSS/Twitter/AP), latency budgets, false-positive filters e quando il news edge si dissolve nel market price.

Cosa copre questo capitolo

Il news arbitrage è la strategia di tradare informazioni pubbliche più velocemente di quanto il mercato le reprices. Il vantaggio esiste ma è ristretto — la maggior parte delle "news" è già nel prezzo nel momento in cui un essere umano può leggerle. Questo capitolo copre quali source battono davvero il mercato, il latency budget che definisce la strategia e il false-positive filter senza il quale il bot trada ogni retweet.

Questo è il capitolo 14 della nostra serie in 32 parti su come costruire un Polymarket trading bot. Trattiamo l'argomento in profondità nelle sezioni qui sotto. Il body content di ciascuna sezione viene scritto e rilasciato capitolo per capitolo; le FAQ e i riferimenti sono già completi e riflettono l'esperienza di produzione maturata gestendo il nostro trader.

  • Come si presenta un information edge
  • News sources: RSS, Twitter, AP, official feeds
  • Latency budget: read-to-trade sotto 2 secondi
  • False-positive filters
  • Quando il news edge muore
  • Code: poll news feed e piazza FOK sui mercati rilevanti
  • Rischio: half-truths e headline ritrattate

Come si presenta un information edge

News arbitrage significa tradare informazioni pubbliche più velocemente di quanto il mercato le reprices. L'edge esiste in una finestra stretta — di solito 30-300 secondi — tra il momento in cui un fatto diventa pubblico e quello in cui Polymarket lo riflette.

Perché l'edge sia reale, tre cose devono essere vere. Primo, la news source deve essere più veloce del trader medio su Polymarket (Twitter è più veloce della stampa mainstream; il wire AP è più veloce di Twitter). Secondo, la news deve essere inequivocabile (un annuncio di infortunio, una sentenza) — l'interpretazione consuma latency. Terzo, il mercato deve essere abbastanza ampio da rendere il movimento di prezzo degno del spread tax.

I bot che inseguono questo edge si dividono in due campi: quelli che si abbonano a source dirette e fanno parsing, e quelli che osservano un movimento di prezzo insolito su Polymarket e inferiscono che sia successo qualcosa. Entrambi sono validi; i primi anticipano, i secondi seguono.

News sources: RSS, Twitter, AP, official feeds

Source ordinate per latency verso lo stato di informazione pubblica, dalla più veloce in poi.

  • Direct primary sources: atti giudiziari, comunicati stampa governativi, annunci delle banche centrali. Spesso hanno RSS pubblico o API. Le più veloci, con il tasso più basso di false positive.
  • AP wire / Reuters Eikon (paid). Il wire usato dai trader tradizionali. Vantaggio di ~5-30 secondi rispetto a Twitter consumer.
  • Twitter (X, paid API). Liste di account verificati: account ufficiali delle organizzazioni, beat reporters. Le API gratuite sono troppo limitate; paga il tier Pro o usa un relay service.
  • Specialized newsletters / Discord: Substack a pagamento, feed di settore sotto embargo. Utili per mercati di nicchia (crypto, esports).
  • Mainstream press websites: troppo lente per l'edge del news-arb.

RSS per tutto ciò che pubblica RSS — è gratis, e gli intervalli di polling sono affidabili. Twitter per il resto. AP per news desk seri di produzione.

Latency budget: read-to-trade sotto 2 secondi

Il bot deve ingest, classify, decide e piazzare un ordine entro 1-2 secondi totali. Budget:

  • Ingest: 50-300ms (websocket feed, RSS poll, Twitter stream).
  • Classify: 50-200ms (regex / keyword match, opzionalmente LLM se fai cache del prompt).
  • Decide: 50ms (rules table lookup; mapping da news tag a market slug).
  • Place: 200-500ms (FOK signed order su CLOB).

Il singolo maggiore consumatore di budget è la classificazione con LLM. Una chiamata GPT-4 da 500 token aggiunge 1-3 secondi; ecco, tutta la finestra di arb è già sparita. In produzione, classifica con keyword rules; usa un LLM solo per la calibrazione offline del set di keyword.

False-positive filters

I news-arb bot che non filtrano i false positive tradano ogni retweet e sanguinano attraverso lo spread tax. Tre filtri.

  • Source whitelist: agisci solo su account/feed in una lista pre-approvata. La lista è piccola (10-30 source).
  • Keyword + confirmation pair: un singolo keyword match è rumore; match su due source indipendenti entro 30s è segnale.
  • Market-state guard: salta i mercati che si sono già mossi di > 5% negli ultimi 60 secondi — qualcun altro ha già preso la news, l'edge è sparito.

Tasso di false positive di filtri ben tarati: circa 1 su 5-10. Un tasso del 90% distrugge la strategia; un 50% è gestibile con position size piccole.

Quando il news edge muore

La finestra da "news pubblica" a "price riflette la news" si chiude sempre più in fretta ogni anno. Nel 2020, i mercati politici a prezzo intermedio impiegavano minuti ad assorbire una headline. Nel 2026, le stesse headline si comprimono in 30-90 secondi prima che il prezzo si sia mosso completamente.

Segnali che l'edge è morto: il PnL per trade sulle operazioni segnalate scende da +3c a flat in una finestra di 30 trade; il tasso di false positive che risultano già prezzate supera il 70%; il mercato colpisce il tuo FOK ask entro 200ms perché qualcun altro è arrivato prima.

Il pivot onesto quando l'edge muore: passare a news più lente e interpretative (sentenze, verbali delle riunioni delle banche centrali) dove il parsing del significato richiede più tempo della gara di latency. Oppure smettere di usare la strategia.

Code: poll news feed e piazza FOK sui mercati rilevanti

Scheletro di produzione: fai polling di una news source, esegui match sulle rule, fai fire di ordini FOK sui hit.

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 secondi per RSS. WebSocket dove disponibile (Twitter, AP wire). Fai sempre dedup usando l'ID fornito dalla source; non assumere mai che il polling sia exactly-once.

Rischio: half-truths e headline ritrattate

Il giorno peggiore per un news-arb bot è quando una headline si rivela sbagliata. Esempi: un tweet Reuters dice "Trump fires Yellen", il mercato sale di 8 cent, 12 minuti dopo il tweet viene cancellato e corretto. Un bot che ha comprato a +8c ora sta tenendo inventory a -3c senza alcun rimedio.

Difese:

  • Two-source confirmation: non tradare mai su un singolo tweet; richiedi un segnale di conferma da una seconda source indipendente entro 60-180 secondi.
  • Position size scalata alla source confidence: AP wire = size piena; Twitter da un beat reporter verificato = 50%; rumor source = 25%.
  • Auto-exit on retraction signal: se una source che hai usato emette una correzione entro 30 minuti, esci a market indipendentemente dal PnL.

Il problema del walk-back è un tetto duro sul position sizing del news-arb. Tradare $50 per segnale ti permette di sopravvivere a un 30% di false positive; tradare $500 no.

Domande frequenti

Un bot retail può davvero battere il mercato sulle news?
Sì - ma solo se hai una news source veloce e affidabile e un execution path a bassa latency. Twitter (ora X) era lo standard d'oro finché non sono arrivate le restrizioni API; RSS da Reuters/AP/Bloomberg è la migliore alternativa. L'edge retail si è ridotto con l'aumentare della competizione dei bot; aspettati un read-to-trade totale di 200-1000ms, non 50ms.
A quali news source dovrei abbonarmi?
I feed RSS di AP (apnews.com), Reuters (reuters.com) e BBC ti danno una copertura ampia. Per Polymarket in particolare: gli account Twitter e i canali Discord della piattaforma spesso preannunciano i cambiamenti di mercato. Per temi specifici: comunicati stampa governativi (PDF della Federal Reserve, CFTC, WHO).
Quanto velocemente deve reagire il mio bot alle news?
Per un edge retail: sotto i 2 secondi da quando la news appare a quando il tuo ordine viene inviato. Per un edge da livello HFT (contro altri bot): sotto i 200ms. La maggior parte del retail può competere nella finestra di 1-3 secondi perché la maggior parte degli altri bot retail è ancora più lenta o assente su certi tipi di feed.
Come evito trigger di news false positive?
Associa la news al mercato specifico con attenzione. "Ceasefire" può apparire in 100 contesti; solo alcuni contano per il tuo mercato specifico. Usa filtri keyword AND market-tag: keyword "ceasefire" AND market-tag "Israel-Hezbollah" prima di triggerare. Ancora meglio - fai LLM classify della news come rilevante prima di tradare.
Cosa succede quando una news viene poi ritrattata?
La tua posizione può passare da vincente a perdente in pochi secondi. I news-arb bot hanno bisogno di una policy di uscita rapida: se una source successiva contraddice la headline entro N minuti, chiudi immediatamente la posizione anche in perdita. La nostra regola: chiudi a -3% fino a -5% se qualsiasi follow-up riduce la confidence nel segnale originale.
Il news arbitrage è legale?
Tradare su news pubbliche è legale ovunque sappiamo. Tradare su material non-public information (tip insider, leak prima del rilascio ufficiale) no. Attieniti a source pubbliche e il trade è regolare.