Биржалар аралык фандинг ставкасынын арбитражы: ставкалардын айырмасынан кантип пайда табууга болот
ETHUSDT боюнча фандинг ставкасы Binance-те 0,01%, ал Bybit-те 0,035%. Ошол эле монета, ошол эле убакыт, бирок ставкалар 3,5 эсе айырмаланат. Бирөө көбүрөөк төлөйт, бирөө азыраак. Ал эми дагы бирөө ушул айырмадан пайда табат.
Фандинг ставкасынын арбитражы — рыноктун багытына көз каранды эмес криптодогу бир нече стратегиялардын бири. Сиз баанын болжолун жасабайсыз. Сиз аянттардын ортосундагы ставкалардын структуралык алшактыгынан пайда аласыз.
Биржаларда фандинг ставкалары эмне үчүн айырмаланат
Фандинг ставкасы — perpetual фьючерс келишиминин баасын спот баасына бекитүүчү механизм. Ар бир биржа аны өз маалыматтарынын негизинде өз алдынча эсептейт:
- Трейдерлердин курамы. Binance-те көбүнчө лонг ачууга бейим болгон бөлүкчө трейдерлер басым. Bybit жана OKX-та профессионал катышуучулар көбүрөөк. Лонг/шорт балансынын ар түрдүүлүгү ар кандай фандингге алып келет.
- Эсептөө формуласы. Ар бир биржа өз формуласын колдонот. Binance премиум индексин жана пайыздык ставканы эске алат. Bybit жана OKX да ошондой кылат, бирок башка салмактар жана орточолоо мезгилдери менен.
- Ликвиддүүлүк. Ликвиддүүлүгү төмөн биржаларда премиум (фьючерс менен спот ортосундагы айырма) көбүрөөк өзгөрмөлүү, бул фандингдин кеңири термелишине алып келет.
- Төлөм жыштыгы. Көпчүлүк биржалар фандингди ар 8 сааттан төлөшөт (00:00, 08:00, 16:00 UTC). Бирок кээ бирлери (айрым жуптар үчүн Bybit, dYdX) саат сайын төлөшөт, бул кошумча мүмкүнчүлүктөрдү жаратат.
Кадимки алшактыктар

Тынч рынокто ири биржалардагы фандинг ставкалары бири-бирине жакын — айырма 0,001-0,005%. Бирок жогорку туруксуздук мезгилдеринде алшактыктар өсөт:
| Рынок фазасы | Binance | Bybit | OKX | dYdX | Спред |
|---|---|---|---|---|---|
| Тынч | 0,01% | 0,012% | 0,009% | 0,01% | ~0,003% |
| Өсүү тренди | 0,03% | 0,05% | 0,025% | 0,04% | ~0,025% |
| Өтө жогорку өсүү | 0,1% | 0,2% | 0,08% | 0,15% | ~0,12% |
| Түшүү тренди | -0,02% | -0,01% | -0,025% | -0,015% | ~0,015% |
8 саатка 0,025% спред — бир күнгө 0,075% дегенди билдирет. 75 же айына ~$2,250 — багыттык тобокелсиз.
Арбитраждын негизги механикасы

Идея жөнөкөй: эки биржада тескери позицияларды ачуу, ошентип бирөөнөн фандинг аласыз, экинчисинде азыраак төлөйсүз.
Мисал
Binance: фандинг ставкасы = +0,01% (лонгдор шорттарга төлөйт) Bybit: фандинг ставкасы = +0,04% (лонгдор шорттарга төлөйт)
Аракеттер:
- Bybit-те шорт ачуу — ар 8 саат сайын 0,04% алуу
- Binance-те лонг ачуу — ар 8 саат сайын 0,01% төлөө
- Позициялар күзгүлөнгөн — баа тобокели бейтарап
- Таза пайда: 0,04% - 0,01% = 8 саатка 0,03%
Күнүнө (3 төлөм): 0,09%. Айына: ~2,7%. Багыттык тобокелсиз.
def funding_arbitrage_pnl(
rate_short_exchange: float, # rate on the exchange where we short
rate_long_exchange: float, # rate on the exchange where we long
position_size: float, # position size in USD
payments_per_day: int = 3,
days: int = 30,
) -> float:
"""
PnL from funding rate arbitrage over a period.
With positive funding: short receives, long pays.
With negative funding: short pays, long receives.
"""
spread = rate_short_exchange - rate_long_exchange
daily_pnl = spread * payments_per_day * position_size
return daily_pnl * days
pnl = funding_arbitrage_pnl(0.0004, 0.0001, 100_000, days=30)
Тобокелдер жана кыйынчылыктар

Стратегия "бекер акча" сыяктуу көрүнөт. Бирок ал андай эмес. Бир нече олуттуу тобокелдер бар.
1. Биржалар аралык баа алшактыгы
Ар түрдүү биржалардагы позициялар бирдей баада эмес. Binance менен Bybit ортосундагы спред адатта 0,01-0,05% түзөт, бирок жогорку туруксуздук учурларында 0,5-1%-га жетиши мүмкүн. Эгер позициялар бир мезгилде ачылбаса, алшактык фандинг пайдасынан ашышы мүмкүн.
Чечим: минималдуу кечигүү менен API аркылуу бир мезгилде ачуу. Идеалында — эки биржага жакын жайгашкан коллокацияланган серверлер.
2. Фандинг ставкасынын өзгөрүшү
Сиз 0,03% спредде позицияларды ачтыңыз. Бир сааттан кийин спред 0,005%-га чейин тарылды же тескери бурулду. Эми сиз эки биржада тең төлөп жатасыз.
Чечим: реалдуу убакыттагы спред мониторинги жана спред чектен төмөн түшкөндө автоматтык жабуу.
def should_close(
current_spread: float,
entry_spread: float,
min_spread: float = 0.0001, # 0.01%
trading_costs: float = 0.0005, # 0.05% for opening + closing
) -> bool:
"""
Close the position if the spread has fallen below the threshold
or if the current spread does not cover trading costs.
"""
return current_spread < min_spread or current_spread < trading_costs
3. Соода комиссиялары
Эки биржада позицияларды ачуу жана жабуу 4 ордерди билдирет. 0,02% мейкер комиссиясы жана 0,05% тейкер комиссиясы боюнча:
- Оптимисттик сценарий (баары мейкер):
- Пессимисттик сценарий (баары тейкер):
Комиссиялардын өтөлүшү үчүн позицияны жетишерлик убакыт кармоо керек:
def breakeven_days(
total_commissions_pct: float, # total commissions in %
spread: float, # funding rate spread
payments_per_day: int = 3,
) -> float:
daily_income = spread * payments_per_day
return total_commissions_pct / daily_income if daily_income > 0 else float('inf')
4. Маржа талаптары
Эки биржадагы позициялар үчүн күрөө талап кылынат. $100K позицияда ар бир биржада 5x левередж менен:
- Binance: $20K күрөө
- Bybit: $20K күрөө
- Жалпы бөгөттөлгөн: 40K**
Капиталдан кирешелүүлүк:
10x левередждо күрөө $20K-га чейин төмөндөйт, ROC 13,5%-га чейин өсөт. Бирок баа алшактыгынан ликвидация тобокели да артат.
5. Ликвидация тобокели
Эгер актив баасы кескин өзгөрсө, позициялардын биринде реализацияланбаган зыян пайда болот. Зыяны бар позициясы бар биржада маржаны сактап туруу керек. Маржа жетишсиз болсо — ликвидация. Ошол эле учурда башка биржадагы пайда жардам бербейт — ал башка эсепте.
Чечим:
- Маржа резервин кармоо (минимумдун жок дегенде 2 эсеси)
- Маржа деңгээли жөнүндө эскертүүлөрдү орнотуу
- Автоматтык теңдештирүү: тең салмактуулук бузулганда — биржалар аралык каражатты которуу
Фандинг ставкасын мониторинг тутуму

Арбитражга карай биринчи кадам — маалымат чогултуу. Бардык кызыктырган биржалардагы фандинг ставкаларын реалдуу убакытта көзөмөлдөө керек.
import asyncio
import ccxt.pro as ccxt
from dataclasses import dataclass
from datetime import datetime
@dataclass
class FundingSnapshot:
exchange: str
symbol: str
rate: float
next_funding_time: datetime
timestamp: datetime
class FundingMonitor:
"""
Monitor funding rates across multiple exchanges.
"""
def __init__(self, symbols: list[str], exchanges: list[str]):
self.symbols = symbols
self.exchanges = {
name: getattr(ccxt, name)() for name in exchanges
}
self.latest: dict[str, dict[str, FundingSnapshot]] = {}
async def fetch_funding(self, exchange_name: str, exchange, symbol: str):
"""Fetch current funding rate from an exchange."""
try:
funding = await exchange.fetch_funding_rate(symbol)
return FundingSnapshot(
exchange=exchange_name,
symbol=symbol,
rate=funding['fundingRate'],
next_funding_time=datetime.fromtimestamp(
funding['fundingTimestamp'] / 1000
),
timestamp=datetime.utcnow(),
)
except Exception as e:
print(f"Error fetching {exchange_name} {symbol}: {e}")
return None
async def scan(self) -> list[dict]:
"""
Scan all exchanges and find arbitrage opportunities.
"""
tasks = []
for ex_name, ex in self.exchanges.items():
for symbol in self.symbols:
tasks.append(self.fetch_funding(ex_name, ex, symbol))
snapshots = await asyncio.gather(*tasks)
snapshots = [s for s in snapshots if s is not None]
by_symbol: dict[str, list[FundingSnapshot]] = {}
for s in snapshots:
by_symbol.setdefault(s.symbol, []).append(s)
opportunities = []
for symbol, rates in by_symbol.items():
rates.sort(key=lambda x: x.rate)
lowest = rates[0] # long here (pay less)
highest = rates[-1] # short here (receive more)
spread = highest.rate - lowest.rate
opportunities.append({
'symbol': symbol,
'long_exchange': lowest.exchange,
'long_rate': lowest.rate,
'short_exchange': highest.exchange,
'short_rate': highest.rate,
'spread': spread,
'annualized': spread * 3 * 365 * 100, # in % annualized
})
return sorted(opportunities, key=lambda x: -x['spread'])
Мисал чыгыш
Symbol | Long @ | Rate | Short @ | Rate | Spread | APR
-----------+-------------+---------+-------------+---------+---------+--------
ETHUSDT | Binance | 0.010% | Bybit | 0.040% | 0.030% | 32.9%
BTCUSDT | OKX | 0.008% | Binance | 0.020% | 0.012% | 13.1%
SOLUSDT | Binance | 0.015% | dYdX | 0.055% | 0.040% | 43.8%
ARBUSDT | Bybit | 0.005% | OKX | 0.030% | 0.025% | 27.4%
Аткаруу: позицияларды бир мезгилде ачуу

Багыттык тобокел таасирден качуу үчүн лонг менен шортту мүмкүн болушунча бир мезгилде ачуу өтө маанилүү.
import asyncio
async def execute_arbitrage(
long_exchange,
short_exchange,
symbol: str,
size: float,
max_slippage_pct: float = 0.05,
):
"""
Simultaneously open a long and short on two exchanges.
"""
long_ticker = await long_exchange.fetch_ticker(symbol)
short_ticker = await short_exchange.fetch_ticker(symbol)
price_spread = abs(
long_ticker['ask'] - short_ticker['bid']
) / long_ticker['ask'] * 100
if price_spread > max_slippage_pct:
raise ValueError(
f"Price spread {price_spread:.3f}% exceeds max slippage"
)
long_order, short_order = await asyncio.gather(
long_exchange.create_market_buy_order(symbol, size),
short_exchange.create_market_sell_order(symbol, size),
)
return long_order, short_order
Позицияны башкаруу
Ачылгандан кийин үзгүлтүксүз мониторинг талап кылынат:
- Фандинг ставкасынын спреди. Эгер спред чектен төмөн тарылса — жабуу.
- Маржа балансы. Эгер бир биржада маржа коопсуз деңгээлден төмөн түшсө — теңдештирүү же жабуу.
- Баа алшактыгы. Эгер бир тараптын реализацияланбаган P&L чектен ашса — жабуу.
async def monitor_and_manage(
long_exchange,
short_exchange,
symbol: str,
size: float,
min_spread: float = 0.0001,
max_unrealized_loss_pct: float = 2.0,
check_interval: int = 60,
):
"""
Monitor an open arbitrage position.
"""
while True:
long_funding = await long_exchange.fetch_funding_rate(symbol)
short_funding = await short_exchange.fetch_funding_rate(symbol)
current_spread = (
short_funding['fundingRate'] - long_funding['fundingRate']
)
long_balance = await long_exchange.fetch_balance()
short_balance = await short_exchange.fetch_balance()
long_positions = await long_exchange.fetch_positions([symbol])
short_positions = await short_exchange.fetch_positions([symbol])
long_upnl = long_positions[0]['unrealizedPnl'] if long_positions else 0
short_upnl = short_positions[0]['unrealizedPnl'] if short_positions else 0
total_upnl_pct = (long_upnl + short_upnl) / size * 100
if current_spread < min_spread:
print(f"Spread collapsed: {current_spread:.4%}")
await close_both(long_exchange, short_exchange, symbol, size)
break
if abs(total_upnl_pct) > max_unrealized_loss_pct:
print(f"Unrealized loss exceeded: {total_upnl_pct:.2f}%")
await close_both(long_exchange, short_exchange, symbol, size)
break
await asyncio.sleep(check_interval)
Өркүндөтүлгөн варианттар
Спот-перп арбитражы

Эки биржадагы фьючерстердин ордуна бир биржада спот + фьючерс колдонсо болот:
- Спотту сатып алуу (фандингсиз)
- Perpetual фьючерсти шорттоо (ставка оң болгондо фандинг алуу)
Артыкчылыгы: баары бир биржада, маржаны башкаруу жөнөкөйүрөөк. Кемчилиги: жалгыз оң фандингде иштейт (лонгдор шорттарга төлөйт), бул бука рыногунда убакыттын ~70%-нда байкалат.
def spot_perp_carry(
funding_rate: float, # current funding rate
spot_fee: float = 0.001, # spot commission (0.1%)
perp_fee: float = 0.0005, # futures commission (0.05%)
leverage: int = 1,
) -> dict:
"""
Calculate the yield of a spot-perp carry trade.
"""
total_fees = (spot_fee + perp_fee) * 2 # opening + closing
daily_income = funding_rate * 3
breakeven_days = total_fees / daily_income if daily_income > 0 else float('inf')
return {
'daily_income_pct': daily_income * 100,
'monthly_income_pct': daily_income * 30 * 100,
'annualized_pct': daily_income * 365 * 100,
'total_fees_pct': total_fees * 100,
'breakeven_days': breakeven_days,
}
result = spot_perp_carry(0.0003)
Мульти-биржа арбитражы

5+ биржаны бир мезгилде байкоодо, өзгөчө ыңгайлуу мүмкүнчүлүктөрдү табууга болот. Алгоритм:
- Бардык биржалардан фандинг ставкаларын чогултуу
- Максималдуу спреди бар жупту табуу
- Эки биржада тең ликвиддүүлүктү жана ордер китеби тереңдигин текшерүү
- Эгер спред > чектен ашса — позицияларды ачуу
- Үзгүлтүксүз кайра сканерлөө: эң жакшы жуп өзгөрсө — ротация жасоо
def find_best_pair(
rates: dict[str, float], # {"binance": 0.01, "bybit": 0.04, "okx": 0.02}
min_spread: float = 0.0002,
) -> tuple[str, str, float] | None:
"""
Find the exchange pair with the maximum funding rate spread.
Returns: (long_exchange, short_exchange, spread) or None.
"""
exchanges = list(rates.keys())
best = None
for i, ex_long in enumerate(exchanges):
for ex_short in exchanges[i+1:]:
if rates[ex_long] < rates[ex_short]:
spread = rates[ex_short] - rates[ex_long]
long_ex, short_ex = ex_long, ex_short
else:
spread = rates[ex_long] - rates[ex_short]
long_ex, short_ex = ex_short, ex_long
if spread >= min_spread:
if best is None or spread > best[2]:
best = (long_ex, short_ex, spread)
return best
Фандинг ставкасын болжолдоо

Фандинг ставкасы премиум индексин камтыган формула аркылуу эсептелет — фьючерс баасы менен спот баасынын ортосундагы айырма. Премиум фандингге караганда көбүрөөк жаңыртылат (ар мүнөт сайын, ал эми фандинг ар 8 саат сайын). Демек, сиз кийинки фандинг ставкасын төлөмгө чейин бир нече мүнөт же саат мурун болжолой аласыз.
def predict_next_funding(
premium_index: float,
interest_rate: float = 0.0001, # 0.01% per 8h (standard)
clamp_range: float = 0.0005, # ±0.05%
) -> float:
"""
Predict the next funding rate based on the current premium index.
Binance formula: FR = clamp(Premium - Interest, -0.05%, 0.05%) + Interest
"""
diff = premium_index - interest_rate
clamped = max(-clamp_range, min(clamp_range, diff))
return clamped + interest_rate
Болжолдонгон фандинг ставкасын билип, спред башка арбитражерлердин көңүлүн али бурбаган учурда, төлөмгө чейин позицияларды ачса болот.
Инфраструктура талаптары

Олуттуу фандинг ставкасынын арбитражы үчүн инфраструктура керек:
| Компонент | Минимум | Оптималдуу |
|---|---|---|
| Сервер | Cloud VPS | Биржаларга жакын коллокацияланган |
| Кечигүү | < 500ms | < 50ms |
| API ачкычтары | 2 биржа | 5+ биржа |
| Биржа боюнча капитал | $10K ар бирине | $50K+ ар бирине |
| Мониторинг | Логдор + эскертүүлөр | Дашборд + авто-теңдештирүү |
| Маалымат | REST API polling | WebSocket агымы |
Ар кандай масштабдардагы экономика
| Капитал | Позиция (5x) | Спред 0,03% | Айлык PnL | ROC |
|---|---|---|---|---|
| $10K | $25K | 0,03% | ~$675 | ~6,75% |
| $50K | $125K | 0,03% | ~$3,375 | ~6,75% |
| $200K | $500K | 0,03% | ~$13,500 | ~6,75% |
ROC масштабга көз каранды эмес (жетиштүү ликвиддүүлүк болгон учурда). Бирок $10K капиталдагы абсолюттук пайда инфраструктура чыгымдарын жана убакытты актабашы мүмкүн.
Корутунду
Фандинг ставкасынын арбитражы — структуралык, дельта-бейтарап стратегия. Ал баанын болжолун талап кылбайт, бирок төмөнкүлөрдү талап кылат:
- Инфраструктура — бир нече биржадагы ставкаларды реалдуу убакытта мониторинг кылуу
- Аткаруу ылдамдыгы — ар түрдүү аянттарда позицияларды бир мезгилде ачуу
- Тобокелдерди башкаруу — маржаны, баа алшактыгын жана спред өзгөрүүлөрүн көзөмөлдөө
- Капитал — пайда позиция көлөмүнө пропорционалдуу
Фандинг ставкасынын спредтери туруктуу эмес. Алар туруксуздук мезгилдеринде кеңейет жана тынч мезгилдерде тарылат. Милдет — алшактыктар бар кезде аларды автоматтык түрдө табуу жана пайдалануу.
Фандинг ставкалары левереджделген стратегияларга кантип таасир этери жөнүндө көбүрөөк маалымат үчүн — Funding Rates Kill Your Leverage: Why PnL×50x Is a Fiction макаласын караңыз.
Пайдалуу шилтемелер
- Binance — Funding Rate History
- Binance — Introduction to Funding Rates
- Bybit — Understanding Funding Rates
- dYdX — Perpetual Funding Rate Mechanism
- Coinglass — Funding Rate Monitor
Цитата
@article{soloviov2026fundingarbitrage,
author = {Soloviov, Eugen},
title = {Funding Rate Arbitrage Across Exchanges: How to Profit from Rate Differences},
year = {2026},
url = {https://marketmaker.cc/ru/blog/post/funding-rate-arbitrage-cross-exchange},
description = {How funding rate arbitrage works across crypto exchanges, why rates differ on Binance, Bybit, OKX and dYdX, and how to build a monitoring and execution system.}
}
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.