Биржалар арасындағы фандинг ставкасы арбитражы: ставка айырмашылығынан қалай пайда табуға болады
Крипто биржалар арасында фандинг ставкасы арбитражы қалай жұмыс істейді, Binance, Bybit, OKX және dYdX биржаларында ставкалар неге әр түрлі, және осы алшақтықтардан пайда алу үшін мониторинг пен орындау жүйесін қалай құру керек.

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.
"""
# Short receives rate_short, long pays rate_long
spread = rate_short_exchange - rate_long_exchange
daily_pnl = spread * payments_per_day * position_size
return daily_pnl * days
# Example: short on Bybit (0.04%), long on Binance (0.01%)
pnl = funding_arbitrage_pnl(0.0004, 0.0001, 100_000, days=30)
# = (0.0004 - 0.0001) * 3 * 100_000 * 30 = $2,700
Тәуекелдер мен қиындықтар

Стратегия "тегін ақша" сияқты көрінеді. Бірақ бұл олай емес. Бірнеше елеулі тәуекел бар.
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')
# With maker fees: 0.08% / (0.03% * 3) = 0.89 days
# With taker fees: 0.20% / (0.03% * 3) = 2.22 days
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.
"""
# Collect funding rates in parallel
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]
# Group by symbol
by_symbol: dict[str, list[FundingSnapshot]] = {}
for s in snapshots:
by_symbol.setdefault(s.symbol, []).append(s)
# Find spreads
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.
"""
# Get current prices
long_ticker = await long_exchange.fetch_ticker(symbol)
short_ticker = await short_exchange.fetch_ticker(symbol)
# Check the spread between exchanges
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"
)
# Open simultaneously
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:
# Check the current spread
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']
)
# Check margin balance
long_balance = await long_exchange.fetch_balance()
short_balance = await short_exchange.fetch_balance()
# Check unrealized P&L
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
# Closing conditions
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.
"""
# Entry/exit costs
total_fees = (spot_fee + perp_fee) * 2 # opening + closing
# Daily income from funding (at 3 payments)
daily_income = funding_rate * 3
# Breakeven
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,
}
# Example: funding rate 0.03%
result = spot_perp_carry(0.0003)
# daily: 0.09%, monthly: 2.7%, annualized: 32.9%, breakeven: 3.3 days
Мульти-биржа арбитражы

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:]:
# Long on the exchange with the lower rate, short on the one with the higher rate
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.}
}