Come fare backtest delle strategie sui mercati di previsione
Una guida passo passo: dal primo snapshot scaricato a un backtest completo con una simulazione realistica delle esecuzioni.
Perché il backtesting dei mercati di previsione è diverso
I mercati di previsione non sono come le crypto spot. I prezzi sono compresi tra 0 e 1, i mercati hanno scadenze fisse e i profili di liquidità non assomigliano per niente a un order book BTC/USDT. Una strategia che funziona su Binance non funzionerà per forza su Polymarket. Ti servono dati specifici dei mercati di previsione, e ti serve la profondità dell’order book, non solo i feed dei prezzi.
Passo 1: ottieni i dati storici
PolyTest è un’API di backtesting per Polymarket che permette ai trader di riprodurre gli order book storici e testare strategie di trading sui mercati di previsione crypto. Registrati su polytest.io, avvia la prova gratuita di 3 giorni, prendi una chiave API e inizia a fare richieste. Avrai accesso a dati reali degli snapshot in meno di 5 minuti.
# List BTC 5-minute markets
curl -H "X-API-Key: YOUR_API_KEY" \
"https://api.polytest.io/api/v1/markets?coin=btc&market_type=5m&limit=20"Passo 2: capisci i dati
Ogni snapshot ti dà: miglior bid, miglior ask, prezzo medio, spread, volume, 8 livelli di profondità dell’order book (entrambi i lati), il prezzo di riferimento della moneta sottostante e un timestamp al millisecondo. La profondità dell’order book è la vera differenza: senza di essa stai facendo backtest solo sul prezzo medio, che non ti dice nulla su come sarebbero le tue esecuzioni reali.
Passo 3: evita il look-ahead bias
L’errore di backtesting più comune è usare dati futuri per prendere decisioni passate. Gli snapshot di PolyTest sono point-in-time: ognuno rappresenta esattamente com’era il mercato in quel momento. Elaborali in ordine cronologico e usa solo i dati che sarebbero stati disponibili al momento della decisione. Non sbirciare mai lo snapshot successivo per decidere cosa fare adesso.
Passo 4: simula esecuzioni realistiche
È qui che la maggior parte dei backtest crolla. Se presumi di poter comprare al prezzo medio, i risultati sembreranno molto migliori della realtà. Usa i dati sulla profondità dell’order book per simulare le esecuzioni: scorri i livelli, consuma la liquidità disponibile a ogni prezzo e calcola il prezzo medio di esecuzione, slippage compreso. Un ordine da 100 quote con prezzo medio 0.52 potrebbe in realtà essere eseguito a 0.527 se sul lato ask la liquidità è scarsa.
function simulateFill(
orderbook: { price: number; size: number }[],
quantity: number
) {
let filled = 0;
let cost = 0;
for (const level of orderbook) {
const fillAtLevel = Math.min(level.size, quantity - filled);
cost += fillAtLevel * level.price;
filled += fillAtLevel;
if (filled >= quantity) break;
}
return {
avgPrice: cost / filled,
filled,
slippage: cost / filled - orderbook[0].price,
};
}Passo 5: tieni conto dei tempi
I mercati Up/Down di Polymarket si risolvono a orari precisi. Un mercato BTC a 5 minuti che inizia alle 14:00 si risolve alle 14:05. La tua strategia deve sapere quando entrare e quando il mercato chiude. Gli snapshot di PolyTest includono timestamp al millisecondo, così puoi modellare con precisione il momento d’ingresso. Non dare per scontato di poter entrare all’apertura del mercato: quando vedi il prezzo, potrebbe essersi già mosso.
Passo 6: misura ciò che conta
Nei mercati di previsione il win rate da solo è fuorviante. Tieni traccia di: P&L al netto dello slippage, drawdown massimo, Sharpe ratio se esegui la strategia in modo continuo, e di come cambiano i risultati in diverse condizioni di mercato. Una strategia che macina profitti nei mercati in trend potrebbe perdere in quelli laterali e nervosi. Usa il filtro per intervallo di tempo di PolyTest per testare periodi diversi.
Errori comuni
Fare backtest sul prezzo medio invece di simulare le esecuzioni sull’order book. Ignorare lo spread: sui mercati Up/Down di Polymarket può essere di 2-5 centesimi, e si mangia i margini in fretta. Testare una sola moneta o un solo timeframe e presumere che il risultato valga in generale. Fare overfitting su una finestra temporale breve. Non considerare che i tuoi ordini muoverebbero il mercato se operi con size significative.