the cost of carrying a position, where it can be measured
An interest component of 0.01% per 8 hours compounds to 11.6% a year, and the other venue's rolling fee rate is unpublished, so venues.carry_comparable() returns False.
Figures rebuilt 2026-08-27 by the MarketMoves editorial desk. Every number on this page is derived from the sources named in the methodology.
funding is charged every hour at a fraction of the 8-hour rate
Hyperliquid charges funding every hour rather than on the three-times-daily schedule most perpetual venues use, at one eighth of the 8-hour rate. The rate itself is market-set rather than a venue charge: it moves with the premium of the perpetual over the index, is capped at 4.00% per hour, and is paid peer to peer between the long and short side with no venue cut. A position held through 8 intervals therefore pays or receives the equivalent of one 8-hour rate.
Two consequences follow from the hourly interval. A position closed inside an hour pays no funding at all, which pushes the entire cost of a short hold onto the opening fee. And a position held through a persistent premium pays 8 times per 8 hours at a rate that can reset each hour, so the charge is a running variable rather than a fixed term of the contract.
Hyperliquid funding, interval, cap and peer-to-peer settlement.
the interest component annualises to 11.6%
Inside the funding formula sits a fixed interest component of 0.00125% per hour, which is 0.01% per 8 hours and is paid by the long side to the short side. Multiplying by the 8,760 hours in a year gives 11.0% simple, and compounding the hourly rate over the same period gives 11.6%. Both are computed here from the hourly figure in the registry rather than quoted, which is why the compounded number is the one this site uses.
The interest component is small against the cap and large against the opening fee. The taker fee equals 34.6 hours of the interest component at 10× and the same 34.6 hours at the 40× cap, because both terms scale with notional and the ratio between them does not move with the rung. A position held beyond that many hours has paid more in carry than at entry, taking the market-set part of funding as flat.
the cap is a per-hour number, so it is large over 8 hours
The cap of 4.00% per hour is 32.0% over 8 hours. That figure is not a forecast; it is the ceiling the venue documents, and it is worth stating in the same units as the distance to liquidation because the two are commensurable. On a zero-buffer venue the whole runway at 5× is 20.0%, which one capped 8-hour period would exceed on its own, and the same comparison holds at every rung above it.
| Rung | Notional on $100.00 | Taker open | Funding over 8 hours at the cap | Hours of interest to equal the open | Room | Capped 8-hour funding exceeds the room |
|---|---|---|---|---|---|---|
| 2× | $200.00 | $0.09 | $64.00 | 34.6 | 48.8% | no |
| 3× | $300.00 | $0.13 | $96.00 | 34.6 | 32.1% | no |
| 5× | $500.00 | $0.22 | $160.00 | 34.6 | 18.8% | yes |
| 10× | $1,000.00 | $0.43 | $320.00 | 34.6 | 8.75% | yes |
| 20× | $2,000.00 | $0.86 | $640.00 | 34.6 | 3.75% | yes |
| 25× | $2,500.00 | $1.08 | $800.00 | 34.6 | 2.75% | yes |
| 40× | $4,000.00 | $1.73 | $1,280.00 | 34.6 | 1.25% | yes |
Notional is stake multiplied by the rung. Taker open is
venues.open_cost() on the notional basis, net of the published
referral discount. The hours column is the opening fee expressed as a share of
notional divided by the 0.00125% hourly interest component. Room is
venues.liq_move() at a 1.25%
maintenance rate. Cited: funding,
fees.
the other rate is charged every 8 hours and is not published
Moon documents a rolling fee charged every 8 hours and
describes the rate as dynamic. No figure is published for it anywhere in the help
centre, so venues.carry('moon')['rate'] is None and every function on
this site that would multiply it returns nothing instead of a guess. That is a
deliberate absence rather than an oversight in the data collection: a modelled
rate would make every table look precise and be wrong.
Moon betting glossary, rolling fee and interval.
the two cannot be compared on cost of carry
| Term | Rolling fee, wager basis | Funding, notional basis |
|---|---|---|
| Charging interval | every 8 hours | every hour |
| Rate published | no | yes |
| Slices per 8 hours | 1 | 8 |
| Cap per hour | not published | 4.00% |
| Cap over one 8-hour interval | not published | 32.0% |
| Interest component per 8 hours | not published | 0.01% |
| Interest component, simple annual | not published | 11.0% |
| Interest component, compounded annual | not published | 11.6% |
| Counterparty | the venue | peer to peer, no venue cut |
| Comparable on cost of carry | no | |
With one rate published and one not,
venues.carry_comparable() returns
False, and that return value gates the
comparison rather than a judgement about it. A total cost of ownership figure
would require both rates; a cost of entry figure requires only the fee schedules,
which both venues publish. Every cost number on this site is therefore scoped to
entry.
Scoped to entry means a floor and not an estimate. A position held overnight on either venue will have paid more than any table here shows, and on the venue with the unpublished rate the size of that difference is unknown rather than small. Third-party testers additionally report a performance fee on realised profit and a spread inside the settlement price, neither of which appears in Moon's own documentation and neither of which is modelled anywhere on this site.
what changes if the rate is published
The registry carries a review date, reviewed through 2026-11-27, and the carry record
has a rate field waiting for a figure. Filling it makes
carry_comparable() return True, at which point the cost tables can
extend from entry to a stated holding period and the crossover rung of
23.1× taker becomes a function of the hold rather
than of the entry alone. Until then the crossover is an entry-cost statement and
is labelled as one on every page that prints it.
the entry-cost arithmetic in full, what is excluded and why.
Registry 2026-08-27a, reviewed through 2026-11-27. Rebuilt 2026-08-27 07:56 UTC UTC across 45 tracked markets.