Aller au contenu principal

Glossaire

Un référentiel complet des termes clés et concepts utilisés dans l'ensemble de l'API de marché de prédiction.


Concepts fondamentaux

Marché

Un marché de prédiction représente une question portant sur un événement futur avec un ensemble défini de résultats possibles. Les marchés traversent un cycle de vie allant de la création au règlement. Exemples : "Pleuvra-t-il demain ?", "Quelle équipe gagne la finale ?"

Résultat

Un résultat est l'une des issues possibles d'un marché. Chaque marché comporte deux résultats ou plus. Pour un marché binaire comme "Le Bitcoin atteindra-t-il 100 000 $ ?", les résultats seraient "Oui" et "Non". Les parts sont achetées et vendues par résultat.

Opérateur

Un opérateur est une entité commerciale enregistrée qui s'intègre à la plateforme de marché de prédiction. Les opérateurs gèrent leurs propres joueurs, sessions et portefeuilles. Chaque opérateur dispose d'une clé API unique pour l'authentification. Toutes les données (marchés, ordres, positions) sont limitées à l'opérateur.

Joueur

Un joueur est un utilisateur final de la plateforme d'un opérateur. Les joueurs sont identifiés par une chaîne playerId que l'opérateur fournit lors du passage des ordres. Le moteur de prédiction stocke cet identifiant sur les ordres, mais ne gère pas les comptes des joueurs — c'est la responsabilité de l'opérateur.


Concepts de trading

Ordre

Une instruction d'achat ou de vente de parts d'un résultat spécifique. Un ordre précise le résultat, la direction (achat/vente), la quantité (parts) et optionnellement une limite de prix. Les ordres sont soumis par les opérateurs pour le compte de leurs joueurs.

Sens de l'ordre

La direction d'un ordre :

  • BUY — Acquérir des parts d'un résultat. Vous réalisez un bénéfice si le résultat gagne.
  • SELL — Céder des parts que vous détenez déjà. Vous cristallisez votre profit ou perte actuel.

Type d'ordre

La façon dont l'ordre doit être exécuté :

  • LIMIT — Exécuter uniquement au prix spécifié ou mieux. Si aucun ordre correspondant n'existe à votre prix, l'ordre reste dans le carnet d'ordres jusqu'à ce qu'il soit apparié ou annulé.
  • MARKET — Exécuter immédiatement au meilleur prix disponible. Les ordres au marché sont exécutés contre les ordres à cours limité existants dans le carnet. En cas de liquidité insuffisante, l'ordre peut être partiellement exécuté ou rejeté.

Parts

L'unité de trading dans un marché de prédiction. Chaque part représente une créance sur une unité de paiement si le résultat associé gagne. Par exemple, acheter 100 parts de "Oui" à 0,60 $ signifie payer 60 $ et recevoir 100 $ si "Oui" gagne, ou 0 $ en cas de perte.

Prix

Le coût par part, exprimé en valeur comprise entre 0.01 et 0.99. Le prix reflète la probabilité implicite du marché que le résultat se produise. Un prix de 0.65 implique une probabilité de 65 %. Les prix sont requis pour les ordres à cours limité.

Écart

La différence entre la meilleure offre de vente (prix de vente le plus bas) et la meilleure offre d'achat (prix d'achat le plus élevé). Un écart plus faible indique un marché plus liquide. Par exemple, si la meilleure offre d'achat est 0.63 et la meilleure offre de vente est 0.67, l'écart est de 0.04.

Transaction

Une transaction est créée lorsqu'un ordre d'achat est apparié avec un ordre de vente. Chaque transaction enregistre le prix d'exécution, le nombre de parts échangées et les frais facturés aux deux parties. Les transactions sont des enregistrements immuables des opérations exécutées.

Frais

Un pourcentage prélevé sur chaque transaction à la fois à l'acheteur et au vendeur. Les frais de trading par défaut sont de 2 % de la valeur de la transaction (parts * prix). Les frais sont enregistrés sur chaque transaction sous les champs buyerFee et sellerFee.

Identifiant de transaction

Une chaîne optionnelle fournie par l'opérateur et attachée à un ordre. Peut être utilisée comme clé d'idempotence ou comme référence au système de transactions interne de l'opérateur. Le moteur de prédiction stocke cette valeur sans en imposer l'unicité.


Concepts du carnet d'ordres

Carnet d'ordres

L'ensemble de tous les ordres d'achat et de vente ouverts (non appariés) pour un résultat spécifique. Le carnet d'ordres est organisé par niveau de prix et détermine la façon dont les nouveaux ordres sont appariés.

Offre d'achat

Un ordre d'achat dans le carnet d'ordres. Les offres d'achat sont triées du prix le plus élevé au plus bas. L'offre d'achat la plus élevée représente le montant maximum qu'un acheteur est prêt à payer.

Offre de vente

Un ordre de vente dans le carnet d'ordres. Les offres de vente sont triées du prix le plus bas au plus élevé. L'offre de vente la plus basse représente le montant minimum qu'un vendeur est prêt à accepter.

Meilleure offre d'achat

Le prix le plus élevé qu'un acheteur est actuellement prêt à payer. Il s'agit du sommet du côté acheteur du carnet d'ordres.

Meilleure offre de vente

Le prix le plus bas qu'un vendeur est actuellement prêt à accepter. Il s'agit du sommet du côté vendeur du carnet d'ordres.

Prix médian

Le point médian entre la meilleure offre d'achat et la meilleure offre de vente : (bestBid + bestAsk) / 2. Souvent utilisé comme le "prix actuel" d'un résultat.

Niveau de prix

Une ligne dans le carnet d'ordres indiquant le nombre total de parts et le nombre d'ordres à un prix spécifique. Par exemple, un niveau de prix peut afficher 500 parts réparties sur 8 ordres à un prix de 0.65.

Profondeur

Le nombre de niveaux de prix visibles dans le carnet d'ordres. Demander une profondeur de 10 retourne les 10 meilleurs niveaux d'achat et les 10 meilleurs niveaux de vente.

Liquidité

La disponibilité des ordres dans le carnet. Un marché avec de nombreux ordres à des écarts serrés est considéré comme liquide. Une faible liquidité signifie que les ordres au marché peuvent ne pas être entièrement exécutés ou peuvent s'exécuter à des prix défavorables.


Concepts de position et de règlement

Position

Un enregistrement agrégé des parts détenues par un opérateur pour un résultat spécifique dans un marché spécifique. Les positions sont automatiquement créées et mises à jour à mesure que les transactions s'exécutent. Une position suit : le total des parts détenues, le prix d'acquisition moyen, le coût total et le profit/perte réalisé.

Prix moyen (avgPrice)

Le prix moyen pondéré par le volume auquel les parts d'une position ont été acquises. Mis à jour chaque fois qu'une transaction BUY ajoute des parts à la position.

Coût total

Le montant total dépensé pour acquérir les parts d'une position : parts * avgPrice.

PnL réalisé (Profit et Perte)

Le profit ou la perte cumulé provenant des parts qui ont été vendues. Lorsque vous vendez des parts, la différence entre le prix de vente et le prix d'acquisition moyen est enregistrée comme PnL réalisé. Le PnL non réalisé (des parts encore détenues) n'est pas suivi directement — calculez-le comme parts * (prixActuel - avgPrice).

Règlement

Le processus de calcul et d'enregistrement des paiements après la résolution d'un marché. Chaque position reçoit un enregistrement de règlement indiquant le montant du paiement. Les positions gagnantes sont payées à 1,00 $ par part ; les positions perdantes reçoivent 0,00 $.

Paiement

Le montant dû au détenteur d'une position après règlement. Calculé comme parts * payoutPerShare. Pour un résultat gagnant, payoutPerShare = 1.00. Pour un résultat perdant, payoutPerShare = 0.00.


Cycle de vie d'un marché

Brouillon

Le statut initial d'un marché nouvellement créé. Le marché n'est pas visible pour les traders et ne peut pas accepter d'ordres.

À venir

Un marché qui a été ouvert mais dont l'heure tradingStartsAt n'est pas encore arrivée. Le marché est visible mais pas encore tradable.

Ouvert

Le marché accepte activement des ordres. Il s'agit du seul statut où le trading peut avoir lieu.

Suspendu

Le trading est temporairement suspendu (par exemple, en raison d'un litige ou d'une activité irrégulière). Le marché peut être repris pour retourner au statut OPEN.

Fermé

Le trading a définitivement pris fin. Le marché est en attente de résolution (déclaration du résultat gagnant).

Résolu

Le résultat gagnant a été déclaré. Le marché est prêt pour le règlement.

Réglé

Toutes les positions ont été réglées et les montants des paiements enregistrés. Il s'agit de l'état terminal d'un marché complété avec succès.

Annulé

Le marché a été annulé. Tous les ordres ouverts sont automatiquement annulés. Il s'agit d'un état terminal.


Statuts des ordres

En attente

L'ordre a été placé dans le carnet d'ordres et attend d'être apparié. Aucune part n'a encore été exécutée.

Partiel (Partiellement exécuté)

Certaines parts de l'ordre ont été appariées et tradées, mais les parts restantes sont toujours dans le carnet d'ordres en attente d'autres appariements.

Exécuté

Toutes les parts de l'ordre ont été appariées. L'ordre est complet.

Annulé

L'ordre a été annulé par l'opérateur avant d'être entièrement exécuté. Toutes les parts non appariées restantes sont retirées du carnet d'ordres.

Expiré

L'ordre a dépassé son heure expiresAt sans être entièrement exécuté. Les parts restantes sont retirées du carnet d'ordres.

Rejeté

L'ordre a été rejeté par le système, généralement parce qu'un ordre au marché n'a pas pu trouver de liquidité correspondante.


Concepts d'authentification

Clé API

Une chaîne secrète unique attribuée à chaque opérateur. Utilisée pour authentifier tous les appels API via l'en-tête HTTP X-Api-Key. Gardez cette valeur sécurisée — en cas de compromission, contactez un administrateur de la plateforme pour la régénérer.


Concepts d'infrastructure

Catégorie

Un mécanisme de regroupement pour les marchés. Les catégories ont un nom, un slug et une icône optionnelle. Les marchés peuvent être assignés à une catégorie à des fins d'organisation et de filtrage. Les catégories peuvent être spécifiques à un opérateur ou globales (partagées entre opérateurs).

Pagination par curseur

Une stratégie de pagination utilisée dans l'ensemble de l'API. Au lieu de numéros de page, l'API retourne une valeur nextCursor que vous transmettez dans les requêtes suivantes pour récupérer la page suivante. Cette approche est plus efficace pour les grands ensembles de données et gère les insertions/suppressions entre les pages.

Volume

Le nombre total de parts échangées sur un marché pour tous les résultats. Les marchés suivent à la fois le volume total historique (totalVolume) et le volume glissant sur 24 heures (volume24h).

Journal d'audit

Un enregistrement interne de toutes les actions significatives effectuées sur les marchés (création, ouverture, résolution, etc.). Chaque entrée du journal enregistre le type d'action, l'acteur et l'état avant/après.


Concepts de livraison d'événements

Webhook

Une notification HTTP POST envoyée depuis le moteur de prédiction vers une URL enregistrée par l'opérateur lorsqu'un événement se produit. Les webhooks sont signés avec HMAC-SHA256 pour garantir leur authenticité. Il s'agit de l'approche recommandée pour la livraison d'événements de backend à backend. Les opérateurs peuvent filtrer les types d'événements qu'ils reçoivent.

Secret de webhook

Une chaîne hexadécimale de 64 caractères générée lors de la création d'un webhook. Utilisée pour calculer la signature HMAC-SHA256 de chaque charge utile de livraison. Le secret n'est affiché en intégralité qu'une seule fois — au moment de la création. Stockez-le de manière sécurisée.

Signature de webhook

Un hachage HMAC-SHA256 du corps de la charge utile du webhook, envoyé dans l'en-tête X-Webhook-Signature sous la forme sha256=<hex>. Les opérateurs doivent vérifier cette signature avant de traiter les livraisons de webhooks pour s'assurer que la charge utile n'a pas été altérée.

Journal d'événements

Un journal soutenu par Postgres de tous les événements avec des numéros de séquence croissants de façon monotone. Les événements sont limités à chaque opérateur et conservés pendant 24 heures. Le journal d'événements alimente l'API de relecture d'événements.

Numéro de séquence

Un entier auto-incrémenté attribué à chaque événement dans le journal d'événements. Les numéros de séquence sont uniques et strictement croissants, permettant aux opérateurs de suivre leur position de lecture et de rejouer les événements manqués en demandant events where sequence > lastProcessedSequence.

Relecture d'événements

La capacité de récupérer des événements historiques via l'API REST (GET /api/v1/events). Utilisée pour se remettre d'une interruption de webhook, d'une déconnexion WebSocket ou de tout événement manqué. Les événements peuvent être filtrés par type, marché et numéro de séquence.

Type d'événement

Une classification des événements émis par le moteur de prédiction. Les types incluent : MARKET_CREATED, MARKET_STATUS_CHANGED, MARKET_RESOLVED, ORDER_BOOK_UPDATE, PRICE_UPDATED, ORDER_PLACED, ORDER_MATCHED, ORDER_CANCELLED, POSITION_UPDATED, SETTLEMENT_COMPLETED.

Rétention des événements

La durée pendant laquelle les événements sont stockés dans le journal d'événements. La période de rétention par défaut est de 24 heures. Après expiration, les événements sont automatiquement supprimés et ne peuvent plus être rejoués.