Prévention des auto-transactions (STP)
Protection automatique contre les auto-transactions.
Vue d'ensemble
Lorsqu'un ordre entrant (taker) devrait être apparié avec un ordre au repos (maker) provenant du même portefeuille, le moteur annule les deux ordres au lieu de les exécuter. Cela empêche le wash trading et protège les teneurs de marché contre le croisement accidentel de leurs propres cotations.
Le STP est toujours actif. Il n'y a aucune configuration, aucune possibilité de désactivation et aucun mode alternatif.
Comportement
Stratégie : annulation des deux ordres
Lorsqu'une auto-transaction est détectée :
- L'ordre maker est annulé avec le motif
"Self-trade prevention" - L'ordre taker est rejeté (s'il n'y a eu aucune exécution préalable) ou annulé (s'il a été partiellement exécuté)
Aucune exécution n'est générée entre les deux ordres.
Appariement au niveau du portefeuille
Le STP compare les adresses de portefeuille, pas les clés d'agent. Si vous utilisez l'autorisation d'agent pour signer des ordres depuis plusieurs clés, tous les ordres relevant du même portefeuille de trading sont soumis au STP les uns envers les autres.
Les exécutions partielles sont préservées
Si un ordre taker est exécuté contre d'autres contreparties avant de rencontrer une auto-transaction, ces exécutions sont conservées.
Exemple : le carnet contient 5 contrats offerts par le portefeuille B, puis 5 contrats offerts par le portefeuille A. Le portefeuille A soumet un ordre d'achat de 10 contrats :
| Étape | Appariement avec | Résultat |
|---|---|---|
| 1 | Portefeuille B (5 contrats) | Exécution : 5 contrats exécutés |
| 2 | Portefeuille A (5 contrats) | Auto-transaction détectée |
Résultat :
- Le portefeuille A obtient une exécution de 5 contrats contre le portefeuille B
- L'ordre maker du portefeuille A (5 contrats) est annulé
- L'ordre taker du portefeuille A est annulé avec
filled_size: 5
Statut des ordres
| Scénario | Statut du taker | Motif |
|---|---|---|
| Aucune exécution préalable | Rejected | "Self-trade prevention" |
| Exécutions partielles avant l'auto-transaction | Canceled | "Self-trade prevention (partial fill kept)" |
L'ordre maker est toujours Canceled avec le motif "Self-trade prevention".
Les ordres GTC ne restent pas au repos après une auto-transaction
Si un ordre taker GTC déclenche le STP, la quantité restante n'est pas ajoutée au carnet, même si l'ordre devrait normalement y rester. L'ordre est entièrement clôturé.
Notifications WebSocket
L'annulation/le rejet du taker et du maker sont tous deux transmis sur le canal order_updates. Le champ reason indique que le STP en est la cause.
Surveillance
Les événements STP incrémentent le compteur Prometheus ht_engine_self_trade_prevented_total.
FAQ
Puis-je choisir un autre mode STP (par exemple, annulation du plus récent ou décrémentation) ? Non. Hypercall utilise exclusivement l'annulation des deux ordres.
Le STP s'applique-t-il aux ordres sur perpétuels ? Oui. Le STP s'applique à tous les types d'ordres sur le moteur d'appariement, aussi bien pour les options que pour les contrats perpétuels.
Le STP s'applique-t-il aux transactions RFQ ? Oui. Si le taker et un fournisseur de cotation partagent le même portefeuille, la cotation est rejetée.
Je suis un teneur de marché cotant les deux côtés. Mes cotations vont-elles s'annuler mutuellement ? Uniquement si un ordre entrant devait provoquer leur croisement. Les ordres au repos placés de part et d'autre du carnet à des prix différents coexistent normalement. Le STP ne se déclenche qu'au moment de l'appariement.