Interest Rate Arbitrage in Crypto: Funding, Basis and Lending
Interest rate arbitrage in crypto captures the spread between rates implied by economically linked instruments — perpetual funding, dated-futures basis, and lending/borrowing rates — while hedging out directional exposure to BTC or ETH. There is no central bank; these rates are set by leveraged retail demand, fragmented across venues, and frequently inconsistent. That inconsistency is the opportunity, but "delta-neutral" is not "risk-free": the realized edge is the rate spread net of fees, the cost to borrow the leg you short, liquidation buffers, and counterparty risk. This piece lays out the rate curve and the cost model.
Unlike the carry trade, which holds an unhedged yield differential and accepts price risk, true rate arbitrage hedges the delta and keeps only the spread. It is the rate-curve generalization of classical cash-and-carry arbitrage.
One curve, three instruments
Funding, basis, and lending are three observations of the same quantity: the market price of leverage on the underlying. In an integrated market they would imply a single rate; in crypto they diverge because:
- Capital is fragmented across CeFi, DeFi, and dozens of exchanges.
- Transfer friction (withdrawal limits, on-chain latency) prevents instant
equalization.
- Demand is retail-leverage-driven — sentiment-driven and sticky.
The arbitrageur expresses the spread between any two points on this implied curve while neutralizing the third (price direction). The unifying accounting identity:
net_apr = harvested_rate
- 2*fee_per_leg * (365/holding_days) # one-off entry/exit, amortized
- borrow_cost_apr(short leg)
- expected_slippage_apr
- counterparty/liquidation risk premium
1. Funding-rate arbitrage (perp cash-and-carry)
A perpetual future has no expiry; a periodic funding payment tethers it to spot. Positive funding means longs pay shorts (perp rich to spot); negative means shorts pay longs. The delta-neutral harvest: buy spot, short the perp, collect funding while it stays positive.
intervals_per_year = 3 * 365 # 8-hour funding -> 3x/day
apr = funding_per_interval * intervals_per_year
# 0.01% per 8h -> 0.0001 * 1095 ≈ 10.95% APR
The structurally important feature: funding income is continuous while trading cost is one-off, so the trade favors persistent regimes. The longer funding stays positive while you hold, the more the fixed entry/exit drag is diluted.
def funding_carry_apr(funding_per_interval, taker_fee=0.0004, legs=2,
holding_days=30, borrow_apr=0.0, slippage=0.0):
intervals = 3 * 365
gross_apr = funding_per_interval * intervals
round_trip = taker_fee * legs * 2 + slippage # both legs, open + close
cost_apr = round_trip * (365 / holding_days)
return gross_apr - cost_apr - borrow_apr
# 0.02% funding/8h, 0.04% taker, held 30 days
print(f"Net APR: {funding_carry_apr(0.0002):.2%}")
Cut costs with maker (post-only) orders on both legs (see order types and transaction costs), prefer unified-margin venues so the hedge is capital-efficient, and size each leg to the thinner book to control market impact. The deep version of this single trade is covered in crypto funding rate arbitrage.
2. Futures-basis arbitrage
A dated future at a premium to spot annualizes into a lock-until-expiry rate:
basis = future/spot - 1 = 61,800/60,000 - 1 = 0.03 # 3% over 90 days
implied_apr = 0.03 * (365/90) ≈ 12.2% APR
Buy spot, short the future; at expiry they converge and you capture the basis regardless of where BTC ends up. This is the crypto cash-and-carry, tied to the term structure in futures trading basics. In backwardation (future below spot) you reverse it: short spot or lend it, buy the future. Versus the perp version, dated basis has a fixed horizon — no funding-flip risk mid-hold, but capital is locked to expiry and you carry mark-to- market variation of the basis until then.
3. Lending-rate arbitrage
The same asset earns different yields across venues — a DeFi money market might pay 8% to supply USDC while a CeFi desk lends it at 5%. Borrow cheap, lend dear, pocket the spread, as long as it clears gas/fees and compensates for platform risk. Lending rates also set the floor for the other two trades: the cost to borrow the asset you short determines how attractive a funding or basis trade must be to beat simply lending your capital out. Always price the short-leg borrow before calling a spread "profit."
The rate curve in one view
| Instrument | Implied rate | Horizon | Distinct risk |
|---|---|---|---|
| Perp funding | funding × 1095 | Open-ended | Funding flips negative |
| Dated basis | (F/S−1) × 365/days | Fixed to expiry | Basis MTM, lockup |
| Lending | quoted APR | Term or open | Platform / smart-contract |
A coherent book treats these as one curve: harvest whichever point pays the most net of its specific risk, and arbitrage the spread between two when they diverge beyond costs.
Worked example: a funding-vs-basis dislocation
The most interesting trades appear when two points on the curve disagree. Suppose:
- Perp funding implies 18% APR (longs paying shorts heavily in a hot market).
- The 90-day dated future implies only 11% APR of basis.
Both are "long the rate" instruments — you collect by being short the rich one. The spread trade isolates the 7-point gap with less outright funding-flip risk than a naked perp carry: go short the perp (collect the rich 18%) and long the dated future (pay the 11%), holding spot only as needed for the delta hedge. If funding normalizes downward toward the basis, the spread converges in your favor regardless of BTC's direction. The risk you retain is that funding spikes further before converging, and the timing mismatch between the open-ended perp and the fixed-expiry future.
def curve_dislocation(funding_8h, fut_price, spot, days, hurdle_apr=0.05):
"""Compare perp-implied APR to dated-basis-implied APR.
Positive spread above the hurdle suggests shorting the perp vs. the future."""
perp_apr = funding_8h * 3 * 365
basis_apr = (fut_price / spot - 1) * (365 / days)
spread = perp_apr - basis_apr
return {
"perp_apr": perp_apr,
"basis_apr": basis_apr,
"spread": spread,
"tradeable": spread > hurdle_apr,
}
print(curve_dislocation(0.0005, 61_650, 60_000, 90)) # ~18% perp vs ~11% basis
This is genuinely closer to classical arbitrage than the outright carry, because both legs are rate instruments on the same underlying — you are trading the internal consistency of the curve rather than taking a view on its absolute level. The catch is that these dislocations are the first thing professional desks monitor, so they are usually small and short-lived.
"Delta-neutral" is not risk-free
| Risk | What happens | Mitigation |
|---|---|---|
| Funding flips negative | Income becomes a cost | Exit rule; monitor continuously |
| Liquidation on the short | A sharp rally margins out the perp | Fat buffer; cross/unified margin |
| Counterparty / venue | Withdrawals halt or venue fails | Spread venues; cap per-venue size |
| Smart-contract (DeFi) | Exploit drains funds | Audited, battle-tested protocols |
| Transfer latency | Can't rebalance legs in time | Pre-fund both venues |
| Fees & slippage | Erode a thin spread | Maker orders, liquid pairs, size to depth |
| Stablecoin de-peg | The "cash" leg loses value | Most liquid, transparent stablecoins |
The subtle killer is per-position liquidation. If you are short the perp and BTC rips up, the short loses fast; your spot gains, but if the legs sit in separate margin accounts the perp can be liquidated before you rebalance — converting a hedged trade into a realized loss while your spot gain is unrealized. Cross- or unified-margin and a large buffer are the structural fix; model the worst-case adverse move explicitly, much like a stress-test Value at Risk.
Sizing, monitoring, and the hurdle rate
- Size so a worst-case adverse move does not liquidate the hedged leg — budget
it with position sizing & risk management and leverage and margin.
- Define a kill rule: exit when net funding/basis APR falls below your
round-trip cost hurdle, or when funding flips.
- Backtest the historical funding/basis series including costs before committing —
see backtesting in Python — and automate with a bot over CCXT.
- Judge on net, risk-adjusted terms via the
Sharpe ratio, not headline APR. A 12% gross APR over a 10-day hold can be net negative after four taker fees and borrow.
Where the edge is thin and where it isn't
The honest picture: on the most liquid, tier-1 unified-margin venues, funding-carry yield is well known and competed down — it is a real but modest spread over the risk-free rate, paid for capital lockup and tail risk. The fatter yields live on riskier venues, in extreme funding spikes, or in DeFi protocols where the rate is compensation for counterparty, smart-contract, or de-peg risk you are underwriting. Treat any yield above ~30% APR as a risk signal, not free money, and ask exactly what you are being paid to bear. The edge decays as more delta-neutral capital arrives: spikes normalize within hours, and persistent gaps survive only where friction (transfers, borrow scarcity, venue risk) keeps faster capital out.
Conclusion
Interest rate arbitrage in crypto turns a fragmented, retail-driven cost of leverage into a largely market-neutral yield via three views of one curve: perp funding, dated basis, and lending spreads. The mechanics are simple; profitability lives entirely in costs, borrow, liquidation buffers, and counterparty risk. Hedge the delta, size for the worst case, watch funding continuously, and price the short-leg borrow and venue risk before believing the APR. For the deep dive on the workhorse trade see crypto funding rate arbitrage; for neutral cousins compare classical arbitrage, triangular arbitrage, and the carry trade.
