Pular para o conteúdo

    Aperte / para buscar e [ ou ] para ir à página anterior ou à próxima.

    Como funciona por dentro

    PnL com impacto assimétrico

    Como o Exchange acerta um fechamento e onde o protocolo tira a sua parte de uma operação.

    As posições abrem ao preço médio da Hyperliquid, e um fechamento usa o preço médio do bloco em que é executado. Não há spread, nem slippage, nem funding, nem taxa sobre o tamanho da posição, nem gas cobrado de você. Uma perda nunca custa mais do que a própria perda: enquanto a fila está vazia, a taxa dela sai do que o LP recebe, e enquanto há créditos na fila, ela é dispensada.

    Num fechamento com ganho, o protocolo aplica ao ganho um desconto de impacto assimétrico. Não é uma taxa sobre o seu nocional nem um spread sobre o preço: ele multiplica o ganho por um fator que depende de quanto o preço se moveu entre a entrada e a saída. Num ganho muito pequeno, ele leva a maior parte; conforme o movimento cresce, leva menos. Um fechamento com ganho passa por quatro etapas, nesta ordem:

    1. Zona morta. O ganho é medido como se a saída fosse 0.002% do preço de entrada (a entrada dividida por 50,000) menos favorável. Um ganho menor que isso vira zero.
    2. Retenção. Se o preço se moveu dentro da faixa da curva de pagamento em vigor, o movimento é encurtado mais um pouco antes de qualquer outro cálculo.
    3. Impacto. O ganho restante é escalado pela fórmula abaixo.
    4. Taxa sobre ganho. 2% do ganho escalado é a taxa; você recebe o resto. Um fechamento assinado com uma chave de sessão que indica um builder aprovado também paga a esse builder 0.5% do ganho escalado (veja Códigos de builder); as chaves do próprio app não indicam nenhum.

    Duas curvas de pagamento

    O contrato fixa duas curvas de pagamento. Elas só diferem na faixa de movimentos que retêm:

    Curva Faixa de movimentos de preço retidos Maior retenção
    Padrão 0.0075%–0.06% 0.0118% num movimento de 0.0338%
    Fora do horário 0.003%–0.1% 0.0204% num movimento de 0.0418%

    A curva fora do horário vale em períodos tranquilos, como fins de semana e noites, quando o livro de ofertas está mais raso. Um keeper dedicado alterna entre as duas segundo um cronograma publicado; ele pode escolher uma dessas duas curvas e nada mais, e todos os fechamentos de uma mesma transação são acertados na mesma curva. Fora da faixa, e nas bordas dela, nada é retido. Dentro dela, um movimento maior sempre paga mais.

    Propriedades

    • Assimétrico. Só os fechamentos com ganho são escalados. Os fechamentos com perda não pagam nada a mais.
    • Pelo movimento, não pela posição. A parte que fica com você não depende de você fechar uma posição pequena ou grande. Um nocional de referência por mercado define a inclinação; o tamanho da sua operação não entra no cálculo.
    • Movimentos maiores ficam com mais. O desconto diminui de forma suave conforme o movimento cresce, até um teto: um ganho nunca fica com mais de 90% antes da taxa. Dentro da faixa de retenção, a parte que fica é menor que a da curva suave, mas o pagamento continua subindo a cada tick do movimento.

    A fórmula

    Todos os valores são inteiros e toda divisão arredonda para baixo. Os preços são brutos (o preço da Hyperliquid vezes a escala de preço do mercado); valores wad têm 18 casas decimais, então 1e18 é um.

    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
    

    A retenção de uma curva com faixa (a, z) (em milionésimos do preço de entrada) e escala k, para um movimento de preço favorável p = |exit − entry| dentro da faixa, em unidades brutas, com u a posição de p na faixa:

    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
    

    Toda etapa arredonda para baixo. h está em unidades brutas escaladas por 1e18; a única divisão por entry acima transforma o movimento retido num wad. O próprio pnl nunca é retido: é o que o evento de fechamento informa como ganho.

    Conforme o movimento cresce, os dois termos diminuem, o denominador se aproxima de um e a parte que fica se aproxima de 1 − b. Conforme o movimento se aproxima de zero, os termos crescem sem limite e o ganho escalado despenca para zero; se o denominador de qualquer um dos termos arredondar para zero, a escala é zero. Uma perda é simplesmente min(N · |exit − entry| / entry, margin), sem zona morta e sem escala.

    Parâmetros implantados

    Parâmetro BTC ETH
    Zona morta 0.002% 0.002%
    Taxa base b 10% 10%
    Multiplicador de taxa rm 15,000 15,000
    Multiplicador de posição pm 814.598 483.979
    Nocional de referência rn $100,000 $100,000

    O que isso significa para quem ganha, contando a zona morta:

    Movimento do preçoGanho preservado · BTCGanho preservado · 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%
    Parte do ganho bruto que um fechamento com ganho preserva depois da zona morta e da escala de impacto, antes da taxa sobre ganho. Calculada com os parâmetros implantados; a parte não depende do tamanho da posição.

    Por que o termo de tamanho é fixo

    Numa versão desta curva dependente do tamanho, o segundo termo cresce com o nocional real da posição, então operações maiores perdem uma parte maior do ganho. Com esta alavancagem, isso empurraria os traders para muitas posições pequenas (mais transações, mais estado, mais gas) sem melhorar a economia de ninguém. Aqui, o segundo termo usa em vez disso um nocional de referência fixo por mercado, então o desconto é a mesma porcentagem para qualquer tamanho de posição.

    Por que este desenho

    Com esta alavancagem, nem uma taxa sobre o nocional nem um spread sobre o preço conseguiriam sustentar um LP: ou seriam pequenos demais para fazer diferença, ou grandes demais para alguém pagar. A escala de impacto coloca o custo onde ele acompanha o resultado: o ganho de uma operação vencedora. Perdas nunca pagam a mais.

    A curva também cria atrito sobre ganhos pequenos, inclusive ganhos que poderiam vir de distorcer o livro por um instante. Mas ela não é uma checagem de preço e não torna a manipulação não lucrativa; veja Riscos.

    Do PnL ao pagamento

    O resultado ajustado entra nas regras de acerto de Solvência e fila: um ganho é pago como adjusted menos a taxa sobre ganho (e a taxa de builder, quando há builder), ou vai para a fila quando falta caixa no LP; uma perda entra no LP menos a taxa sobre perda, ou na reserva separada enquanto há créditos na fila. O app e os serviços usam um port em TypeScript dessas fórmulas, conferido wei a wei contra vetores de teste gerados pelos contratos e contra valores observados on-chain.

    Última atualização: