Birjalar Aro Funding Rate Arbitraji: Stavkalar Farqidan Qanday Foyda Olish Mumkin
ETHUSDT bo'yicha funding rate Binance'da 0,01%, Bybit'da esa 0,035%. Bir xil tanga, bir xil vaqt, ammo stavkalar 3,5 barobar farq qiladi. Kimdir ko'proq to'laydi, kimdir kamroq. Va kimdir ushbu farqdan foyda ko'radi.
Funding rate arbitraji — bozor yo'nalishiga bog'liq bo'lmagan kriptodagi bir necha strategiyalardan biri. Siz narxni bashorat qilmaysiz. Siz platformalar orasidagi stavkalarning tarkibiy tafovutidan foyda olasiz.
Birjalarda Funding Rate Nima Uchun Farq Qiladi
Funding rate — bu perpetual fyucherslar shartnomasi narxini spot narxga bog'lab turuvchi mexanizm. Har bir birja uni o'z ma'lumotlari asosida mustaqil hisoblaydi:
- Treyderlar tarkibi. Binance'da odatda long pozitsiya ochishga moyil bo'lgan chakana treyderlar ustunlik qiladi. Bybit va OKX'da professional ishtirokchilar ko'proq. Long/short balansining farqi turlicha funding'ga olib keladi.
- Hisoblash formulasi. Har bir birja o'zining formulasidan foydalanadi. Binance premium indeksi va foiz stavkasini hisobga oladi. Bybit va OKX ham xuddi shunday qiladi, ammo boshqa vaznlar va o'rtacha hisoblash davrlari bilan.
- Likvidlik. Likvidligi past birjalarda premium (fyucherslar va spot o'rtasidagi farq) ko'proq beqaror bo'ladi, bu esa funding'ning kengroq tebranishiga olib keladi.
- To'lov chastotasi. Ko'pchilik birjalar funding'ni har 8 soatda to'laydi (00:00, 08:00, 16:00 UTC). Ammo ba'zilari (ba'zi juftliklar uchun Bybit, dYdX) har soatda to'laydi, bu qo'shimcha imkoniyatlar yaratadi.
Odatiy Tafovutlar

Sokin bozorda yirik birjalardagi funding rate'lar bir-biriga yaqin bo'ladi — farq 0,001-0,005% ni tashkil qiladi. Ammo yuqori beqarorlik davrlarida tafovutlar kattalashadi:
| Bozor Bosqichi | Binance | Bybit | OKX | dYdX | Spred |
|---|---|---|---|---|---|
| Sokin | 0,01% | 0,012% | 0,009% | 0,01% | ~0,003% |
| O'sish trendi | 0,03% | 0,05% | 0,025% | 0,04% | ~0,025% |
| Ekstremal o'sish | 0,1% | 0,2% | 0,08% | 0,15% | ~0,12% |
| Pasayish trendi | -0,02% | -0,01% | -0,025% | -0,015% | ~0,015% |
8 soatda 0,025% spred kuniga 0,075% ni tashkil qiladi. 75 yoki oyiga ~$2,250 — yo'nalish tavakkalisiz.
Arbitrajning Asosiy Mexanikasi

G'oya oddiy: ikkita birjada qarama-qarshi pozitsiyalarni ochish, shunda bittasida funding olasiz, ikkinchisida esa kamroq to'laysiz.
Misol
Binance: funding rate = +0,01% (long'lar short'larga to'laydi) Bybit: funding rate = +0,04% (long'lar short'larga to'laydi)
Harakatlar:
- Bybit'da short ochish — har 8 soatda 0,04% olish
- Binance'da long ochish — har 8 soatda 0,01% to'lash
- Pozitsiyalar oynadagi kabi — narx tavakkalchiligi neytral
- Sof foyda: 0,04% - 0,01% = 8 soatga 0,03%
Kuniga (3 to'lov): 0,09%. Oyiga: ~2,7%. Yo'nalish tavakkalisiz.
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)
Tavakkalchiliklar va Tuzoqlar

Strategiya "bepul pul" kabi ko'rinadi. Ammo bu unday emas. Bir necha jiddiy tavakkalchiliklar mavjud.
1. Birjalar Orasidagi Narx Tafovuti
Turli birjalardagi pozitsiyalar bir xil narxda bo'lmaydi. Binance va Bybit orasidagi spred odatda 0,01-0,05% ni tashkil qiladi, ammo yuqori beqarorlik paytlarida 0,5-1% ga yetishi mumkin. Agar pozitsiyalar bir vaqtda ochilmasa, tafovut funding foydasidan oshib ketishi mumkin.
Yechim: minimal kechikish bilan API orqali bir vaqtda ochish. Eng yaxshisi — ikkala birjaga yaqin joylashgan kollokatsiyalangan serverlar.
2. Funding Rate O'zgarishlari
Siz 0,03% spredda pozitsiyalarni ochdingiz. Bir soatdan keyin spred 0,005% gacha torayadi yoki teskari yo'nalishga o'tadi. Endi siz ikkala birjada ham to'lamoqdasiz.
Yechim: real vaqtda spred monitoringi va spred chegaradan pastga tushganda avtomatik yopish.
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. Savdo Komissiyalari
Ikki birjada pozitsiyalarni ochish va yopish 4 ta buyurtmani anglatadi. 0,02% meyker komissiyasi va 0,05% teyker komissiyasi bilan:
- Optimistik stsenariy (hammasi meyker):
- Pessimistik stsenariy (hammasi teyker):
Komissiyalar o'zini oqlashi uchun pozitsiyani yetarlicha uzoq vaqt ushlab turish kerak:
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. Marja Talablari
Ikkala birjadagi pozitsiyalar garov talab qiladi. $100K pozitsiyada har bir birjada 5x leverage bilan:
- Binance: $20K garov
- Bybit: $20K garov
- Jami bloklangan: 40K**
Kapitaldan daromad:
10x leverage'da garov $20K gacha kamayadi, ROC 13,5% gacha oshadi. Ammo narx tafovutidan likvidatsiya tavakkalchiligi ham ortadi.
5. Likvidatsiya Tavakkalchiligi
Agar aktiv narxi keskin o'zgarsa, pozitsiyalardan birida amalga oshirilmagan zarar paydo bo'ladi. Zararli pozitsiyaga ega bo'lgan birjada marjani ushlab turish kerak. Agar marja yetarli bo'lmasa — likvidatsiya. Shu bilan birga, boshqa birjadagi foyda yordam bermaydi — u boshqa hisobda joylashgan.
Yechim:
- Marja zaxirasini ushlab turish (kamida minimumning 2 barobari)
- Marja darajasi haqida ogohlantirishlarni sozlash
- Avtomatik qayta muvozanatlash: nomutanosiblik yuzaga kelganda — birjalar orasida mablag'larni o'tkazish
Funding Rate Monitoring Tizimi

Arbitrajga qadam tashlashning birinchi bosqichi ma'lumot to'plashdir. Barcha qiziqtirgan birjalardagi funding rate'larni real vaqtda kuzatib borish kerak.
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'])
Namunaviy Natija
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%
Bajarish: Pozitsiyalarni Bir Vaqtda Ochish

Yo'nalish tavakkalchiligiga duch kelmaslik uchun long va short'ni imkon qadar bir vaqtda ochish juda muhim.
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
Pozitsiyani Boshqarish
Ochilgandan keyin uzluksiz monitoring talab qilinadi:
- Funding rate spredi. Agar spred chegaradan pastga tushsa — yopish.
- Marja balansi. Agar biror birjada marja xavfsiz darajadan pastga tushsa — qayta muvozanatlash yoki yopish.
- Narx tafovuti. Agar bir tomonning amalga oshirilmagan P&L limitdan oshsa — yopish.
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)
Ilg'or Variantlar
Spot-Perp Arbitraji

Ikkita birjadagi fyucherslar o'rniga, bitta birjada spot + fyucherslardan foydalanish mumkin:
- Spot sotib olish (funding'siz)
- Perpetual fyucherslarni short qilish (stavka musbat bo'lganda funding olish)
Afzalligi: hammasi bitta birjada, marjani boshqarish osonroq. Kamchiligi: faqat musbat funding bilan ishlaydi (long'lar short'larga to'laydi), bu bull bozori davomida vaqtning ~70% da kuzatiladi.
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)
Ko'p Birjali Arbitraj

5+ birjani bir vaqtda kuzatib borganda, ko'proq qulay imkoniyatlarni topish mumkin. Algoritm:
- Barcha birjalardan funding rate'larni to'plash
- Maksimal spredga ega juftlikni topish
- Ikkala birjada ham likvidlik va order kitobi chuqurligini tekshirish
- Agar spred > chegara — pozitsiyalarni ochish
- Uzluksiz qayta skanerlash: agar eng yaxshi juftlik o'zgarsa — rotatsiya qilish
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
Funding Rate'ni Bashorat Qilish

Funding rate premium indeksini o'z ichiga olgan formula orqali hisoblanadi — bu fyucherslar narxi va spot narx o'rtasidagi farq. Premium funding'ga qaraganda ko'proq tez-tez yangilanadi (har daqiqada, funding esa har 8 soatda). Bu shuni anglatadiki, siz keyingi funding rate'ni to'lovdan bir necha daqiqa yoki soat oldin bashorat qilishingiz mumkin.
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
Bashorat qilingan funding rate'ni bilgan holda, siz to'lovdan oldin pozitsiyalarni ochishingiz mumkin, spred hali boshqa arbitrajchilarning e'tiborini tortmagan paytda.
Infratuzilma Talablari

Jiddiy funding rate arbitraji uchun infratuzilma kerak:
| Komponent | Minimal | Optimal |
|---|---|---|
| Server | Bulutli VPS | Birjalarga yaqin kollokatsiyalangan |
| Kechikish | < 500ms | < 50ms |
| API kalitlari | 2 birja | 5+ birja |
| Birja bo'yicha kapital | $10K har biri | $50K+ har biri |
| Monitoring | Loglar + ogohlantirishlar | Dashboard + avto-qayta muvozanatlash |
| Ma'lumotlar | REST API polling | WebSocket streaming |
Turli Miqyoslardagi Iqtisodiyot
| Kapital | Pozitsiya (5x) | Spred 0,03% | Oylik 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 miqyosga bog'liq emas (yetarli likvidlik mavjud bo'lganda). Ammo $10K kapitalda mutlaq foyda infratuzilma xarajatlari va vaqtni oqlamasligi mumkin.
Xulosa
Funding rate arbitraji — tarkibiy, delta-neytral strategiya. U narxni bashorat qilishni talab qilmaydi, lekin quyidagilarni talab qiladi:
- Infratuzilma — ko'plab birjalarda stavkalarni real vaqtda monitoring qilish
- Bajarish tezligi — turli platformalarda pozitsiyalarni bir vaqtda ochish
- Tavakkalchilikni boshqarish — marjani, narx tafovutini va spred o'zgarishlarini nazorat qilish
- Kapital — foyda pozitsiya hajmiga proportsional
Funding rate spredlari doimiy emas. Ular beqarorlik davrlarida kengayadi va sokin davrlarda torayadi. Vazifa — tafovutlar mavjud bo'lgan paytda ularni avtomatik ravishda topish va ulardan foydalanishdir.
Funding rate'lar leverage strategiyalariga qanday ta'sir qilishi haqida ko'proq bilish uchun — Funding Rates Kill Your Leverage: Why PnL×50x Is a Fiction maqolasini ko'ring.
Foydali Havolalar
- Binance — Funding Rate History
- Binance — Introduction to Funding Rates
- Bybit — Understanding Funding Rates
- dYdX — Perpetual Funding Rate Mechanism
- Coinglass — Funding Rate Monitor
Iqtibos
@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.