MOTEUR DE MARCHÉ
Le moteur de marché remplit chaque ordre sur Dexter — le même chemin de code sert les tentatives de challenge à 49 $, les comptes financés 90 / 10 et le flux public non signé. Un seul vAMM, un seul calendrier de financement, une seule routine de liquidation, un seul barème de frais à 0,020 % maker / 0,060 % taker sur notionnel. Il n'y a pas de couche de matching réservée au prop, pas de file préférentielle pour les traders financés, et aucun moyen pour un opérateur d'élargir le spread d'un utilisateur public pour subventionner une arrivée sur le podium. Cette symétrie est ce qui rend une réussite Dexter auditable : les +10 % que vous avez produits sur une tentative à 99 $ sont les mêmes +10 % qu'un compte public de 50 000 $ aurait produits sur un flux d'ordres identique.
Le moteur décide si un ordre peut entrer, le prix auquel il se remplit, la manière dont la taille de position et le cash se règlent, et le moment où un marché doit passer du trading en direct à une posture défensive. Chacune de ces décisions appartient à un seul domaine d'exécution afin qu'un fill, une accumulation de financement et une liquidation ne puissent pas diverger sur l'état. Le tableau ci-dessous cartographie les cinq responsabilités — chacune est traitée en détail sur sa propre page dans ce chapitre.
| Responsabilité du moteur | Ce qu'elle couvre |
|---|---|
| Contrôle de la porte d'entrée | Autorisation d'agent, validité de signature EIP-712, seq monotone, garde createdAtTs / goodTilTs, et ancre on-chain OrderCommitRegistry |
| Tarification | Skew vAMM sans liquidité, contrôles de spread, plafonds d'inventaire et pression de l'open interest par marché |
| Mises à jour du ledger | Taille de position, base d'entrée, PnL réalisé, frais 0,020 % maker / 0,060 % taker, fundingAccrued et cash de compte |
| Posture de marché | Live, réduit, close-only, session fermée et arrêté — les mêmes cinq états sur chaque plateforme |
| Routines forcées | Liquidation par marge de maintenance, flux d'assurance, sélection ADL et rééquilibrage après un événement de stress |
#Comment fonctionne le chemin de trading en direct
La production n'accepte jamais un ordre brut depuis un RPC public. Chaque requête arrive sous forme de payload IOC signé EIP-712 portant un seq monotone, createdAtTs et goodTilTs. Avant que le runtime ne tarifie quoi que ce soit, il confirme que le signataire est enregistré via l'autorisation d'agent, que le seq n'a pas été réutilisé, que les horodatages sont à l'intérieur de la fenêtre de validité et — quand la garde de commit est active — que le hash d'ordre a déjà été enregistré dans l'OrderCommitRegistry on-chain sur Base via commitOrder. L'échec de l'un de ces contrôles abandonne la requête avant qu'elle n'atteigne le chemin de matching.
La tarification s'effectue face à un vAMM sans liquidité. Il n'y a pas de carnet maker au repos sur lequel s'appuyer, donc les cotations du moteur passent par des courbes sensibles au skew, des plafonds d'inventaire stricts et la pression de l'open interest par marché. Un taker qui achète dans un carnet déjà fortement long paie un taux effectif plus élevé qu'un taker qui achète dans un carnet équilibré, et le plafond de notionnel directionnel en cours est appliqué à la frontière d'admission plutôt qu'au moment du fill.
Quand un fill est accepté, le moteur déplace la taille de position, la base d'entrée, le PnL réalisé, la composante de frais 0,020 %/0,060 % et tout règlement en cash dans une seule transition ordonnée. Le financement s'accumule à partir de la même avancée d'état, de sorte qu'un trader ne peut pas observer une position dont le carry a été mis à jour mais dont le PnL réalisé ne l'a pas été. Le reste non rempli d'un IOC est annulé immédiatement — il n'y a pas d'ordre actif à suivre.
agent autorisé
-> commitOrder(...) enregistré dans OrderCommitRegistry
-> IOC signé EIP-712 entre dans le runtime
-> contrôles signer / seq / createdAtTs / goodTilTs
-> contrôles d'admission et de posture
-> cotation vAMM face au skew et à l'inventaire
-> fill ou annulation du reste
-> position, frais, fundingAccrued, cash avancent dans une seule transition
-> le pipeline de publication émet un nouvel état de marché
#Posture de marché, carry et routines forcées
Chaque marché tourne à l'intérieur d'une machine d'états explicite avec cinq postures : live, réduit, close-only, session fermée, arrêté. Ce ne sont pas des étiquettes UI — ce sont des règles d'admission qui gouvernent si un ordre frais peut ajouter du risque, si la réduction est encore ouverte, et si la plateforme honore une pause de session sous-jacente ou attend une référence de prix plus propre. Les transitions sont pilotées par la fraîcheur des références, les calendriers de session, la pression du skew, l'utilisation, l'exposition aux mauvaises dettes et les contrôles de reprise après une période dégradée.
L'open interest, le déséquilibre directionnel et la foule sont mesurés en continu, et alimentent la même boucle qui définit l'indice de financement, le taux taker ajusté au skew et les plafonds d'inventaire. Le financement chez Dexter fait partie du modèle de carry du moteur — accumulé toutes les 8 heures dans fundingAccrued — pas un chiffre reconstruit à partir d'un reporting a posteriori. Les pages qui suivent dans ce chapitre détaillent chaque surface.
La réduction forcée réside dans le même domaine d'exécution. Les scans de liquidation, le traitement des mauvaises dettes conscient de l'assurance, la sélection ADL et le rééquilibrage post-stress partagent tous l'état et l'ordonnancement avec le traitement ordinaire des ordres. C'est ce qui maintient déterministe le comportement sous stress : quand la marge de maintenance franchit le plancher et qu'une position est liquidée, la même transition de frais, financement et ledger tourne que pour une clôture volontaire — seul le déclencheur diffère.
#Ce que cela signifie pour votre challenge
- Le même moteur remplit votre challenge et le carnet public. Une tentative à 49 $ ou 99 $ n'est pas routée vers un sandbox — elle est tarifiée face au vAMM de production au même skew, au même plafond d'inventaire et au même barème 0,020 % maker / 0,060 % taker. Une cible de +10 % produite ici est le +10 % qu'un compte public de 50 000 $ aurait produit sur un flux identique, c'est pourquoi les paiements financés sur Base sont reproductibles face à la chaîne.
- Les coûts de skew sont des coûts réels qui comptent face au +10 %. Quand le moteur élève le taux taker effectif contre une direction surchargée, cette surcharge tombe sur votre équité dans le même fill. Lutter contre le skew est la raison la plus fréquente pour laquelle une tentative use le plancher quotidien de -4 % sans jamais toucher la ligne de liquidation.
- Le carry de financement fait partie de votre PnL. Toutes les 8 heures, l'indice de financement se règle et fundingAccrued déplace votre équité. Tenir une position dans une direction surchargée pendant 30 jours peut discrètement brûler 1 à 3 % avant tout mouvement directionnel — vérifiez le taux publié par marché avant de dimensionner une détention sur plusieurs jours.
- Les routines forcées mettent fin aux tentatives sur la barre où elles se déclenchent. Les flux de liquidation, ADL et rééquilibrage ferment les positions au mark, attachent des frais de liquidation explicites en plus de la perte réalisée et franchissent presque toujours le drawdown quotidien de -4 % ou total de -8 % sur la même barre. Le moteur les traite comme des transitions ordinaires, il n'y a donc pas d'exception : la perte touche immédiatement le contrôle des règles.
- Les comptes financés utilisent le même chemin de code. Un compte de paiement 90 / 10 n'a pas de couche de matching séparée ni de barème de frais privé. Mêmes prix, mêmes frais, même cadence de financement, même marge de maintenance — c'est pourquoi un compte réussi se comporte exactement comme la tentative qui l'a obtenu.