Funding Mechanism (v2)

Multi-venue impact-based continuous funding mechanism

Paradex uses a continuous funding mechanism. The Impact Premium is a weighted median of impact-based premiums measured across multiple venues (Paradex, Binance, Bybit, OKX, Lighter, Hyperliquid). Sampling several venues and taking a weighted median makes the funding rate robust to any single venue being thin, stale, or dislocated.

Funding calculation flow

  1. Per-venue impact premium: calculate bid and ask impact premium on each venue’s book.
  2. Aggregation: calculate a weighted median impact premium across venues and divide by spot to get the Premium Rate.
  3. Raw Funding Rate: apply the standard clamping formula to pull the Premium Rate toward the Baseline Interest Rate (0.01%). Scale by the Funding Multiplier (0.5x for TradFi, 1x for all other markets) and clamp by ±\pm the Maximum Funding Rate.
  4. Smoothed Funding Rate: EWMA over the raw rate; this is the published rate.
  5. Funding Premium: convert the published rate into the per-period payment (USDC per unit of notional).
  6. Funding Index: time-weighted accrual of the Funding Premium since launch.
  7. Accrued Funding: per-position settlement from the change in the Funding Index.

1. Per-venue impact premium

For each venue VV, a fixed impact notional is walked into the order book on both sides:

Impact NotionalV=base_impact_notional×notional_multiplier[V]impact_bidV=VWAP of selling Impact NotionalV into V’s bidsimpact_askV=VWAP of buying Impact NotionalV into V’s asks\begin{aligned} & \text{Impact Notional}_V = \text{base\_impact\_notional} \times \text{notional\_multiplier}[V] \\[6pt] & \text{impact\_bid}_V = \text{VWAP of selling Impact Notional}_V \text{ into } V\text{'s bids} \\ & \text{impact\_ask}_V = \text{VWAP of buying Impact Notional}_V \text{ into } V\text{'s asks} \end{aligned}

base_impact_notional is 5,000 for BTC and ETH and 1,000 for all other assets. notional_multiplier scales it per venue:

Venuenotional_multiplier
Paradex1
Binance4
Bybit4
OKX4
Hyperliquid4
Lighter2

The premium on each venue is calculated from the impact prices:

premium[V]=max(impact_bidVspot_priceV,  0)max(spot_priceVimpact_askV,  0)\text{premium}[V] = \max(\text{impact\_bid}_V - \text{spot\_price}_V,\; 0) - \max(\text{spot\_price}_V - \text{impact\_ask}_V,\; 0)

spot_price_V is the index price published by venue VV; each venue’s premium is evaluated against its own index.

Insufficient depth. If a side’s book cannot absorb the full impact notional, that side’s term is set to 0 (e.g., if bid depth is short, max(impact_bidVspot_priceV,  0)=0\max(\text{impact\_bid}_V - \text{spot\_price}_V,\; 0) = 0, while the ask side is unaffected). A venue with no available market is excluded entirely.

2. Aggregation

The Premium Rate is the weighted median of premium[V]\text{premium}[V] over the venues with an available market, divided by spot:

Impact Premium=weighted_median{(premium[V],  weight[V])}Premium Rate=Impact PremiumSpot Price\begin{aligned} & \text{Impact Premium} = \text{weighted\_median}\big\{(\text{premium}[V],\; \text{weight}[V])\big\} \\ & \text{Premium Rate} = \frac{\text{Impact Premium}}{\text{Spot Price}} \end{aligned}

Each venue carries a global score, funding_premium_score, used in every market:

Venuefunding_premium_score
Paradex3.5
Binance1.2
Bybit1.2
OKX1.2
Hyperliquid1.2
Lighter1.2

Scores are normalized to weights across the available venues (after exclusions) so they sum to 1:

weight[V]=funding_premium_score[V]funding_premium_score[available venues]\text{weight}[V] = \frac{\text{funding\_premium\_score}[V]}{\sum \text{funding\_premium\_score}[\text{available venues}]}

The aggregated Premium Rate is an input to the funding rate.

3. Raw Funding Rate

The Raw Funding Rate pulls the Premium Rate toward the Baseline Interest Rate (0.01%), applies a Funding Multiplier (0.5x for TradFi, 1x for all other markets), and clamps the result by ±\pm the Maximum Funding Rate (2% for BTC/ETH/SOL, 0.5% for TradFi, 5% for all other perpetual markets):

Δ=clip(Baseline RatePremium Rate,  ±Clamp Rate)Raw Rate=clip(Funding Multiplier×(Premium Rate+Δ),  ±Max Rate)\begin{aligned} & \Delta = \text{clip}\big(\text{Baseline Rate} - \text{Premium Rate},\; \pm\text{Clamp Rate}\big) \\ & \text{Raw Rate} = \text{clip}\big(\text{Funding Multiplier} \times (\text{Premium Rate} + \Delta),\; \pm\text{Max Rate}\big) \end{aligned}

Defaults (individual markets may override):

ParameterDefaultPurpose
Baseline Rate (Interest Rate)0.01% per 8hRate the market converges toward when the Premium Rate is near 0.
Clamp Rate0.05% per 8hMaximum pull of the Baseline toward or away from the Premium Rate.
Max Funding Rate2% (BTC/ETH/SOL), 0.5% (TradFi), 5% (other) per 8hCap on the raw rate.
Funding Multiplier1 (0.5 for TradFi)Per-market scalar in [0,1][0, 1] applied before the cap.
Funding Period8hReference window for the three rates above.

4. Smoothed Funding Rate

The published Funding Rate is an EWMA over the Raw Rate:

Funding Ratet=(1α)Funding Ratet1+αRaw Ratet\text{Funding Rate}_t = (1 - \alpha) \cdot \text{Funding Rate}_{t-1} + \alpha \cdot \text{Raw Rate}_t

Smoothing is specified by half-life: the time for a step change in the Raw Rate to be half-absorbed into the published rate. With a 1-second tick, α=121/H\alpha = 1 - 2^{-1/H}, where HH is the half-life in seconds.

Market stateHalf-life of published rate
Regular perpetual30 min
Post-only period30 s

5. Funding Premium

At time tt, the Funding Premium is the amount paid by longs to shorts per funding period (8h by default), expressed in the settlement asset (USDC) per unit of notional:

Funding Premium=Funding Rate×Spot Oracle PriceUSDC Oracle Price\text{Funding Premium} = \text{Funding Rate} \times \frac{\text{Spot Oracle Price}}{\text{USDC Oracle Price}}

Although funding is continuous, the Funding Premium is quoted per period and represents the funding paid on 1 unit of long position over the 8h funding period assuming market data does not change.

6. Funding Index

A global Funding Index tracks accrued funding for one unit of the asset since launch as the time-weighted sum of the Funding Premium, updated each 1-second tick:

Indext=Indext1+Premiumt1×ΔtFunding Period Seconds\text{Index}_t = \text{Index}_{t-1} + \text{Premium}_{t-1} \times \frac{\Delta t}{\text{Funding Period Seconds}}

If the gap since the previous tick exceeds 30 seconds (outage, oracle maintenance, market pause), Δt\Delta t is treated as zero so the index does not jump.

Positions held through a pause accrue no funding during it; partial holding periods settle exactly by the index delta, with no “next funding” countdown.

7. Accrued Funding

The Accrued (Unrealized) Funding of an open position depends on the change in the Funding Index since its last cached value:

Accrued Funding PnL=Position Size×(Current IndexCached Index)×USDC Oracle Price\text{Accrued Funding PnL} = -\text{Position Size} \times (\text{Current Index} - \text{Cached Index}) \times \text{USDC Oracle Price}

where Position Size is signed (positive long, negative short).

Sign conventions. A positive Index delta is positive funding (rich perp); the leading minus sign makes the PnL negative for longs (they pay) and positive for shorts (they receive). Negative funding flips this: shorts pay, longs receive.

Accrued funding realizes into PnL whenever the position is modified (trade, liquidation, transfer, or withdrawal):

Funding Realized PnL=Previous Position Size×(Current IndexCached Index)\text{Funding Realized PnL} = -\text{Previous Position Size} \times (\text{Current Index} - \text{Cached Index})

Funding updates

  • The funding rate is recomputed every 1 second.
  • It is published on the funding_data WebSocket channel and embedded in every price tick.
  • History is available via the account funding-history REST endpoint.
  • Funding is paused when the oracle is in maintenance, the USDC price is invalid, or the market is halted.

Example

Assume BTC-USD-PERP with the default 8h funding period, over a 1-minute holding window, with Spot Price, USDC Price, Premium Rate, and the smoothed Funding Rate held constant (steady state). In production all four update each second; this just keeps the arithmetic tractable.

QuantityValue
Spot Price60,000 USD
USDC Price1.00
Premium Rate (from the weighted median of impact premiums / spot)0.08% (8 bps)
Position Size+0.5 BTC (long)
Holding window60 s

Raw rate:

Δ=clip(0.00010.0008,  ±0.0005)=0.0005Raw Rate=clip(1×(0.0008+(0.0005)),  ±0.02)=0.0003\begin{aligned} & \Delta = \text{clip}(0.0001 - 0.0008,\; \pm 0.0005) = -0.0005 \\ & \text{Raw Rate} = \text{clip}(1 \times (0.0008 + (-0.0005)),\; \pm 0.02) = 0.0003 \end{aligned}

Smoothed rate: at steady state, Funding Rate=Raw Rate=0.0003\text{Funding Rate} = \text{Raw Rate} = 0.0003.

Premium (per 8h, per unit of notional):

Premium=0.0003×60,0001.00=18 USDC per BTC per 8h\text{Premium} = 0.0003 \times \frac{60{,}000}{1.00} = 18\ \text{USDC per BTC per 8h}

Index advance over 60 s (8h = 28,800 s):

ΔIndex=18×6028,800=0.0375 USDC per BTC\Delta\text{Index} = 18 \times \frac{60}{28{,}800} = 0.0375\ \text{USDC per BTC}

Accrued PnL on +0.5 BTC over the minute:

PnL=0.5×0.0375×1.00=0.01875 USDC\text{PnL} = -0.5 \times 0.0375 \times 1.00 = -0.01875\ \text{USDC}

The long pays about 1.9 cents over the minute. Extrapolated to a full 8h, the long pays roughly 0.5×18=90.5 \times 18 = 9 USDC, which is 0.03% of a 30,000 USD notional (a useful sanity check).