Come fare il backtest delle strategie Polymarket sull'order book
Un last price campionato una volta all'ora non può dirti se il tuo ordine sarebbe stato eseguito. Ecco come fare il backtest di Polymarket contro il book su cui avrebbe davvero operato.
Per fare il backtest di una strategia Polymarket in modo corretto, riproduci l'order book storico contro cui la strategia avrebbe operato — l'intera scala di bid/ask a ogni variazione — e dimensioni i fill rispetto alla liquidità realmente in essere su quei livelli. Fare backtest su un last price o su un singolo mid sovrastima sistematicamente il tuo edge, perché nasconde lo spread e lo slippage che un ordine reale paga.
Perché i backtest sul last price mentono
La maggior parte dei dati Polymarket disponibili gratuitamente è il last traded price, spesso campionato una volta all'ora. È sufficiente per disegnare un grafico e niente di più. Un backtest deve rispondere a una domanda più difficile: se il mio ordine fosse stato in essere (o avesse attraversato lo spread) in quel momento, sarebbe stato eseguito, in che quantità e a quale prezzo?
Rispondere richiede l'order book — ogni bid e ask in essere con la relativa size — non un singolo numero. Una strategia testata contro il mid presuppone di aver sempre eseguito al mid con zero slippage, il che non è mai vero. Sui mercati crypto a brevissima scadenza, dove gli spread si allargano in prossimità del settlement, quell'assunzione può trasformare una strategia perdente in un'apparente vincente.
Passo 1 — Procurati i dati dell'order book a profondità completa
Parti da dati che registrano il book completo su entrambi i lati, catturati a ogni variazione anziché su un clock fisso. DepthFeed cattura Polymarket in modo event-driven direttamente dalla websocket del CLOB, così ogni evento di book e di variazione di prezzo è registrato con l'intera scala di bid/ask — non un campione orario o al minuto che salta la vita di un mercato da cinque minuti.
Estrai i mercati che ti servono tramite l'API REST: scoprili con GET /v3/{coin}/markets, poi estrai la profondità da /v3/{coin}/markets/{id}/snapshots. Ogni snapshot porta con sé gli array di prezzo e size di bid/ask oltre ai timestamp di exchange e di ricezione in epoch-millis.
Passo 2 — Ricostruisci il book in ogni istante
Riproduci gli snapshot in ordine di timestamp per ricostruire il book così come si presentava in qualsiasi istante. Poiché i dati sono event-driven, la ricostruzione è esatta tra un evento e l'altro — non c'è alcuna interpolazione a indovinare. Questo è lo stato a cui reagisce la tua strategia: best bid, best ask, la profondità dietro ciascuno e lo spread.
Passo 3 — Modella i fill contro la profondità reale
Ora simula l'esecuzione in modo onesto. Un ordine marketable percorre il book: si esegue prima contro il miglior livello, poi contro il successivo, finché la sua size non è esaurita — perciò il suo prezzo medio è peggiore del touch ogni volta che consuma più del livello in cima. Un ordine in essere si mette in coda e viene eseguito solo se il mercato attraversa il suo prezzo con size sufficiente alle spalle.
Dimensionare i fill rispetto alla scala registrata è tutto il punto: ti dà slippage e probabilità di fill realistici, invece della finzione di aver sempre operato al mid.
Passo 4 — Aggancia il prezzo del sottostante
I mercati crypto up/down di Polymarket sono guidati dal movimento spot dell'asset sottostante. Ogni snapshot DepthFeed si aggancia a un prezzo di riferimento Binance ad alta frequenza tramite timestamp epoch-millis, così puoi allineare lo stato del book con il movimento spot che ha riprezzato il contratto — essenziale per qualsiasi strategia che opera sulla relazione tra il prezzo crypto e la probabilità implicita del mercato.
Passo 5 — Vai in live con lo stesso codice
L'API REST storica e lo stream WebSocket live emettono oggetti snapshot JSON identici. Questo significa che il loader scritto per riprodurre la storia legge il feed live senza modifiche — nessuna riscrittura tra ricerca e produzione. Fai il backtest, valida, poi punta lo stesso codice su wss://api.depthfeed.com/v3/stream e opera.
Errori frequenti
- Usare i dati del last price: nasconde spread e slippage; gonfia i rendimenti del backtest.
- Snapshot a intervallo fisso: un campione orario o al minuto manca gran parte della vita di un mercato da 5 minuti.
- Ignorare la posizione in coda: presumere che gli ordini in essere si eseguano sempre sovrastima le strategie passive.
- Look-ahead bias: reagisci solo ai dati con un timestamp di ricezione pari o anteriore al momento della tua decisione.
- Tralasciare il sottostante: l'edge sui crypto up/down vive di solito nella relazione spot-probabilità.
Key takeaways
- 01Fai il backtest contro l'order book, non contro il last price — è la profondità a determinare i fill.
- 02Usa dati event-driven: i campioni a intervallo fisso mancano la vita dei mercati a breve scadenza.
- 03Modella gli ordini marketable che percorrono il book e gli ordini in essere che attendono in coda.
- 04Aggancia il prezzo crypto sottostante per catturare la relazione spot-probabilità.
- 05Scegli dati la cui storia e feed live condividano un unico formato, così operi con il codice che hai testato.
Un last price campionato una volta all'ora non può dirti se il tuo ordine sarebbe stato eseguito. Ecco come fare il backtest di Polymarket contro il book su cui avrebbe davvero operato.
Inizia gratis