Public methodology

Every number, and how it was made.

Every HyperCarry output comes from public Hyperliquid state through formulas anyone can verify. This page is the reference: each formula in the form it is applied, the endpoint behind each input, and the limits of what the model can honestly claim.

01What carry means

A carry position earns a recurring payment for holding an exposure, rather than a profit from price movement. On Hyperliquid the clearest example is a cash-and-carry: buy an asset in the spot market, short the same quantity of its perpetual, and collect funding while the two legs cancel each other's price risk.

Perpetual futures have no expiry, so funding is the mechanism that keeps the perpetual near the spot price. When the perpetual trades above spot, longs pay shorts. A trader who is short the perpetual and long the spot collects that payment without taking a directional view — which is why the position is described as carry rather than speculation.

Hyperliquid settles funding every hour, so an hour is the natural unit for every calculation on this site.

02Why a funding rate is not a return

A funding rate describes what one leg of a position pays over one hour. A return describes what the whole position keeps over the time you actually hold it. Between the two sit costs that the rate says nothing about:

  • Trading fees on both legs, paid on entry and again on exit.
  • Slippage from crossing the spread and walking the book, on both legs, both times.
  • Margin locked behind the short leg, which is capital you cannot use elsewhere.
  • The cash tied up in the spot leg for the whole holding period.
  • Financing, if the capital was borrowed.
  • Holding time, which decides how many hours of funding you get to amortise the one-off entry and exit costs across.

Entry and exit costs are paid once regardless of how long you hold. A position held for four hours pays the same round-trip cost as one held for a month, but collects roughly one one-hundred-eightieth of the funding. This is why HyperCarry refuses to quote a return without a holding period.

A quoted rate is not a realized return.

03How funding is annualised

annualised = hourly_rate x 24 x 365
           = hourly_rate x 8760

This is a simple extrapolation of a floating rate. It assumes the current hour's rate persists for a year, and it does not compound. Both assumptions are false in general — the number exists to make rates comparable across markets, not to predict a yield.

Hyperliquid's baseline funding component is 0.01% per 8 hours, which is 0.00125% per hour, or 10.95% annualised. A market sitting at exactly that rate is at the protocol's floor, not in an unusual state.

Annualised funding extrapolates the current hourly rate across 8,760 hours. It is not a yield and it does not compound.

04How historical averages are calculated

mean_hourly = (1/n) x Σ funding_rate(i)   for all i in the window

annualised  = mean_hourly x 8760

A plain arithmetic mean of the settled hourly payments inside the trailing window. It is not compounded, not weighted by open interest, and not smoothed. HyperCarry retains a 30-day window per market and derives both the 7-day and 30-day averages from it.

Each window also reports coverage: the number of payments observed divided by the number of hours in the window. Coverage below 100% means the market did not settle funding for every hour — usually a recent listing. A window with no observations reports as unavailable rather than as zero.

A trailing average describes what funding did, not what it will do.

05How fees are modelled

Fee rates are not constants inside HyperCarry. They are read live from Hyperliquid's published schedule, which the info API returns from userFees alongside the queried address's own rates. HyperCarry queries an address with no trading history, so the schedule it reads is the venue-wide table, including every VIP tier.

entry_fees = spot_notional x spot_entry_rate
           + perp_notional x perp_entry_rate

exit_fees  = spot_qty x spot_exit_px x spot_exit_rate
           + perp_qty x perp_exit_px x perp_exit_rate

Which tier applies to you depends on your own 14-day volume, which HyperCarry cannot know without an address. The tier is therefore an input you select, and the rates inside it come from the API.

A market entry pays taker on both legs. A limit entry is modelled at maker rates. The unwind is always modelled as a market exit, because a carry is usually closed when it stops working rather than when a resting order happens to fill — assuming a maker exit would understate the cost of leaving.

06How order-book slippage is estimated

Both legs are filled by walking the real order book returned by l2Book, level by level, best price first. The spot leg is consumed by notional (you size a carry in dollars); the perp leg is consumed by quantity, so that both legs hold the same number of units and the position is genuinely delta-neutral.

avg_fill_px = Σ(level_px x size_taken) / Σ(size_taken)

entry_slip  = qty x (spot_fill_px − spot_mid)     long leg
            + qty x (perp_mid − perp_fill_px)     short leg

exit_slip   = qty x (spot_mid − spot_exit_px)     long leg
            + qty x (perp_exit_px − perp_mid)     short leg

Slippage is measured against the book mid, not the touch, so the figure includes the cost of crossing the spread as well as the cost of walking the book. Exit slippage is estimated against the book as it stands today.

Hyperliquid publishes 20 levels per side. If a requested size exceeds the visible depth, HyperCarry reports the position as unmodellable and states how much the book could actually support. It never extrapolates depth beyond what was published.

Hyperliquid publishes 20 price levels per side. Size beyond the visible book cannot be modelled.

07How deployed capital is calculated

perp_margin = perp_notional / leverage
capital     = spot_notional + perp_margin

The spot leg is bought outright, so its full cost is committed for the holding period. The short leg locks initial margin. Together they are the capital the position occupies.

Leverage is clamped to the maximum permitted at that notional by the asset's margin tier, read from the marginTables in metaAndAssetCtxs. When a clamp is applied, the result says so explicitly.

Entry costs are expensed against profit rather than capitalised. This is a convention, and HyperCarry states it here rather than leaving it implicit in the number.

08How net APR is calculated

gross_carry = perp_notional x hourly_rate x hours

total_costs = entry_fees + exit_fees
            + entry_slip + exit_slip
            + financing

net_profit  = gross_carry − total_costs

net_APR     = (net_profit / capital) x (8760 / hours)

Net APR is measured on deployed capital, not on position notional. Quoting a return against notional would flatter any leveraged position by ignoring the cash locked in the spot leg.

The annualisation factor 8760 / hours is what makes short holds look as expensive as they are: a position held four hours annualises its one-off round-trip costs 2,190 times over.

Optional financing is charged pro rata: financed_amount x APR x (hours / 8760).

09How break-even funding is calculated

break_even_hourly = total_costs / (perp_notional x hours)
break_even_annual = break_even_hourly x 8760

cushion (pp)      = modelled_annual x 100 − break_even_annual x 100

Every cost in the model is independent of the funding rate, so net profit is a straight line in funding. That makes the break-even root exact rather than something solved numerically.

The cushion is the distance, in annualised percentage points, between the funding rate the projection used and the rate at which the position stops covering its costs. It answers the question a carry trader actually has: how far can funding fall before this trade is pointless?

A cushion under 2 percentage points is reported as near break-even rather than as a positive result, because a margin that thin is inside the error of the assumptions behind it.

Funding changes. Your break-even changes with it.

10How funding stability is measured

An APR computed from a single hour tells you nothing about whether that rate is normal for the market. Funding stability is HyperCarry's measure of how consistent the hourly rate has been across the trailing 7 days.

cv    = stdev(hourly_rates) / (|mean(hourly_rates)| + 0.0000125)
score = 100 / (1 + cv)

  score >= 70  ->  Steady
  score >= 40  ->  Variable
  score <  40  ->  Erratic

The 0.0000125 floor is Hyperliquid's own baseline interest-rate component (0.01% per 8 hours). Anchoring dispersion to it means a market whose average funding sits near zero cannot report an unbounded coefficient of variation, and the scale stays tied to something real rather than an arbitrary epsilon.

A score is only produced from 24 or more hourly observations. Below that the metric reports as unavailable, because a score built on a handful of hours would be noise dressed as a measurement.

11How the liquidation estimate works

Hyperliquid sets maintenance margin to half the initial margin at the tier's maximum leverage, so the maintenance margin rate is 1 / (2 x max_leverage). Applying the published liquidation formula to an isolated short reduces to:

mmr       = 1 / (2 x max_leverage_at_tier)
liq_price = entry_px x (1 + (1/leverage − mmr) / (1 + mmr))
distance  = (liq_price − entry_px) / entry_px

The estimate is only produced when the margin tier for that notional could be read and the requested margin is above maintenance; otherwise it reports as unavailable.

Spot holdings do not margin the perp leg. The short can be liquidated while the spot leg is untouched.

12How Carry Confidence works

Every figure is labelled by how it was produced. The label describes the quality of the calculation, never the quality of the trade, and it is not a rating or a recommendation.

Indicative
Derived primarily from the latest floating funding rate. It can change with the next hourly payment and is not a projection of what a position would earn.
Modeled
Derived from trailing funding history, the live fee schedule, current order-book depth, your holding period, and the margin the short leg requires.
Observed
Reserved for completed funding payments and realised costs from a position that actually existed. HyperCarry does not produce Observed results in this release.

A rate-sheet row is always Indicative: it describes rates, not positions, and no cost has been applied to it. A modelled position reaches Modeled only when the funding basis is a trailing average and the live fee schedule, both order books, the margin tier, and a holding period were all present. If any of those is missing, or if the projection rests on the current floating rate, the result stays Indicative and names the gap.

Observed is reserved for completed funding payments and realised costs from a position that actually existed. HyperCarry does not produce Observed results in this release, and does not fabricate them. Position monitoring is the work that will make the classification reachable.

13Which Hyperliquid endpoints are used

Every request is a POST to https://api.hyperliquid.xyz/info, made server-side. No API key, no wallet connection, no private data.

Request typeSupplies
metaAndAssetCtxsPerp universe, margin tier tables, mark and oracle price, current hourly funding, open interest, 24h volume
spotMetaAndAssetCtxsSpot universe, token registry, spot mark prices — used to resolve the hedging pair
fundingHistorySettled hourly funding payments, paginated to build the 30-day window
predictedFundingsNext funding settlement time from the Hyperliquid venue
l2BookOrder-book depth for both legs, used for fill prices and slippage
userFeesThe venue-wide published fee schedule, including VIP tiers
allBorrowLendReserveStatesSupply and borrow rates, utilisation, LTV, totals supplied and borrowed

Resolving the spot leg. Hyperliquid does not publish a link between a perpetual and its spot market, so HyperCarry derives one: it looks for a USDC-quoted pair whose base token is named after the perpetual, or that name prefixed with U for Unit-bridged assets, and prefers an exact name match, then the pair with the most 24-hour volume. Pairs with no traded volume are rejected. The chosen pair and how it matched are shown on every result, so a bad match can be rejected before sizing anything. A perpetual with no confident match is reported as having no spot leg.

14Data freshness and caching

Every payload carries the timestamp at which its underlying Hyperliquid response was retrieved, and the interface renders that age rather than implying the figure is live. Cache windows are set by how fast the underlying data actually moves:

metaAndAssetCtxs             15s
predictedFundings            60s
allBorrowLendReserveStates   60s
spotMetaAndAssetCtxs          5m
userFees (fee schedule)      15m
l2Book                        3s
fundingHistory                3h  (30-day window per market)

Funding history is the expensive one: fundingHistory caps at 500 rows per response, so a 30-day window needs pagination, and doing that for 170-odd markets on every page load would be abusive. Instead the rate sheet backfills the rows in view, reports the rest as pending, and reuses each window for three hours — with the retrieval timestamp shown, so you can see exactly how old an average is.

Outbound requests are governed by a sliding one-minute weight budget matching Hyperliquid's documented per-IP limit, held at 75% of the ceiling. If a refresh fails, the last successfully retrieved value is shown and flagged as stale, with its original timestamp. HyperCarry never replaces a failed read with a substituted value.

15Known limitations

  • Funding is modelled on a constant notional. In practice it accrues on the mark value at each hourly settlement, which drifts with price.
  • Trailing averages are not forecasts. A 7-day mean describes what funding did. It carries no claim about the next hour.
  • Exit costs use today's book. The book you unwind into will be a different book.
  • Visible depth is 20 levels per side. Real execution can access resting liquidity that never appears in a snapshot, and can also face less than what a snapshot showed.
  • The legs are not atomic. Spot and perpetual fills happen separately, and the price can move between them. The model prices both from one snapshot.
  • Spot does not margin the perp. The short leg can be liquidated while the spot leg sits untouched, which converts a hedged position into a naked long.
  • A limit entry may never fill. Modelling it as a resting fill at the mid is an idealisation that removes entry slippage by assumption.
  • The spot-leg match is a heuristic. It is shown on every result precisely because it is derived rather than published.
  • Borrow and supply rates float with utilisation, and are never combined with perpetual funding anywhere in HyperCarry.
  • No execution, no monitoring. HyperCarry models positions. It does not place orders, track open positions, or know whether you entered.

Make every source of carry on Hyperliquid measurable, comparable, and monitorable.

HyperCarry is accounting, modelling, and (in future) monitoring infrastructure. It is not financial advice and it does not recommend positions.