Skip to content
TradePerpetuals9 pages
What a perpetual future isFoundationA perpetual future is a contract on an asset's price that never expires, kept close to that price by an hourly payment between longs and shorts.Contract specificationsPractitionerEvery Hyperliquid perp is a linear contract on 1 unit of its asset, defined by size decimals, maximum leverage, a margin table and a margin mode.FundingPractitionerFunding is an hourly payment between longs and shorts, set by how far the perp trades from the oracle price, that ties a contract with no expiry to its index.Margin: cross, isolated and margin tiersPractitionerMargin is the collateral behind a perp: initial margin to open, maintenance margin to stay open, shared in cross mode or ring-fenced in isolated mode.Leverage and liquidationPractitionerBelow maintenance margin, positions go to the order book as market orders; below two thirds of it, the liquidator vault takes them over.Auto-deleveragingExpertWhen an account goes below zero, auto-deleveraging closes the most profitable, most leveraged opposing positions at the previous mark price, leaving no bad debt.Hyperps and index perpetualsPractitionerHyperps fund against a moving average of their own mark price until spot trading exists; index perps track a formula the validators publish.AMM-priced perpetualsExpertSome perps price off a Uniswap V2 or V3 pool instead of exchange spot prices, and are isolated only, with margin locked in until the position closes.DelistingPractitionerWhen validators vote to delist a perp, positions settle at the 1-hour time-weighted oracle price before the vote and no new orders are accepted.

Borrowing and lending

Practitioner

HyperCore lends USDC and USDT against HYPE or BTC at a fixed loan-to-value, on a curve where suppliers earn the borrow rate times utilisation times 0.9.

You can borrow dollars against HYPE or BTC without selling them, or earn interest on idle USDC. HyperCore runs one pool per quote asset and prices borrowing on a published curve you can check against pool state.

Say you supply 100 HYPE at $40 and borrow 2,000 USDC:

Step Value
Supply 100 HYPE at $40
Capacity 100 * 40 * 0.65 = 2,600 USDC
Borrow 2,000 USDC health factor 130%, 600 more borrowable
Health factor reaches 100% HYPE at about $30.77
Partial liquidation starts HYPE at about $24.24

Interest accrues on the borrow throughout, so both trigger prices creep up.

Supply to earn, supply collateral, or borrow

Section titled “Supply to earn, supply collateral, or borrow”

One account can play any of the three roles.

Role Assets Earns or pays Notes
Supply to earn USDC, USDT the supply rate, accrued continuously, indexed hourly position has a basis (what went in) and a value (with interest); adds no borrowing capacity
Supply collateral HYPE, BTC nothing: measured on mainnet, both reserves report supply rate 0.0 at utilisation 0.0 raises borrowing capacity
Borrow USDC, USDT the borrow rate capacity is the sum over collateral of supplied amount * oracle price * LTV, HYPE 65%, BTC 50%

Utilisation u is total borrowed over total supplied.

borrow APY = 0.05 + 4.75 * max(0, u - 0.8) compounded continuously
supply APY = borrow APY * u * 0.9 measured; reproduces the API to 9 decimal places
live check: 0.05 * 0.671438682 * 0.9 = 0.030214741
API supplyYearlyRate 0.0302147407 at utilization 0.671438682

Suppliers earn less because interest is spread over all supply, not just the lent part, and the protocol keeps 10 per cent as a liquidation buffer.

0% 80% 100% utilisation 5% 100% APY borrow = 0.05 + 4.75 * max(0, u - 0.8) supply = borrow * u * 0.9 kink at 80%
Borrow is flat at 5 per cent to 80 per cent utilisation, then climbs 475 basis points per point; supply reaches 90 per cent at full utilisation.

What this means for you. Supply rates stay small until the pool is busy: at 50 per cent utilisation, 0.05 * 0.5 * 0.9 is 2.25 per cent. Near and past the kink both rates move fast.

Health stops new borrowing; liquidation comes later

Section titled “Health stops new borrowing; liquidation comes later”

The health factor is LTV-weighted collateral value / borrowed value. At or below 100 per cent you can’t borrow more, but you aren’t liquidated. Partial liquidation starts when borrowed value exceeds collateral weighted by the liquidation threshold:

liquidation price = borrowed value / (supplied amount * liquidation threshold) one collateral asset

Standard and unified accounts (account modes) borrow manually; portfolio margin borrows automatically and disables the manual action.

Parameter Value
Quote assets (supply to earn, or borrow) USDC, USDT
Collateral assets (LTV) HYPE 65%, BTC 50%
Collateral supply rate 0
Liquidation threshold (1 + LTV) / 2: HYPE 82.5%, BTC 75%
Borrow APY 0.05 + 4.75 * max(0, u - 0.8)
Borrow APY at u up to 0.8 5%
Slope past the kink 475 basis points of borrow APY per point of utilisation
Borrow APY at u = 1 100%
Supply APY borrow APY * u * 0.9
Protocol retention 10% of borrow interest
Accrual continuous, indexed hourly
Caps global and per-user, per asset (portfolio margin)

Liquidity can lock. At 100 per cent utilisation suppliers can’t withdraw until more is supplied or borrows repaid. Liquidity and caps can also limit a borrow below what collateral allows.

A lender holds a balance, not an asset. It can’t be sold or pledged, so the only exit is a withdrawal that waits on utilisation (composable credit).

HTTP. borrowLend is live on both networks, undocumented, and signed as an L1 action, so an API wallet can send it.

{"type": "borrowLend", "operation": "supply", "token": 0, "amount": "100"}

operation is supply, withdraw, borrow or repay; amount is a decimal string or null.

CoreWriter action 15. (uint8 op, uint64 token, uint64 wei): op 0 supply, 1 withdraw; wei in HyperCore wei (1e8 for USDC), 0 for the maximum. Ops 2 (borrow) and 3 (repay) are unresolved: one tool routes them, measurement covers only supply and withdraw. Portfolio margin accounts are refused (CoreWriter).

Refusals look like success on the HyperEVM. A CoreWriter supply with too little spot balance returned EVM status 1 while HyperCore logged Borrow/Lend error: Insufficient spot balance for operation.

Reading state.

Source Returns
borrowLendUserState {user} per token, borrow and supply each with basis and value, in token amounts not USD; health, healthFactor
borrowLendReserveState {token} borrowYearlyRate, supplyYearlyRate, balance, utilization, oraclePx, ltv, totalSupplied, totalBorrowed
allBorrowLendReserveStates the same, for every reserve
precompile 0x811 (address, uint64 token) borrow and supply, each (basis, value)
precompile 0x812 (uint64 token) 8 x uint64: borrowYearlyRateBps, supplyYearlyRateBps, balance, utilizationBps, oraclePx, ltvBps, totalSupplied, totalBorrowed

0x811 reverts, not zeros, for an account with no lending record, even a funded one: guard the call. Mainnet token ids are USDC 0, HYPE 150, UBTC 197, USDT0 268. Testnet differs (HYPE is 1105), so never share the constant across networks (precompiles).

No rate history. Neither the API nor the precompiles (latest block only) return past rates. Sample before you need the series.

Read live pool state, not documented numbers

Section titled “Read live pool state, not documented numbers”

balance is not supplied minus borrowed. On mainnet it exceeded totalSupplied - totalBorrowed by about 46.57 USDC (USDT0: 0.07113), growing over three reads 3 seconds apart: the retained buffer. Price pool shares off totalSupplied or supply.value.

Documented caps drift. On 2026-09-20 mainnet HYPE supply read 10,233,170.44 against the documented 10M global cap.

For the rate as a holding cost, see Carry. For pricing the kink, see Options on the borrow rate.