Polymarket Bot Tutorial · Capitolo 23 di 32
Pattern di bot per i mercati Polymarket BTC/ETH up-down a 5 minuti: 288 scadenze al giorno, esecuzione latency-critical, edge sources, perché la maggior parte dei retail bot perde, e skeleton del codice per la strategia.
Cosa copre questo capitolo
I mercati BTC up/down a 5 minuti di Polymarket si risolvono 288 volte al giorno, moltiplicando qualsiasi edge attraverso molte ripetizioni. La maggior parte dei retail bot perde qui, nonostante il volume, perché la latency e la soglia dell'edge sono fissate da aziende professionali. Questo capitolo mostra ciò che regge.
Questo è il capitolo 23 della nostra serie in 32 parti sulla costruzione di un Polymarket trading bot. Trattiamo il tema in profondità nelle sezioni qui sotto. Il contenuto principale di ciascuna sezione viene scritto e rilasciato capitolo per capitolo; le risposte FAQ e i riferimenti sono già completi e riflettono l'esperienza di produzione maturata gestendo il nostro trader.
- Cosa sono i mercati crypto a 5 minuti
- 288 scadenze al giorno = ripetizioni compounding
- Perché i retail bot perdono qui
- Edge sources che resistono
- Latency budget
- Risk: piccolo per trade, grande per giorno
- Code: skeleton della strategia a 5 minuti
Cosa sono i mercati crypto a 5 minuti
I mercati crypto a 5 minuti di Polymarket sono domande binarie up/down sul prezzo di BTC (e ETH). Nuovi mercati si aprono ogni 5 minuti; ciascuno si risolve sul prezzo di chiusura 5 minuti dopo l'apertura, prendendo i dati da un oracle pubblicato.
Questo genera 288 mercati per asset al giorno. L'opportunità di compounding per qualsiasi edge è enorme: anche un piccolo edge per trade diventa significativo quando puoi sfruttarlo oltre 100 volte al giorno.
Il rovescio della medaglia: l'asticella è fissata da aziende professionali. Il mid si muove in stretto lockstep con il feed di prezzo sottostante, e i book sono solitamente sottili sul lato opposto.
288 scadenze al giorno = ripetizioni compounding
Se il tuo edge è 0.5c per trade con un win rate del 55% e puoi fare 60 trade al giorno, il PnL giornaliero atteso è 60 × 0.5c = $0.30 su posizioni da 10 share = $3/giorno. Sembra poco, ma fa compounding: 252 giornate di trading × $3 = $750/anno con un'esposizione di capitale quasi nulla (le posizioni si risolvono entro 5 minuti).
Perché lo stesso edge produca $750/anno su un binario che si risolve una volta al trimestre, servirebbe una size per trade molto più grande e code di perdita molto più ampie.
I mercati a 5 minuti sono l'unico segmento su Polymarket in cui edge piccoli ma frequenti si sommano fino a generare un reddito annuale significativo.
Perché i retail bot perdono qui
Tre modalità di fallimento che eliminano in modo costante chi entra da retail.
- Latency: le società professionali piazzano ordini in 50-100ms; i retail bot impiegano 1-3 secondi. Quando invii l'ordine, il prezzo è già nel nuovo mid.
- Asimmetria informativa: il CEX sottostante (Binance, Coinbase) stampa il trade tape più velocemente del price feed di Polymarket. I bot senza subscription dirette al CEX stanno tradando su dati stale.
- Spread tax: con cadenza a 5 minuti, anche uno spread di 0.5c × 60 trade = 30c al giorno di costo inevitabile. L'edge deve superare questo costo prima di diventare profittevole.
I retail bot di solito vanno in pareggio o perdono perché non riescono a battere i pro e non possono sfuggire alla spread tax. Le strategie che funzionano per il retail non sono edge-contro-i-pro; sono strategie di decisione lenta con specifici vantaggi informativi.
Edge sources che resistono
Cosa funziona per il retail sui mercati a 5 minuti.
- Funding-rate-driven directional bias: funding positivo estremo sui perp futures prevede mean reversion; tradare contro il funding rate.
- Open-interest-clearing windows: all'inizio di ogni ora, le liquidazioni dei perp futures sono più probabili; fade i movimenti estremi in quella finestra.
- Late-window resolution arbitrage: negli ultimi 30 secondi di una finestra di 5 minuti, il prezzo di risoluzione è sempre più conoscibile; il book spesso offre liquidity sottile a probabilità che non combaciano con il live tape.
Cosa non funziona: segnali tecnici puri (RSI, moving averages), semplice copia del momentum, qualsiasi cosa che richieda al bot di essere più veloce dei pro.
Latency budget
Per una strategia valida a 5 minuti, la ripartizione del budget è più o meno questa:
- Leggere la signal source (CEX trade tape, funding rate): 100-300ms
- Calcolare la decisione: 50ms
- Inviare ordine FOK: 200-500ms
- Ricevere conferma di fill: 200ms
Totale: 550-1050ms. Realizzabile su un VPS con paid RPC e una subscription diretta al CEX via WebSocket. Non realizzabile su un laptop domestico o con API free-tier.
Le strategie che richiedono meno di 500ms totali sono territorio pro; il retail non dovrebbe competere lì.
Risk: piccolo per trade, grande per giorno
Position sizing per i mercati a 5 minuti: piccolo per trade, daily cap.
- Per-trade: 5-15 share ($1-6) per mercato. Sotto 5 rende impossibili le vendite GTC; sopra 15 fai walk del book in ingresso.
- Daily total: 50-100 trade. Di più crea esposizione correlata a una singola stranezza dell'oracle.
- Daily PnL kill switch: stop se il PnL cumulativo scende di oltre $10 (o del 5% del capitale allocato). Le giornate storte sui mercati a 5 minuti di solito derivano da un'assunzione della strategia che si è rotta; sopravvivi alla giornata, fai debug, ridistribuisci.
L'asimmetria tra size per trade e numero giornaliero è intenzionale. Stai giocando su ampiezza, non su profondità.
Code: skeleton della strategia a 5 minuti
Reference: il trading loop per un bot a 5 minuti guidato dal funding rate.
def five_min_loop():
while True:
wait_for_next_window_open() # blocks until xx:x0:00 or xx:x5:00
markets = find_open_5min_markets("btc")
if not markets: continue
funding = fetch_perp_funding_rate("BTCUSDT")
bias = "DOWN" if funding > 0.001 else "UP" if funding < -0.001 else None
if bias is None: continue
market = markets[0]
token = market["clobTokenIds"][0 if bias == "UP" else 1]
book = fetch_book(token)
if not book.best_ask or book.best_ask > 0.55: continue
place_fok(token, "BUY", book.best_ask + 0.01, 10)
Aggiunte della versione production: tracciare le posizioni lungo la finestra a 5 minuti per un timing di exit accurato, fare paper-trade per 30 finestre prima del live, fermarsi dopo perdite consecutive.











