EN DIRECT
7,62 $ de profit min par trade
Obtenir le bot

Espérance de gain pour l'arbitrage Polymarket : comment calculer l'EV correctement

Guide pratique pour calculer l'espérance de gain des trades d'arbitrage sur Polymarket, en tenant compte des frais taker, de la probabilité de remplissage partiel et des risques de règlement. Formules étape par étape et exemple de code opérationnel.

Mis à jour le 2026-04-20· 10 min
arbitrage
expected value
Polymarket
trading

Espérance de gain pour l'arbitrage Polymarket : comment calculer l'EV correctement

Ce guide vous montre comment calculer pas à pas l'espérance de gain (expected value) des trades d'arbitrage sur Polymarket, en tenant compte des frais taker, de la probabilité de remplissage partiel et des risques de règlement. Si vous exécutez de l'arbitrage intra-market binaire ou combinatoire sur Polymarket, ces formules transforment un écart de prix apparent en une estimation d'EV exploitable.

Points clés

  • EV = (paiement − coût − frais) × probabilité de remplissage − pertes attendues dues aux remplissages partiels et au timing de règlement.
  • Incluez toujours les frais taker et les taux de remplissage partiels attendus ; les frais maker sont nuls sur Polymarket et ne comptent que si vous vous calerez sur de la liquidité passive.
  • Utilisez des modèles probabilistes simples (Bernoulli ou binomial) pour les remplissages partiels sur des tailles faibles ; adaptez-les lorsque l'exécution s'étale sur plusieurs niveaux de prix.
  • Ne qualifiez jamais un trade d'arbitrage d'« sans risque » sans énumérer les risques : résolution, slippage, frais, disputes UMA et risques de smart-contract ou de timing.

1. Principes fondamentaux de l'EV pour l'arbitrage en marchés prédictifs

Partons des principes premiers. Un arbitrage complet et réussi qui achète un jeu complet de tokens d'issue coûte C (la somme des best-asks achetés plus les frais taker éventuels) et se rembourse finalement à $1.00 par jeu complet après résolution. L'edge nominal est :

Edge = 1.00 − C

L'espérance de gain avant frais et risque d'exécution est simplement Edge par jeu complet. En pratique, vous devez convertir cela en EV (gain monétaire attendu) en tenant compte des frais, de la probabilité que votre ordre soit rempli aux prix affichés et des remplissages partiels.

EV_basic = Edge × FillProbability − Fees_expected

Vous affinerez FillProbability et Fees_expected dans les sections suivantes.

2. Inclure les frais taker et le flux de règlement

Sur Polymarket les frais taker varient selon la catégorie et se situent actuellement entre 0% et 1.8% selon la catégorie du marché ; les frais maker sont nuls. Pour l'arbitrage, vous payez typiquement des frais taker sur les jambes exécutées qui traversent le spread.

Lorsque vous achetez N issues (un jeu complet dans un marché multi-issue ou YES et NO dans le cas binaire), calculez le coût brut :

C_gross = Σ bestAsk_i

Le taux de frais taker s'exprime en points de base ou en pourcentage. Si fee_rate est le taux taker (en décimal), vos frais sont approximativement :

Fees = fee_rate × C_gross

Si certaines jambes s'exécutent en tant que maker (rare pour l'arbitrage serré), elles n'entraînent pas de frais ; modélisez cela en scindant C_gross en portions maker et taker.

Coût net C_net = C_gross + Fees

Le profit nominal s'il est entièrement rempli et encaissable est :

Profit_full = 1.00 − C_net

Mais Profit_full n'est réalisé que avec la probabilité FillProbability_full, donc la contribution à l'EV est Profit_full × FillProbability_full.

3. Modéliser les remplissages partiels et l'exécution asymétrique

Les remplissages partiels sont la source la plus courante de perte pratique. Deux exemples :

  • Votre ordre achète complètement YES mais NO seulement partiellement. Il vous reste une exposition résiduelle en YES achetée à un prix supérieur à la couverture implicite.
  • Les fills arrivent sur plusieurs niveaux de prix ; le C_gross réalisé est supérieur à la somme des best-asks du premier niveau.

Un modèle simple et utile pour de petites tailles est une probabilité de remplissage de Bernoulli par jambe au best ask affiché. Pour des tailles plus importantes, vous pouvez modéliser les remplissages comme binomiaux ou comme la somme de tranches de volume déterministes à travers les niveaux de prix.

Notation à utiliser dans les calculs :

  • q_i = quantité prévue pour la jambe i (en parts d'issue)
  • f_i = probabilité que q_i soit entièrement rempli au best ask affiché
  • r_i = fraction attendue remplie pour la jambe i (0 ≤ r_i ≤ 1)

Coût attendu quand des remplissages partiels sont possibles :

E[C_gross] = Σ (bestAsk_i × q_i × r_i)

Les frais attendus suivent proportionnellement :

E[Fees] = fee_rate × E[C_gross] pour la portion exécutée en taker

Mais les remplissages partiels créent une position résiduelle asymétrique. L'approche conservatrice courante est de supposer que toute position résiduelle sur une seule issue doit être immédiatement fermée au pire mid/ask, et d'inclure la perte attendue de cette clôture dans l'EV.

Par exemple, si vous vous attendiez à acheter un jeu complet mais que, en moyenne, vous ne remplissez que 90% de la jambe NO, vous conserverez 10% de YES payé au prix p_yes. La perte résiduelle pirescénario est approximativement 0.90 × (p_yes − mid_unwind_price) (ajustez pour la taille de tick et les frais). Incluez le terme de perte résiduelle attendu L_residual dans l'EV.

4. Une formule EV étape par étape que vous pouvez implémenter

Définissez :

  • n = nombre d'issues dans le jeu (n=2 pour le binaire)
  • ask_i = best ask pour l'issue i, en dollars
  • q = quantité ciblée de jeux complets (parts ; ex. 10 jeux complets)
  • fee = taux de frais taker en décimal (ex. 0.006 pour 0.6%)
  • r_i = fraction de remplissage attendue pour la jambe i (0..1). Pour la probabilité de remplissage complet utilisez r_i = 1.0.
  • p_unwind_i = prix attendu auquel vous pouvez clôturer toute position résiduelle sur l'issue i (conservateur : utilisez le pire ask actuel ou le mid)

Calculez :

  1. E[C_gross] = Σ_i ask_i × q × r_i
  2. E[Fees] = fee × E[C_gross]
  3. E[C_net] = E[C_gross] + E[Fees]
  4. Paiement attendu quand les jeux complets sont encaissables = q × 1.00 × P_redeem (P_redeem est la probabilité d'encaisabilité éventuelle ; normalement 1.0 en l'absence de disputes UMA — mais incluez le risque de dispute ci‑dessous)
  5. Perte résiduelle attendue L_residual = Σ_i max(0, q × (1 − r_i) × (paid_price_i − p_unwind_i))

Estimation finale de l'EV :

EV = q × P_redeem − E[C_net] − L_residual

Si vous préférez l'EV par jeu complet, divisez EV par q.

Remarques sur P_redeem : les disputes UMA peuvent suspendre ou modifier le règlement. Fixez P_redeem ≤ 1.0 pour refléter un risque de dispute non nul ; pour beaucoup de marchés vous pouvez traiter P_redeem ≈ 1.0 mais vous devez explicitement prendre en compte la possibilité d'un règlement retardé ou contesté.

5. Exemple numérique travaillé (binaire) — implémentable et conservateur

Supposons un petit arbitrage binaire où vous comptez acheter 100 jeux complets en achetant YES et NO à leurs best-asks respectifs. N'utilisez ces chiffres que pour illustration ; gardez les frais dans les plages documentées.

  • ask_YES = $0.49
  • ask_NO = $0.50
  • q = 100 jeux
  • fee = 0.006 (0.6% frais taker)
  • r_YES = 1.0, r_NO = 0.95 (NO peut se remplir partiellement au premier niveau)
  • p_unwind_NO = $0.52 (prix auquel vous vous attendez à vendre un NO résiduel)
  • P_redeem = 1.0 (supposez l'encaisabilité éventuelle)

Calculez E[C_gross] = (0.49 + 0.50) × 100 × average_r

Plus précisément :

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

Paiement = 100 × 1.00 = 100.00

L_residual : vous attendiez 100 NO mais n'en avez obtenu que 95, donc il vous manque 5 NO si votre intention était de détenir des jeux complets. Le résidu typique est l'exposition supplémentaire sur l'autre jambe (YES). Dans cet exemple, le remplissage partiel laisse 5 YES non appariés — si vous avez payé 0.49 pour ces YES et devez les solder à p_unwind_YES (conservateur), calculez en conséquence. Par symétrie, une estimation résiduelle conservatrice pour la jambe mal remplie est :

L_residual = (q × (1 − r_NO)) × (paid_price_NO_unpaired − p_unwind_NO)

Si la jambe non appariée est le côté le plus cher, incluez cette perte. Insérez des valeurs conservatrices pour éviter de surestimer l'EV.

EV final = 100 − 97.079 − L_residual

Si L_residual est faible, le trade reste à EV positif ; si L_residual dépasse l'Edge nominal, le trade est négatif. Exécutez ces calculs de manière programmatique avant d'envoyer des ordres.

6. Un court extrait JavaScript réutilisable

Ce snippet calcule l'EV par jeu complet, avec les entrées ci‑dessus. C'est du JavaScript valide et prêt à intégrer dans votre framework de risque.

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));

Ajustez les valeurs p_unwind de façon conservatrice (utilisez le pire ask ou le mid) et fixez r d'après les taux de remplissage historiques pour votre taille.

7. Conseils pratiques pour le trading live

  • Mesurez les taux de remplissage empiriques par instrument et par taille. Utilisez des fenêtres d'instrumentation courtes et fréquentes ; la microstructure varie selon les marchés.
  • Fractionnez les quantités importantes en tranches plus petites pour réduire le risque de remplissage partiel et rester dans les limites builder ou relayer si applicable.
  • Tenez compte du comportement de la taille de tick : quand les prix approchent des extrêmes la taille de tick se resserre à $0.001, ce qui peut modifier le slippage à la clôture.
  • Incluez le risque de dispute UMA et le risque de timing du règlement dans P_redeem. Les disputes peuvent suspendre le règlement et affecter le coût d'opportunité.
  • Respectez les restrictions géographiques : les marchés sont géo‑bloqués par IP ; ne recommandez jamais le contournement par VPN.

Comment cela affecte votre trading

Calculez l'EV par jeu avant d'envoyer des ordres et comparez-le à votre EV minimal interne acceptable, qui doit déjà inclure les coûts de capital, le coût d'opportunité des pUSD bloqués et le coût des délais de dispute potentiels. Utilisez la formule d'EV de manière programmatique dans vos contrôles pré‑trade. Pour un arbitrage petit et fréquent, vous exigerez typiquement un EV par jeu modérément positif après frais et pertes résiduelles attendues pour justifier les frais opérationnels.

Concluez avec le mot‑clé principal : expected value Polymarket arbitrage doit toujours être calculée de manière conservatrice, en modélisant explicitement les frais taker et la probabilité de remplissage partiel.

Foire aux questions

Comment modéliser la probabilité de remplissage partiel pour des ordres plus importants ?

Commencez par des taux de remplissage empiriques à la taille à laquelle vous tradez. Pour de petites tranches, utilisez des hypothèses Bernoulli par tranche ; pour des tailles plus grandes, modélisez les remplissages comme la somme binomiale sur plusieurs niveaux de prix ou utilisez la profondeur historique du book pour découper votre ordre de façon déterministe. Soyez conservateur dans l'estimation de r_i.

Quels frais dois‑je inclure dans le calcul d'EV ?

Incluez les frais taker pour les jambes exécutées — les frais taker de Polymarket varient actuellement entre 0% et 1.8% selon la catégorie ; les frais maker sont nuls. Modélisez les frais comme fee_rate × executed_cost et répartissez executed_cost en portions maker/taker si nécessaire.

Dois‑je tenir compte des disputes UMA dans l'EV ?

Oui. Les disputes UMA peuvent suspendre le règlement ou en modifier le timing. Incluez un facteur P_redeem ≤ 1.0 pour refléter la probabilité de dispute et la valeur temporelle/côut attendu d'un règlement retardé.

Puis‑je ignorer la perte résiduelle si j'envisage de rééquilibrer plus tard ?

Non. Les positions résiduelles portent un risque de marché et directionnel. Incluez un prix de clôture conservateur (p_unwind) dans votre modèle d'EV à moins d'avoir un plan de rééquilibrage documenté et justifié statistiquement avec des coûts connus.

L'edge nominal est‑il la même chose que l'EV ?

Non. Edge nominal = 1.00 − Σ bestAsk_i. L'EV ajuste cet edge pour les frais taker, la probabilité de remplissage partiel, la perte résiduelle d'unwind et le risque de règlement/dispute. Utilisez l'EV pour la prise de décision.

Termes référencés

Guides connexes

À titre éducatif uniquement. Pas un conseil financier, juridique ou fiscal. Polymarket peut ne pas être disponible dans votre juridiction.