Биржалар арасындағы фандинг ставкасы арбитражы: ставка айырмашылығынан қалай пайда табуға болады
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% |
| Өсу трендi | 0,03% | 0,05% | 0,025% | 0,04% | ~0,025% |
| Экстремалды өсу | 0,1% | 0,2% | 0,08% | 0,15% | ~0,12% |
| Құлдырау трендi | -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.