Trading fees
Spot trading is free. Margin trades pay volume-tiered fees in USD, measured on 14-day rolling USD volume:
Tier 2 and 3 makers receive a rebate of 25% and 50% respectively of the taker fee paid on their filled volume.
Trading fee rates are 1,000,000-scaled integers (
150 means 0.015%). Taker and maker fees round up; maker rebates round down from the taker fee.
10,000 USD margin fill at Tier 3 has taker_rate = 100 and maker_rate = 0. The taker pays ceil(10,000 USD * 100 / 1,000,000) = 1.00 USD. With a 50% rebate share, the maker receives floor(1.00 USD * 500,000 / 1,000,000) = 0.50 USD, so maker_net_fee = -0.50 USD.
Every order carries a max fee rate field (ppm); the order will not match at a higher fee. See Orders.
Funding rates
The overweight leverage side of a market pays the underweight side, bounding skew. Rates are computed and applied once per hour from time-weighted averages over the preceding hour. Positive rate: longs pay shorts. Negative: shorts pay longs.- Skew component: skew (time-weighted net long/short open interest ÷ max OI) inside the per-asset deadzone (
skew_cliff) contributes nothing; beyond it, the rate grows with the square of the excess, scaled by a per-asset factor. - Premium component: tracks the deviation between the book’s impact prices (the volume-weighted price to fill a reference notional on each side) and the oracle price, pulled toward a per-asset base rate, with a per-asset clamp on the adjustment. This is mainly a stress/deposit-scarcity term; skew is the normal funding driver.
50,000 USD long pays 50,000 USD * 790 / 1,000,000 = 39.50 USD for that funding interval.
skew_cliff deadzone; beyond it, it grows with the square of the excess and is clamped at ±max_funding_rate.
Imbalanced books
A market is almost always skewed, so funding is settled through the protocol rather than transferred one-to-one between traders:- The paying side is charged in full:
position notional × |rate|. - The receiving side is paid its pro-rata share of what was collected, capped per account at
|rate| × position notional. - Because the paying side is usually the larger side, more is collected than is owed to receivers. The surplus goes to the protocol fee account.
Funding fee tiers
Accounts carrying large open interest pay discounted funding. The tier is set by the account’s open interest (OI) averaged over a 14-day rolling window, in notional USD, and reduces funding charges only — not borrow rates or trading fees.
The highest tier whose threshold the account meets applies. Discounts are 1,000,000-scaled registry values (
50000 means 5%).
The discount does not come out of the receiving side. The headline rate grosses up the raw skew-and-premium rate by the paying side’s average discount, so the same total is collected and receivers are paid in full — full-rate accounts carry the cost, not receivers or the protocol.
raw_rate × Σ OI no matter how the discounts are distributed — what the receiving side is owed never changes.
Example: the raw skew-and-premium rate is 0.095%, and the paying side holds 100m USD of open interest — 50m at full rate and 50m in the 10% tier, a 5% OI-weighted average discount. The headline rate is 0.095% ÷ (1 − 0.05) = 0.10%.
- A full-rate
50,000 USDlong pays50,000 × 0.10% = 50.00 USD. - A
50,000 USDlong in the 10% tier pays50,000 × 0.10% × 0.90 = 45.00 USD.
50m × 0.10% + 50m × 0.09% = 95,000 USD — exactly 0.095% × 100m, what receivers are owed at the raw rate. The gross-up and the discounts cancel.
Borrow rates
Borrowers pay depositors a utilization rate, quoted as an annual percentage. Two rates per asset:- Base borrow rate: borrowing the asset itself (a short borrows ETH). Utilization is measured against that asset’s deposits.
- Quote borrow rate: borrowing USD against that market (a leveraged long). Utilization is measured against the protocol-wide USD deposit pool.
5m USD, deposits are 15m USD, and the spot OI cap is 5m USD, then lendable = 5m USD and utilization = 5m USD / (5m USD + 5m USD) = 50%. With kink points (40%, 2%) and (70%, 5%), the interpolated borrow rate is:
deposit notional × max rate; excess goes to the protocol fee account.
3,000 USD of borrow fees are collected and a lender supplied 200,000 USD of the 1,000,000 USD time-weighted deposits, that lender receives 3,000 USD * 200,000 USD / 1,000,000 USD = 600 USD, subject to the per-user cap.
Rate data
GET /funding-rate/{asset_id}: current indicative rate.GET /funding-rate/history: hourly applied rates (the authoritative record), newest first in the standard pagination envelope:items,page,limit,total_pages,cursor_size,has_next_page, andnext_page.- Indicative funding and borrow rates also stream over the public interest-engine
/ratesWebSocket; see WebSocket streams. - Per-asset rate parameters (
max_funding_rate,skew_cliff, base rates, kink breakpoints):GET /registry/risk-parameters.
Charge cap
Each hourly funding or interest charge is capped so the account’s equity cannot fall below the midpoint between its liquidation threshold and its bad-debt threshold. A charge can make an account liquidatable but never insolvent; an account already at bad-debt level is charged nothing. Conversion rounding favors the user.1,000 USD, the liquidation threshold is 700 USD, and the bad-debt threshold is 400 USD, then charge_floor = (700 USD + 400 USD) / 2 = 550 USD. The account can be charged at most 1,000 USD - 550 USD = 450 USD that hour.
Other fees
- Rebalancing: deposits, withdrawals, and settlements incur a fee or earn a reward of up to 2.5% to keep per-chain vault liquidity balanced.