Valore atteso nell'arbitraggio Polymarket: come calcolare correttamente l'EV
Guida pratica al calcolo del valore atteso per operazioni di arbitraggio su Polymarket, includendo le commissioni taker, la probabilità di fill parziale e i rischi di settlement. Formule passo-passo e un esempio di codice funzionante.
Valore atteso nell'arbitraggio Polymarket: come calcolare correttamente l'EV
Questa guida mostra come calcolare passo-passo il valore atteso (expected value) per operazioni di arbitraggio su Polymarket, includendo commissioni taker, probabilità di fill parziale e rischi di settlement. Se esegui arbitraggio intra-market binario o combinatorio su Polymarket, queste formule convertono una gap di prezzo nominale in una stima EV utilizzabile.
Punti chiave
- EV = (payout − costo − commissioni) × probabilità di fill − perdite da fill parziali e timing di settlement.
- Includi sempre le commissioni taker e i tassi attesi di fill parziale; le commissioni maker sono zero su Polymarket, quindi contano solo se ti metti come liquidità passiva.
- Usa modelli probabilistici semplici (Bernoulli o binomiale) per i fill parziali su piccole dimensioni; scala i modelli quando l'esecuzione copre più livelli di prezzo.
- Non definire mai un trade di arbitraggio come "senza rischio" senza elencare i rischi: risoluzione, slippage, commissioni, dispute UMA e rischio smart-contract o di timing.
1. Fondamenti dell'EV per l'arbitraggio nei prediction market
Parti dai primi principi. Un arbitraggio completo e riuscito che compra un set completo di token di outcome costa C (somma dei best-ask comprati più eventuali commissioni taker) e alla fine viene convertito in $1.00 per set completo dopo la risoluzione. Il margine nominale è:
Edge = 1.00 − C
L'expected value prima di commissioni e rischio di esecuzione è semplicemente Edge per set completo. Per il trading pratico devi convertire questo in EV (guadagno monetario atteso) contabilizzando commissioni, la probabilità che il tuo ordine si riempia ai prezzi quotati e i possibili fill parziali.
EV_basic = Edge × FillProbability − Fees_expected
Approfondirai FillProbability e Fees_expected nelle sezioni successive.
2. Includere le commissioni taker e il flusso di settlement
Su Polymarket le commissioni taker variano per categoria e sono attualmente tra 0% e 1.8% a seconda della categoria di mercato; le commissioni maker sono zero. Per l'arbitraggio normalmente paghi commissioni taker sulle gambe eseguite che attraversano lo spread.
Quando compri N outcome (un set completo in un mercato multi-outcome o sia YES che NO in un binario), calcola il costo lordo:
C_gross = Σ bestAsk_i
La commissione taker per trade è espressa in basis points o percentuale. Se fee_rate è la commissione taker (come decimale), le tue commissioni sono approssimativamente:
Fees = fee_rate × C_gross
Se alcune gambe eseguono come maker (raro in arb stretto) non pagano commissioni; modellalo suddividendo C_gross in porzioni maker e taker.
Costo netto C_net = C_gross + Fees
Il profitto nominale se totalmente riempito e riscattabile è:
Profit_full = 1.00 − C_net
Ma Profit_full si realizza solo con probabilità FillProbability_full, quindi il contributo all'EV è Profit_full × FillProbability_full.
3. Modellare fill parziali ed esecuzione asimmetrica
I fill parziali sono la fonte più comune di perdita pratica. Due esempi:
- Il tuo ordine compra YES completamente ma NO solo parzialmente. Rimani esposto long su una quantità residua di YES prezzata sopra la copertura implicita.
- I fill avvengono su più livelli di prezzo; il C_gross realizzato è maggiore della somma dei best-ask al primo livello.
Un modello semplice e utile per ordini piccoli è una probabilità di fill Bernoulli per ogni gamba al best ask mostrato. Per taglie maggiori puoi modellare i fill come binomiali o come somma di tranche deterministic across price levels.
Notazione da usare nei calcoli:
- q_i = quantità prevista per la gamba i (in azioni outcome)
- f_i = probabilità che q_i si riempia completamente al best ask mostrato
- r_i = frazione attesa riempita per la gamba i (0 ≤ r_i ≤ 1)
Costo atteso quando sono possibili fill parziali:
E[C_gross] = Σ (bestAsk_i × q_i × r_i)
Le commissioni attese seguono proporzionalmente:
E[Fees] = fee_rate × E[C_gross] per la porzione eseguita come taker
Ma i fill parziali creano una posizione residua asimmetrica. L'approccio conservativo comune è assumere che qualsiasi posizione residua su un singolo outcome debba essere immediatamente chiusa al peggiore prezzo mid/ask, e includere la perdita attesa da quell'unwind nell'EV.
Per esempio, se ti aspettavi di comprare un set completo ma in media riempi solo il 90% della gamba NO, ti trovi con il 10% di YES pagato a prezzo p_yes. La perdita residua peggiore è approssimativamente 0.90 × (p_yes − mid_unwind_price) (aggiusta per tick size e commissioni). Includi il termine di perdita residua attesa L_residual nell'EV.
4. Una formula EV passo-passo che puoi implementare
Definisci:
- n = numero di outcome nel set (n=2 per binario)
- ask_i = best ask per l'outcome i, in dollari
- q = quantità target di set completo (azioni; es. 10 set completi)
- fee = tasso commissione taker come decimale (es. 0.006 per lo 0.6%)
- r_i = frazione attesa di fill per la gamba i (0..1). Per probabilità di fill completa usa r_i = 1.0.
- p_unwind_i = prezzo atteso a cui puoi chiudere una posizione residua nell'outcome i (conservativo: usa il worst ask o il mid corrente)
Calcola:
- E[C_gross] = Σ_i ask_i × q × r_i
- E[Fees] = fee × E[C_gross]
- E[C_net] = E[C_gross] + E[Fees]
- Payout atteso quando i set completi vengono riscattati = q × 1.00 × P_redeem (P_redeem è la probabilità che il set sia effettivamente riscattabile; normalmente 1.0 in assenza di dispute UMA — ma includi il rischio di disputa sotto)
- Perdita residua attesa L_residual = Σ_i max(0, q × (1 − r_i) × (paid_price_i − p_unwind_i))
Stima EV finale:
EV = q × P_redeem − E[C_net] − L_residual
Se preferisci l'EV per set completo, dividi EV per q.
Note su P_redeem: le dispute UMA possono mettere in pausa o alterare il settlement. Imposta P_redeem ≤ 1.0 per riflettere un rischio di disputa non nullo; per molti mercati puoi trattare P_redeem ≈ 1.0 ma devi esplicitamente considerare la possibilità di settlement ritardato o contestato.
5. Esempio numerico svolto (binario) — implementabile e conservativo
Assumi un piccolo arbitraggio binario dove intendi comprare 100 set completi comprando YES e NO ai rispettivi best-ask. Usa i numeri solo come illustrazione; mantieni la commissione nei range documentati.
- ask_YES = $0.49
- ask_NO = $0.50
- q = 100 set
- fee = 0.006 (0.6% commissione taker)
- r_YES = 1.0, r_NO = 0.95 (NO potrebbe fillare parzialmente al primo livello)
- p_unwind_NO = $0.52 (prezzo a cui ti aspetti di vendere il residuo NO)
- P_redeem = 1.0 (assumi riscattabilità finale)
Calcola E[C_gross] = (0.49 + 0.50) × 100 × average_r
Più precisamente:
E[C_gross] = (0.49 × 100 × 1.0) + (0.50 × 100 × 0.95) = 49.00 + 47.50 = 96.50
E[Fees] = 0.006 × 96.50 = 0.579
E[C_net] = 96.50 + 0.579 = 97.079
Payout = 100 × 1.00 = 100.00
L_residual: ti aspettavi 100 NO ma ne hai ottenuti solo 95, quindi ti manca il 5% di NO se l'intenzione era mantenere set completi. Il residuo tipico è l'esposizione in eccesso sull'altra gamba (YES). In questo esempio il fill parziale lascia 5 YES non coperti — se li hai pagati 0.49 e devi unwind a p_unwind_YES (conservativo), calcola di conseguenza. Per simmetria una stima conservativa della perdita residua per la gamba misfilled è:
L_residual = (q × (1 − r_NO)) × (paid_price_NO_unpaired − p_unwind_NO)
Se la gamba non appaiata è il lato più caro, includi quella perdita. Inserisci numeri in modo conservativo per evitare di sovrastimare l'EV.
EV finale = 100 − 97.079 − L_residual
Se L_residual è piccolo il trade resta EV positivo; se L_residual supera il margine nominale, il trade è negativo. Esegui questi calcoli programmaticamente prima di inviare ordini.
6. Uno snippet JavaScript breve e utilizzabile
Questo snippet calcola l'EV per set completo, dati gli input sopra. È JavaScript valido e pronto da inserire nel tuo framework di rischio.
function computeEVPerSet(asks, r, fee, p_unwind, P_redeem = 1.0) {
// asks: array of best asks for each outcome, e.g. [0.49, 0.50]
// r: array of expected fill fractions for each outcome, e.g. [1.0, 0.95]
const n = asks.length;
const q = 1; // per-set basis
const E_C_gross = asks.reduce((s, a, i) => s + a * q * r[i], 0);
const E_Fees = fee * E_C_gross;
const E_C_net = E_C_gross + E_Fees;
// Residual loss: assume unfilled fraction must be closed at p_unwind
const L_residual = asks.reduce((s, a, i) => {
const unfilled = q * (1 - r[i]);
const paid_price = a; // price you paid for filled portion of this outcome
const unwind_price = p_unwind[i];
return s + Math.max(0, unfilled * (paid_price - unwind_price));
}, 0);
const EV = q * P_redeem - E_C_net - L_residual;
return { EV_per_set: EV, E_C_gross, E_Fees, L_residual };
}
// Example
const asks = [0.49, 0.50];
const r = [1.0, 0.95];
const fee = 0.006; // 0.6%
const p_unwind = [0.48, 0.52];
console.log(computeEVPerSet(asks, r, fee, p_unwind));
Regola i valori di p_unwind in modo conservativo (usa il worse ask o il mid) e imposta r in base ai tassi storici di fill alla tua size.
7. Consigli pratici per il trading live
- Misura i tassi di fill empirici per strumento e per dimensione. Usa finestre di strumentazione brevi e frequenti; la microstruttura varia per mercato.
- Spezza grandi quantità in tranche più piccole per ridurre il rischio di fill parziale e per restare nei limiti del builder o del relayer se applicabili.
- Considera il comportamento del tick-size: quando i prezzi si avvicinano agli estremi il tick size si restringe a $0.001, il che può modificare lo slippage di unwind.
- Includi il rischio di dispute UMA e il timing di settlement in P_redeem. Le dispute possono mettere in pausa il settlement e influenzare il costo opportunità.
- Rispetta le restrizioni geografiche: i mercati sono geo-bloccati per IP; non raccomandare mai l'uso di VPN.
Come questo influisce sul tuo trading
Calcola l'EV per set prima di inviare ordini e confrontalo con il tuo minimo interno accettabile, che include già costi di capitale, costo opportunità del pUSD bloccato e i costi di eventuali ritardi di disputa. Usa la formula EV programmaticamente nei controlli pre-trade. Per arbitraggio piccolo e frequente generalmente richiederai un EV per set moderatamente positivo dopo commissioni e perdita residua attesa per giustificare l'overhead operativo.
Concludi con la parola chiave primaria: expected value Polymarket arbitrage deve sempre essere calcolato in modo conservativo, modellando esplicitamente commissioni taker e probabilità di fill parziale.
Domande frequenti
Come modello la probabilità di fill parziale per ordini grandi?
Inizia con tassi di fill empirici alla taglia che traduci. Per incrementi piccoli usa assunzioni Bernoulli per tranche; per taglie maggiori modella i fill come somma binomiale su livelli di prezzo o usa la profondità storica del book per spezzare l'ordine in modo deterministico. Sii sempre conservativo nel stimare r_i.
Quali commissioni devo includere nel calcolo dell'EV?
Includi le commissioni taker per le gambe eseguite — le commissioni taker di Polymarket variano attualmente tra 0% e 1.8% a seconda della categoria; le commissioni maker sono zero. Modella le commissioni come fee_rate × executed_cost e suddividi executed_cost in porzioni maker/taker se applicabile.
Devo considerare le dispute UMA nell'EV?
Sì. Le dispute UMA possono mettere in pausa il settlement o cambiarne i tempi. Includi un fattore P_redeem ≤ 1.0 per riflettere la probabilità di disputa e il valore temporale atteso/costo del settlement ritardato.
Posso ignorare la perdita di unwind residua se prevedo di riequilibrare in seguito?
No. Le posizioni residue comportano rischio di mercato e direzionale. Includi un prezzo di unwind conservativo (p_unwind) nel tuo modello EV a meno che tu non abbia un piano di riequilibrio documentato e giustificato statisticamente con costi noti.
Il margine nominale è lo stesso dell'EV?
No. Margine nominale = 1.00 − Σ bestAsk_i. L'EV aggiusta quel margine per commissioni taker, probabilità di fill parziale, perdita di unwind residua e rischio di settlement/disputa. Usa l'EV per prendere decisioni.
Termini citati
Guide correlate
Solo a scopo informativo. Non è consulenza finanziaria, legale o fiscale. Polymarket potrebbe non essere disponibile nella tua giurisdizione.