Tutti gli articoli
GuideDati di mercatoBacktestingGuida all’acquisto

Come scegliere un’API di dati per Polymarket

Ogni fornitore sbandiera un numero grande. Quasi nessuno sbandiera il numero che conta. Ecco cosa testare davvero prima di impegnarti, compresi i casi in cui non ti serve affatto un fornitore a pagamento.

9 min di lettura

Se stai cercando dati storici di Polymarket, hai già sbattuto contro il muro che porta tutti qui: l’API di Polymarket fornisce solo lo stato attuale. Chiedi l’order book di un mercato risolto e ricevi un 404; lo storico dei prezzi che conserva ha circa un punto al minuto, senza nulla sulla profondità. Nessuno dei due è bloccato dietro un piano. Il book semplicemente non c’è.

Quindi ti serve un fornitore che abbia registrato il book mentre i mercati erano attivi. Il problema è che ogni fornitore del settore sbandiera lo stesso numero di punta, ed è quasi il meno informativo che ci sia. Ecco cosa controllare invece.

Ne costruiamo uno anche noi

PolyTest è un’API di dati per Polymarket, quindi non siamo una parte neutrale. Quella che segue è la checklist che useremmo se stessimo comprando invece di vendere, compresa una sezione su quando non dovresti pagare nessuno, noi compresi. Esegui i test invece di fidarti del marketing di chiunque, il nostro in primis.

1. Snapshot per mercato al minuto, non snapshot totali

Il numero totale di snapshot è il dato di punta ovunque, ed è quasi privo di significato. Un totale è solo frequenza di acquisizione × mercati monitorati × tempo di raccolta. Un fornitore con un numero più grande potrebbe avere una risoluzione migliore, oppure potrebbe semplicemente raccogliere dati da più tempo, o contare righe ridondanti su mercati che nessuno scambia.

Quello che ti serve davvero sapere è: sul mercato specifico che mi interessa, quanti snapshot al minuto ottengo? Un mercato a 5 minuti campionato due volte al minuto ti dà dieci punti dati per modellare l’intero ciclo di vita del mercato. Non basta per testare nulla.

# Pull the same market from each provider, then compare density.
snaps = fetch_snapshots(market_id)          # provider-specific call

span_s  = (snaps[-1]["timestamp"] - snaps[0]["timestamp"]) / 1000
per_min = len(snaps) / (span_s / 60)

print(f"{len(snaps)} snapshots over {span_s:.0f}s = {per_min:.1f}/min")

# Gaps matter more than the average. One 90-second hole in a 5-minute
# market means you cannot model the part where it was decided.
gaps = [
    (b["timestamp"] - a["timestamp"]) / 1000
    for a, b in zip(snaps, snaps[1:])
]
print(f"max gap: {max(gaps):.1f}s   median: {sorted(gaps)[len(gaps)//2]:.1f}s")

Controlla il buco massimo, non la media

Le medie nascondono il modo in cui le cose si rompono. Un feed con una media di 4 snapshot al minuto ma con un buco di 90 secondi durante l’ultimo minuto di un mercato a 5 minuti è inutile proprio nel periodo che ti interessa. Chiedi a ogni fornitore il buco massimo su un mercato di esempio: se non sa risponderti, questo ti dice qualcosa.

2. Vera profondità del book, o solo top of book?

È il fattore più determinante per capire se il tuo backtest significa qualcosa, ed è dove il linguaggio del marketing diventa più sfuggente. "Dati dell’order book" può voler dire qualsiasi cosa, dalla scala completa a una singola coppia bid/ask.

Cosa ottieniCosa puoi testare
Solo il prezzo medioQuasi nulla. Il prezzo medio non è un prezzo a cui puoi scambiare.
Miglior bid / miglior askSe lo spread si mangia il tuo vantaggio: necessario ma non sufficiente.
Scala completa della profonditàI prezzi di esecuzione reali per una data size, slippage compreso.

Se prevedi di operare con size significative, ti serve la scala. Un ordine da 500 quote su un mercato Up/Down sottile non viene eseguito al primo livello: scorre il book, e la differenza tra il primo livello e il tuo vero prezzo medio di esecuzione è spesso più grande del vantaggio che stai cercando di testare.

def simulate_fill(levels, qty):
    """Walk the ladder. This is what actually happens to your order."""
    filled = cost = 0.0
    for lvl in levels:
        take = min(lvl["size"], qty - filled)
        cost += take * lvl["price"]
        filled += take
        if filled >= qty:
            break
    if filled < qty:
        return None            # Not enough liquidity to fill at all.
    return cost / filled

book = snapshot["orderbook"]["asks"]
print("top of book:", book[0]["price"])
print("true fill  :", simulate_fill(book, 500))
# A gap of 2-3c here on a $1 binary is routine, and it is
# larger than most claimed edges.

3. I mercati risolti vengono davvero conservati?

L’unico motivo per pagare questi dati è che Polymarket li scarta. Quindi verifica che il fornitore li conservi davvero, invece di fare da proxy agli endpoint live con una cache.

Il test richiede un minuto: trova un mercato risolto settimane fa, chiedi i suoi snapshot e verifica di ottenere un percorso dei prezzi completo con la profondità, non solo un record di metadati che dice quale lato ha vinto. Conoscere l’esito non è un dato; ogni strategia che valga la pena testare riguarda il percorso, non la risposta.

I metadati non sono storico

Alcune fonti restituiscono volentieri la domanda, il volume e l’esito vincente di un mercato risolto, perché quel tanto sopravvive nei feed pubblici. Sono dati sui tassi di base. Non possono dirti a che prezzo sarebbe stato eseguito il tuo ordine, e qualsiasi sbilanciamento visibile nei tassi di base è già prezzato dai market maker prima che tu lo veda.

4. Finestra storica contro profondità storica

I fornitori vendono lo storico in due forme diverse, e la distinzione conta più del numero di giorni:

  • Una finestra mobile: gli ultimi N giorni, con i dati più vecchi che escono dalla finestra. Va bene per tarare la strategia sulle condizioni di mercato attuali.
  • Un archivio conservato: tutto dall’inizio della raccolta. Necessario se vuoi testare su regimi di volatilità diversi.

Quale ti serve dipende onestamente dalla tua strategia. Se operi sui mercati a 5 minuti e ritari ogni settimana, 30 giorni bastano e avanzano, e pagarne di più è uno spreco. Se vuoi sapere se il tuo vantaggio è sopravvissuto alle condizioni dell’anno scorso, una finestra mobile non può risponderti a nessun prezzo.

Attenzione a testare un solo regime

Il modo più comune in cui un backtest mente è quando gira interamente all’interno di un unico regime di mercato. Una strategia tarata su 30 giorni tranquilli sembra solida finché non arriva la volatilità. Se la tua finestra è breve, come minimo dividila e verifica che il risultato regga in entrambe le metà.

5. Un throughput che puoi davvero usare

I rate limit sembrano un dettaglio finché non esegui il tuo primo backtest reale. Scaricare ogni snapshot di un mese di mercati a 5 minuti su tre monete richiede molte richieste, e un limite di 10 req/sec trasforma un pomeriggio di ricerca in un lavoro notturno.

Contano due numeri, e spesso i fornitori ne pubblicano solo uno: il throughput sostenuto (richieste al minuto) e la capacità di burst (richieste al secondo). Un limite al minuto alto con un burst basso blocca comunque un download in parallelo.

PianoRichieste / minBurst / secStorico
PolyTest Free302Mercati recenti
PolyTest Builder2501214 giorni
PolyTest Pro75040Archivio completo
PolyTest EnterprisePersonalizzatoPersonalizzatoCompleto + esportazione in blocco
I nostri dati, come riferimento: controlla i limiti pubblicati di ogni fornitore e confronta entrambe le colonne. Vedi prezzi e rate limit.

Se scarichi regolarmente storico in blocco, chiedi anche se esiste un percorso di esportazione in blocco. Paginare un milione di snapshot attraverso un endpoint REST è possibile, ma non è lo strumento giusto.

6. Puoi valutarlo prima di pagare?

Non puoi valutare la qualità dei dati da una pagina di marketing. Qualsiasi fornitore sicuro dei propri dati ti lascerà guardarli prima di pagare, con un piano gratuito o una prova, e idealmente con un riferimento API che puoi leggere senza registrarti.

Sii lucido, però, su a cosa serve un piano gratuito o una prova. La nostra è una prova di 3 giorni del piano Builder completo, profondità dell’order book inclusa, così puoi controllare copertura, densità degli snapshot e forma delle risposte prima di impegnarti; ma tre giorni e una finestra di 14 giorni ne fanno uno strumento di valutazione, non un piano per la ricerca. Qualunque sia il fornitore, capisci quali parti si possono davvero provare gratis prima di trarre conclusioni.

7. I tuoi strumenti riescono a leggere la documentazione?

Una considerazione più recente, e che vale la pena verificare perché è invisibile finché non ti morde. Se sviluppi con Cursor, Claude Code o Codex, la capacità del tuo assistente di scrivere un’integrazione corretta dipende dal fatto che possa leggere la documentazione del fornitore.

Alcuni fornitori di dati bloccano i crawler AI in robots.txt: una scelta legittima sui dati di addestramento, ma significa che i modelli non possono vedere la loro documentazione e si inventeranno l’API. Puoi controllare qualsiasi fornitore in circa cinque secondi:

curl -s https://<provider>/robots.txt | grep -iA1 "GPTBot\|ClaudeBot\|Google-Extended"

# "Disallow: /" under those agents means your AI assistant
# cannot read their docs and will guess at the API instead.

Come riferimento, PolyTest permette l’accesso a quei crawler e pubblica llms.txt, llms-full.txt e una specifica OpenAPI. Il test pratico però è più semplice che leggere file di policy: chiedi al tuo assistente di scrivere un’integrazione per ogni fornitore e guarda quale produce codice funzionante.

Quando non dovresti pagare nessuno

Vale la pena dirlo chiaramente, perché vale per noi come per chiunque altro. Non ti serve un fornitore di dati a pagamento se:

  • Ti servono solo dati live. L’API pubblica e gli stream WebSocket di Polymarket sono gratuiti, non richiedono autenticazione per i dati di mercato e vanno benissimo. I fornitori di dati storici esistono per lo storico, nient’altro.
  • Stai testando l’infrastruttura, non una strategia. Autenticazione, parsing, riconnessioni e gestione dei rate limit si possono esercitare tutti sugli endpoint live gratuiti.
  • La tua strategia non dipende dalle esecuzioni. Se studi tassi di base o frequenze di risoluzione, quelle informazioni sopravvivono nei metadati pubblici.
  • Sei disposto a registrarli da solo. Far girare un collector sul WebSocket pubblico è un’opzione davvero praticabile. Costa un piccolo server e la disciplina di tenerlo in funzione; il problema è che parti con zero storico e non puoi recuperare il passato, quindi serve solo se inizi ben prima di aver bisogno dei dati.

Il motivo per pagare è ristretto e specifico: vuoi uno storico che non hai registrato, a partire da oggi.

Un test che puoi fare oggi pomeriggio

  1. Registrati al piano gratuito o alla prova di ogni fornitore della tua lista.
  2. Scegli un mercato (stessa moneta, stesso timeframe, stesso giorno) e scaricalo da ciascuno.
  3. Confronta gli snapshot al minuto e il buco massimo. Densità e continuità battono qualsiasi numero di punta.
  4. Controlla i livelli del book per snapshot. Se non è una scala, non puoi modellare le esecuzioni.
  5. Chiedi un mercato risolto un mese fa e verifica di ottenere un percorso completo, non solo un esito.
  6. Esegui lo schema di query realistico più pesante che hai e guarda quale fornitore ti limita per primo.
  7. Chiedi al tuo assistente AI di scrivere un’integrazione per ciascuno e guarda quale documentazione riesce davvero a leggere.

Questa sequenza richiede un pomeriggio e ti dice più di qualsiasi tabella comparativa, compresa questa. Se vuoi iniziare dalla nostra, c’è una prova gratuita di 3 giorni, e il riferimento degli endpoint si può leggere senza nemmeno registrarsi.

Domande frequenti

Cosa dovrei cercare in un fornitore di dati storici di Polymarket?
Controlla gli snapshot per mercato al minuto invece del numero totale di snapshot, e il buco massimo tra snapshot invece della media. Verifica di ottenere una scala completa dell’order book invece del solo prezzo medio o del top of book, perché solo una scala ti permette di modellare esecuzioni realistiche. Verifica che i mercati risolti vengano davvero conservati con il loro percorso dei prezzi completo, non solo con i metadati. Poi confronta i rate limit sostenuti e di burst, e se puoi valutare i dati prima di pagare.
Perché non posso usare l’API di Polymarket per il backtesting?
L’API di Polymarket fornisce solo lo stato attuale del mercato. Una volta che un mercato si risolve, chiedere il suo order book restituisce 404 con "No orderbook exists for the requested token id", e lo storico dei prezzi che conserva ha circa un punto al minuto. I metadati come l’esito vincente e il volume totale sopravvivono, ma la profondità del book no, e un prezzo al minuto è troppo grossolano per simulare le esecuzioni, quindi senza un archivio di terzi non c’è nulla su cui fare backtest dell’esecuzione.
Un numero di snapshot più grande è meglio?
Non necessariamente. Il numero totale di snapshot è solo la frequenza di acquisizione moltiplicata per i mercati monitorati e per il tempo di raccolta, quindi un numero più grande può significare una risoluzione migliore, una raccolta più lunga, una copertura più ampia o semplicemente più righe ridondanti su mercati illiquidi. Ciò che determina se i dati sono utilizzabili è la densità degli snapshot sui mercati specifici che scambi, il buco massimo tra snapshot consecutivi e se ogni snapshot contiene una vera profondità del book.
Mi serve la profondità dell’order book o basta il prezzo medio?
Ti serve la profondità se prevedi di operare con size significative. Il prezzo medio non è un prezzo a cui puoi concludere operazioni, e gli spread dei mercati Up/Down di Polymarket sono regolarmente di 2-5 centesimi su un contratto che si regola a $1, spesso più del vantaggio che si sta testando. Una scala completa ti permette di scorrere il book e calcolare un vero prezzo medio di esecuzione slippage compreso, ed è questo che distingue un backtest da un esercizio di aritmetica.
Posso semplicemente registrare da solo i dati di Polymarket invece di pagare?
Sì, ed è una scelta ragionevole. Gli stream WebSocket pubblici di Polymarket sono gratuiti e non richiedono autenticazione per i dati di mercato, quindi un collector su un piccolo server può costruirti un archivio. Il limite è che parti con zero storico e non puoi recuperare il passato: ottieni dati solo dal momento in cui inizi a raccoglierli. Pagare un fornitore ha senso proprio quando ti serve uno storico che non hai registrato.

Ottieni i dati storici che Polymarket non conserva

PolyTest registra i mercati crypto Up/Down di Polymarket mentre sono attivi: 240M+ snapshot con 8 livelli di profondità dell’order book, timestamp sotto il secondo e mercati risolti conservati. Inizia con una prova gratuita di 3 giorni.

Continua a leggere