跳到正文

    按 / 搜索,按 [ 和 ] 前往上一页和下一页。

    深入原理

    非对称冲击盈亏

    Exchange 如何结算平仓,以及协议在一笔交易中从哪里收取分成。

    仓位按 Hyperliquid 中间价开仓,平仓使用执行所在区块的中间价。没有点差、没有滑点、没有资金费、不按仓位规模收费,也不向你收取 gas。亏损的扣款永远不会超过亏损本身:队列为空时,亏损手续费从 LP 收到的部分中扣出;有待付款排队时则免收。

    盈利平仓时,协议会对收益施加非对称的冲击折减。它不是按名义价值收取的手续费,也不是价格上的点差:它把收益乘以一个系数,这个系数取决于开仓到平仓之间价格变动的幅度。收益很小时,它拿走大部分;变动越大,拿走得越少。盈利平仓依次经过四步:

    1. 死区:计算收益时,把平仓价向不利方向移动开仓价的 0.002%(开仓价除以 50,000)。不超过这个幅度的盈利记为零。
    2. 留存:如果价格变动落在当前生效的派付曲线的区间内,计算其他各项之前,变动会再被缩短一点。
    3. 冲击:剩余收益按下面的公式缩放。
    4. 盈利手续费:缩放后收益的 2% 作为手续费,其余归你。如果平仓所用的会话密钥指定了一个已获批准的构建者,还要向该构建者支付缩放后收益的 0.5%(见构建者代码);应用自己的密钥不指定任何构建者。

    两条派付曲线

    合约中固定了两条派付曲线,它们只在被留存的变动区间上不同:

    曲线 被留存的价格变动区间 最大留存
    标准 0.0075%–0.06% 0.0118% at 0.0338%
    非交易时段 0.003%–0.1% 0.0204% at 0.0418%

    非交易时段曲线用于周末、夜间等订单簿较薄的安静时段。一个专门的维护程序按公布的时间表在两者之间切换;它只能在这两条曲线中选择,不能做其他任何事,同一笔交易中的所有平仓都按同一条曲线结算。区间之外以及区间边界上不留存任何部分。在区间之内,变动越大,派付仍然一定越多。

    特性

    • 非对称:只有盈利平仓会被缩放。亏损平仓不额外付费。
    • 按变动幅度,而不是按仓位规模:保留的比例与你平的是小仓位还是大仓位无关。每个市场有一个参考名义价值,决定曲线的陡峭程度;你的交易规模不参与计算。
    • 变动越大,保留越多:折减随变动增大而平滑缩小,直到一个上限:扣除手续费前,盈利保留的比例永远不超过收益的 90%。在留存区间内,保留的比例低于这条平滑曲线,但派付仍随变动的每一个价位上升。

    公式

    所有数值都是整数,每次除法都向下取整。价格为原始价格(Hyperliquid 价格乘以市场的价格倍数);wad 值带 18 位小数,因此 1e18 即一。

    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, z)(以入场价的百万分之一计)、系数为 k 的曲线,对区间内的有利价格变动 p = |exit − entry|(原始价格单位)的留存如下,其中 u 是 p 在区间中的位置:

    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
    

    每一步都向下取整。h 以原始价格单位乘以 1e18 计;上面那一次除以 entry 把留存后的变动变成 wad。pnl 本身永远不被留存:它就是平仓事件报告的收益。

    变动增大时,两项都缩小,分母趋近于一,保留的比例趋近于 1 − b。变动趋近于零时,两项无限增大,缩放后的收益随之坍缩到接近零;如果任一项的分母取整后为零,缩放系数即为零。亏损就是 min(N · |exit − entry| / entry, margin),没有死区,也没有缩放。

    已部署参数

    参数 BTC ETH
    死区 0.002% 0.002%
    基础费率 b 10% 10%
    速率乘数 rm 15,000 15,000
    仓位乘数 pm 814.598 483.979
    参考名义价值 rn $100,000 $100,000

    对盈利方而言,计入死区后的效果如下:

    价格变动保留的收益 · BTC保留的收益 · 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%
    盈利平仓在扣除死区和冲击系数之后、扣除盈利手续费之前保留的原始收益比例。按已部署的参数计算;该比例与仓位大小无关。

    为什么规模项是固定的

    在与规模挂钩的版本中,这条曲线的第二项随仓位的实际名义价值增长,仓位越大,损失的收益比例就越大。在这样的杠杆下,这会促使交易者拆成许多小仓位(更多交易、更多状态、更多 gas),却不会改善任何人的经济结果。这里的第二项改用每个市场固定的参考名义价值,因此无论仓位大小,折减的百分比都相同。

    为什么这样设计

    在这样的杠杆下,无论是按名义价值收费,还是在价格上加点差,都无法维持一个 LP:要么太小而无济于事,要么太大而没人付得起。冲击系数把成本放在随结果增长的地方:盈利交易的收益。亏损永远不会额外付费。

    这条曲线还会给小额收益增加摩擦,包括可能来自短暂扭曲订单簿的收益。不过它不是价格检查,也不能让操纵无利可图;见风险。

    从盈亏到支付

    调整后的结果进入偿付能力与队列中的结算规则:盈利支付 adjusted 减去盈利手续费(有构建者时再减去构建者费),池中现金不足时则进入队列;亏损扣除亏损手续费后进入 LP,有待付款排队时则进入专用桶。应用和服务使用这些公式的 TypeScript 移植版本,它与合约生成的测试向量以及链上观测值逐 wei 核对一致。

    最后更新: