This page is conceptual. Live and historical funding values are available from
GET /v1/fundingRates and the funding WebSocket channel.The basic model
The funding rate is driven by the basis — the gap between the perp’s price and the oracle price. A persistent premium produces positive funding (longs pay), which incentivizes traders to close longs / open shorts and pulls the price back toward the oracle; a persistent discount does the reverse. This is the same convergence mechanism used across perp markets.Base rate. With no premium, funding sits at a base rate: a small fixed interest rate for crypto perps, and SOFR + 0.5% per year for real-world-asset perps. The premium (below) moves the live rate above or below that base. The rate in effect is
fundingRate (last applied) and nextFundingRate on GET /v1/markets.How the rate is calculated
Funding is charged once an hour, and each hour’s rate is built from two pieces:- a base rate — the baseline cost of holding the position, charged even when the perp trades right at fair value; and
- a premium — an adjustment that grows as the perp drifts above or below the oracle, nudging the price back.
nextFundingAt on GET /v1/markets. Throughout, clamp(x, ±y) just means “keep x within the range −y to +y.”
Step 1 — adjust the oracle to “today” (real-world assets only)
Stocks settle a day or more after they trade (T+1), so a live stock price isn’t directly comparable to a perp you hold continuously. For RWA markets the oracle is nudged to a same-day value before the premium is measured (crypto settles same-day, so this step does nothing):days_to_settle is the calendar days until the stock settles (usually 1), and sofr_rate_hourly is the RWA base rate expressed per hour:
sofr_rate_hourly is simply that annual rate plus 0.5%, divided down to a per-hour figure. The effect on the oracle is tiny.
Example. AAPL oracle = $200, base rate ≈ 5%/yr (so sofr_rate_hourly ≈ 0.00000579), T+1 settlement → 200 / (1 + 0.00000579 × 24 × 1) ≈ $199.97 — under 3 cents.
Step 2 — measure the premium
The premium is how far the perp trades from the oracle price, as a fraction of the oracle. It uses impact prices — the average price to buy or sell a fixed test size by walking the order book — instead of the best bid/ask, so one tiny quote can’t distort it:- perp above the oracle (impact bid > oracle) → positive premium → longs pay shorts
- perp below the oracle (impact ask < oracle) → negative premium → shorts pay longs
- oracle sitting between the impact bid and ask → premium is zero
$100,000, and buying the test size would cost $100,050 on average → premium = (100,050 − 100,000) / 100,000 = 0.05%.
Step 3 — turn the premium into the hourly rate
By convention the full premium is paid off over 8 hours, so each hour charges one-eighth of it on top of the base rate. The total is capped at a per-market maximum hourly rate,max_rate, which can never exceed the engine’s hard limit of ±4% per hour.
Crypto — a fixed base rate, base_rate_8h, quoted per 8 hours. A small dead-band, dead_band_8h, holds funding exactly at the base rate until the premium moves more than that far away from the base level, so trivial premiums don’t add funding noise:
sofr_rate_hourly, from Step 1), with no dead-band, so the premium always counts and the rate lands exactly on the base rate when the perp trades at the same-day oracle:
sofr_rate_hourly ≈ 0.00000579 and a perp trading 0.08% above the same-day oracle (premium = 0.0008): funding_rate_hourly ≈ 0.00000579 + 0.0008/8 ≈ 0.0106% for the hour.
Step 4 — the payment
$10,000 position, a long pays about $1.06 that hour.
How funding is applied
Funding payments are credited to or debited from your collateral balance. They count toward your account equity, and therefore your free collateral, margin, and liquidation price, as they accrue. Funding is not included in a position’sunrealizedPnl, which reflects only the move from entry price to mark price. Per-position funding totals are reported in the cumulativeFunding object (allTime, sinceOpen, sinceChange; positive = received, negative = paid) on GET /v1/positions, and the history of individual payments is available from GET /v1/funding.
When an RWA market is outside its regular trading hours, this calculation is replaced by a SOFR-based rate — see Off-hours funding below.
Real-world assets
For perps on equities, commodity ETFs, and index ETFs, funding works the same way during regular trading hours. Cash dividends are reflected in the oracle price, not paid through funding — see Corporate actions.Off-hours funding
While an RWA market is outside its regular trading hours, there’s no reliable oracle to measure a premium against, so the calculation above is suspended. Funding is instead set to SOFR + 0.5% (annualized, converted to the hourly rate) and recomputed every hour from the latest SOFR. Within RTH — premarket and after-hours included — funding runs live. The rest of the off-hours regime (higher initial margin, price bands, and which markets it applies to) is described in Trading when the underlying is closed.Regular-trading-hours calendars differ by market, and the exact premium sampling and clamp parameters are per-market config. Read live funding from the API rather than recomputing it.