How Perpia calculates funding-rate arbitrage

Every APR, cost and size on Perpia is computed the same way, from live venue data. This page documents those calculations, their assumptions, and — just as important — what they do not claim. If a number here looks off, that's a bug worth reporting, not a feature.

Data sources & refresh

Perpia reads funding rates, order books, volume and open interest directly from 25 DEX and 8 CEX perpetuals, plus order books from 8 spot venues for the spot-perp (cash-and-carry) leg. Funding rates from every venue are normalized to an annualized figure so they are comparable on one scale, regardless of each venue's native interval (1h, 4h, 8h, 24h). The scan republishes roughly every few minutes; each page shows when its snapshot was last generated.

Gross funding APR

A delta-neutral funding trade holds a coin long on the venue paying the most negative funding and short on the venue paying the most positive. The gross funding APR is the annualized difference between those two venues' rates — the raw spread before any cost is taken out. It is the headline number, and on its own it is optimistic.

Net APR — after fees, spread and slippage

Net APR is the gross spread minus the friction of actually running the trade, annualized. The friction has three parts:

Fees. Taker (and, where applicable, maker) fees on both legs, for entry and exit, using each venue's real fee schedule.
Spread. The live bid/ask spread on both legs — you cross it entering and again exiting.
Slippage. An estimate of market impact at size, from the depth of each book (a square-root impact model), capped so a thin book doesn't produce a fantasy number.

Concretely, the friction is annualized over a fixed holding window of 30 days:

Net APR (30-day) = Gross APR − round-trip friction × 365 / 30

So Net APR is what you would keep holding the position for ~30 days. A shorter hold pays that one-time friction over fewer days, so its true annualized return is lower; a longer hold, higher. The 30-day horizon is a fixed assumption, not a promise — read it together with how long the spread has actually persisted. It can be negative even when gross is large; that is the point.

Break-even and holding window

Fees and spread are paid once, when you open and close. Funding is earned continuously. So the true return depends on how long you hold: a spread that looks great annualized may not survive the round-trip cost if it closes in a day. Read the net APR together with the holding window — a short-lived spread needs a much higher rate to clear its entry and exit cost than one that persists.

Maximum tradeable size

Where a venue publishes order-book depth, the max size shown is a conservative fraction (10%) of the thinner side's depth — roughly what you could enter without moving the price materially. Where depth isn't published, we say so (“size depends on live venue depth”) rather than presenting a placeholder as a real cap. A huge APR on a book that only supports a few thousand dollars is a mirage, and the size figure is there to expose that.

The 30-day backtest — and its limits

Each coin page shows a 30-day retrospective of the currently best venue pair: what a delta-neutral position in that exact pair would have earned in funding over the last month, net of fees, with the realized equity curve and max drawdown.

This is deliberately narrow, and worth reading honestly. It is not a strategy simulation that re-picks the best available pair at each moment in the past — so it carries selection bias (we chose today's winner and looked back) and does not reconstruct historical liquidity or execution. It is a sanity check — “did this pair actually pay, or is the live rate a spike?” — not a promise of forward return. Realized funding almost always runs below the live headline because rates drift and decay.

Suspect and low-quality data

Any opportunity whose gross APR exceeds 500% is flagged as suspect — that magnitude is nearly always a units error, a stale quote or a venue glitch, not a real spread. Suspect rows are excluded from every headline, best-pair and summary figure on the SEO pages; the full scanner can still show them, clearly marked, for users who want to inspect them. Aggregate figures (like total open interest) are additionally bounded to plausible ranges so one broken adapter can't distort a whole page.

Known limitations

Rates are snapshots, not tick data — a spread can move between the snapshot and your fill. Slippage is modelled, not measured per fill. The backtest carries the biases above. Some long-tail venues publish partial depth or no depth. None of this is hidden: where a number is an estimate or a placeholder, the page says so.

Questions or a number that looks wrong? Reach out.