Aller au contenu

    Appuyez sur / pour rechercher, sur [ et ] pour la page précédente et la suivante.

    Fonctionnement en détail

    PnL à impact asymétrique

    Comment l’Exchange règle une clôture, et où le protocole prend sa part d’un trade.

    Les positions s’ouvrent au prix médian d’Hyperliquid, et une clôture utilise le prix médian du bloc où elle s’exécute. Pas de spread, pas de slippage, pas de funding, pas de frais sur la taille de la position, et aucun gas à votre charge. Une perte ne coûte jamais plus que la perte : tant que la file est vide, ses frais sont prélevés sur ce que reçoit le LP, et tant que des créances sont en file, ils sont supprimés.

    Sur une clôture gagnante, le protocole applique au gain une décote d’impact asymétrique. Il ne s’agit ni de frais sur votre notionnel ni d’un spread sur le prix : la décote multiplie le gain par un facteur qui dépend de l’ampleur du mouvement entre l’entrée et la sortie. Sur un très petit gain, elle en prend la plus grande partie ; plus le mouvement grandit, moins elle prend. Une clôture gagnante passe par quatre étapes, dans l’ordre :

    1. Zone morte. Le gain est mesuré comme si la sortie était moins favorable de 0.002% du prix d’entrée (l’entrée divisée par 50,000). Un gain plus petit tombe à zéro.
    2. Retenue. Si le prix a bougé d’un montant compris dans la bande de la courbe de paiement en vigueur, le mouvement est encore un peu raccourci avant tout autre calcul.
    3. Impact. Le gain restant est ajusté par la formule ci-dessous.
    4. Frais sur gain. 2% du gain ajusté constituent les frais ; vous recevez le reste. Une clôture signée avec une clé de session qui désigne un builder approuvé verse aussi à ce builder 0.5% du gain ajusté (voir Codes builder) ; les clés de l’app n’en désignent aucun.

    Deux courbes de paiement

    Le contrat fixe deux courbes de paiement. Elles ne diffèrent que par la bande de mouvements qu’elles retiennent :

    Courbe Bande de mouvements de prix retenus Retenue maximale
    Standard 0.0075%–0.06% 0.0118% pour un mouvement de 0.0338%
    Hors heures 0.003%–0.1% 0.0204% pour un mouvement de 0.0418%

    La courbe hors heures s’applique pendant les périodes calmes, comme le week-end et la nuit, quand le carnet d’ordres est plus mince. Un keeper dédié bascule de l’une à l’autre selon un calendrier publié ; il peut choisir l’une de ces deux courbes et rien d’autre, et toutes les clôtures d’une même transaction se règlent sur la même courbe. Hors de la bande, et à ses bords, rien n’est retenu. À l’intérieur, un mouvement plus grand rapporte toujours davantage.

    Propriétés

    • Asymétrique. Seules les clôtures gagnantes sont ajustées. Les clôtures perdantes ne paient rien de plus.
    • Fonction du mouvement, pas de la position. La part conservée ne dépend pas de la taille de la position que vous clôturez. Un notionnel de référence par marché fixe la pente ; la taille de votre trade n’entre pas en compte.
    • Les grands mouvements gardent davantage. La décote diminue progressivement à mesure que le mouvement grandit, jusqu’à un plafond : un gain ne garde jamais plus de 90% avant les frais. Dans la bande de retenue, la part conservée est inférieure à celle de la courbe lisse, mais le paiement augmente toujours à chaque tick du mouvement.

    La formule

    Toutes les valeurs sont des entiers et chaque division arrondit à l’inférieur. Les prix sont bruts (le prix Hyperliquid multiplié par l’échelle de prix du marché) ; les valeurs wad ont 18 décimales, donc 1e18 vaut un.

    db       = entry / D                                  deadband in raw units, D = deadbandDivisor
    d        = |exit − entry| − db                        zero or less: no gain
    pnl      = N · d / entry                              N = margin × leverage
    move     = d · 1e18 / entry                           the move beyond the deadband, as a wad
    lo, hi   = entry · a / 1e6, entry · z / 1e6           the curve's band in raw units; in band when lo < |exit − entry| < hi
    move     = (d · 1e18 − h) / entry                     in band, h the holdback (below); zero or less: no gain
    gain     = N · move / 1e18   in band, else pnl
    term1    = 1e36 / (move · rm / 1e18)                  rm = rateMultiplier
    term2    = rn · 1e18 / (1e6 · move · pm / 1e18)       rn = referenceNotional, pm = positionMultiplier
    scale    = (1e18 − b) · 1e18 / (1e18 + term1 + term2) b = baseRate
    adjusted = gain · scale / 1e18
    

    La retenue d’une courbe de bande (a, z) (en millionièmes du prix d’entrée) et d’échelle k, pour un mouvement de prix favorable p = |exit − entry| dans la bande, en unités brutes, avec u la position de p dans la bande :

    w = hi − lo,   u = (p − lo) · 1e18 / w,   v = 1e18 − u,   t = u · v / 1e18
    standard:   h = k · w · (t · t / 1e18) / 1e18                  k = 3.597 · 1e18
    off-hours:  h = k · w · ((t · t / 1e18) · v / 1e18) / 1e18     k = 6.085 · 1e18
    

    Chaque étape arrondit à l’inférieur. h est en unités brutes mises à l’échelle par 1e18 ; l’unique division par entry ci-dessus transforme le mouvement retenu en wad. pnl lui-même n’est jamais retenu : c’est ce que l’événement de clôture indique comme gain.

    À mesure que le mouvement grandit, les deux termes diminuent, le dénominateur tend vers un et la part conservée tend vers 1 − b. Quand le mouvement tend vers zéro, les termes croissent sans limite et le gain ajusté s’effondre vers zéro ; si le dénominateur de l’un des termes s’arrondit à zéro, l’échelle vaut zéro. Une perte vaut simplement min(N · |exit − entry| / entry, margin), sans zone morte ni ajustement.

    Paramètres déployés

    Paramètre BTC ETH
    Zone morte 0.002% 0.002%
    Taux de base b 10% 10%
    Multiplicateur de taux rm 15,000 15,000
    Multiplicateur de position pm 814.598 483.979
    Notionnel de référence rn $100,000 $100,000

    Ce que cela signifie pour un gagnant, zone morte comprise :

    Mouvement du prixGain conservé · BTCGain conservé · ETH
    2 bp20.3%16%
    5 bp54.6%48.1%
    10 bp73.9%69%
    25 bp82.9%80.4%
    50 bp86.4%85%
    100 bp88.1%87.4%
    200 bp89.1%88.7%
    500 bp89.6%89.5%
    Part du gain brut qu’une clôture gagnante conserve après la zone morte et l’échelle d’impact, avant les frais sur gain. Calculée avec les paramètres déployés ; la part ne dépend pas de la taille de la position.

    Pourquoi le terme de taille est fixe

    Dans une version de cette courbe dépendante de la taille, le second terme croît avec le notionnel réel de la position, si bien que les gros trades perdent une plus grande part de leur gain. À ce niveau de levier, cela pousserait les traders vers une multitude de petites positions (plus de transactions, plus d’état, plus de gas) sans améliorer l’économie de quiconque. Ici, le second terme utilise plutôt un notionnel de référence fixe par marché, si bien que la décote est le même pourcentage quelle que soit la taille de la position.

    Pourquoi ce modèle

    À ce niveau de levier, ni des frais sur le notionnel ni un spread sur le prix ne pourraient faire vivre un LP : ils seraient soit trop faibles pour compter, soit trop élevés pour que quiconque les paie. L’échelle d’impact place le coût là où il varie avec le résultat : le gain d’un trade gagnant. Les pertes ne paient jamais de supplément.

    La courbe freine aussi les petits gains, y compris ceux qui pourraient venir d’une distorsion passagère du carnet. Ce n’est pas pour autant un contrôle de prix, et elle ne rend pas la manipulation non rentable ; voir Risques.

    Du PnL au paiement

    Le résultat ajusté entre dans les règles de règlement de Solvabilité et file : un gain est payé comme adjusted moins les frais sur gain (et les frais de builder, quand il y a un builder), ou mis en file quand le LP manque de liquidités ; une perte va dans le LP moins les frais sur perte, ou dans la réserve à part tant que des créances sont en file. L’app et les services utilisent un portage TypeScript de ces formules, vérifié au wei près contre des vecteurs de test générés par les contrats et contre des valeurs observées on-chain.

    Dernière mise à jour: