← Макалаларга кайтуу
March 5, 2026
5 мүн окуу

Биржалар аралык фандинг ставкасынын арбитражы: ставкалардын айырмасынан кантип пайда табууга болот

Биржалар аралык фандинг ставкасынын арбитражы: ставкалардын айырмасынан кантип пайда табууга болот
#algo trading
#funding rates
#arbitrage
#crypto
#Binance
#Bybit
#market making

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) саат сайын төлөшөт, бул кошумча мүмкүнчүлүктөрдү жаратат.

Кадимки алшактыктар

Funding rate spreads across exchanges

Тынч рынокто ири биржалардагы фандинг ставкалары бири-бирине жакын — айырма 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% дегенди билдирет. 100Kпозициякөлөмүндөбулкүнүнө100K позиция көлөмүндө бул күнүнө 75 же айына ~$2,250 — багыттык тобокелсиз.

Арбитраждын негизги механикасы

Cross-exchange funding rate arbitrage: opposite positions on two exchanges

Идея жөнөкөй: эки биржада тескери позицияларды ачуу, ошентип бирөөнөн фандинг аласыз, экинчисинде азыраак төлөйсүз.

Мисал

Binance: фандинг ставкасы = +0,01% (лонгдор шорттарга төлөйт) Bybit: фандинг ставкасы = +0,04% (лонгдор шорттарга төлөйт)

Аракеттер:

  1. Bybit-те шорт ачуу — ар 8 саат сайын 0,04% алуу
  2. Binance-те лонг ачуу — ар 8 саат сайын 0,01% төлөө
  3. Позициялар күзгүлөнгөн — баа тобокели бейтарап
  4. Таза пайда: 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)

Тобокелдер жана кыйынчылыктар

Risks of cross-exchange arbitrage: liquidation, price divergence, fee erosion

Стратегия "бекер акча" сыяктуу көрүнөт. Бирок ал андай эмес. Бир нече олуттуу тобокелдер бар.

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% тейкер комиссиясы боюнча:

  • Оптимисттик сценарий (баары мейкер): 4×0,02%=0,08%4 \times 0,02\% = 0,08\%
  • Пессимисттик сценарий (баары тейкер): 4×0,05%=0,20%4 \times 0,05\% = 0,20\%

Комиссиялардын өтөлүшү үчүн позицияны жетишерлик убакыт кармоо керек:

Өтөлүү убактысы=Жалпы комиссияларСпред×Күнүнө төлөмдөр\text{Өтөлүү убактысы} = \frac{\text{Жалпы комиссиялар}}{\text{Спред} \times \text{Күнүнө төлөмдөр}}

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 күрөө
  • Жалпы бөгөттөлгөн: 100Kпозицияүчүн100K позиция үчүн **40K**

Капиталдан кирешелүүлүк: ROC=$2700$40000×100%=6,75% айына\text{ROC} = \frac{\$2700}{\$40000} \times 100\% = 6,75\% \text{ айына}

10x левередждо күрөө $20K-га чейин төмөндөйт, ROC 13,5%-га чейин өсөт. Бирок баа алшактыгынан ликвидация тобокели да артат.

5. Ликвидация тобокели

Эгер актив баасы кескин өзгөрсө, позициялардын биринде реализацияланбаган зыян пайда болот. Зыяны бар позициясы бар биржада маржаны сактап туруу керек. Маржа жетишсиз болсо — ликвидация. Ошол эле учурда башка биржадагы пайда жардам бербейт — ал башка эсепте.

Чечим:

  • Маржа резервин кармоо (минимумдун жок дегенде 2 эсеси)
  • Маржа деңгээли жөнүндө эскертүүлөрдү орнотуу
  • Автоматтык теңдештирүү: тең салмактуулук бузулганда — биржалар аралык каражатты которуу

Фандинг ставкасын мониторинг тутуму

Real-time funding rate monitoring dashboard across multiple exchanges

Арбитражга карай биринчи кадам — маалымат чогултуу. Бардык кызыктырган биржалардагы фандинг ставкаларын реалдуу убакытта көзөмөлдөө керек.

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%

Аткаруу: позицияларды бир мезгилде ачуу

Simultaneous arbitrage execution across exchanges

Багыттык тобокел таасирден качуу үчүн лонг менен шортту мүмкүн болушунча бир мезгилде ачуу өтө маанилүү.

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

Позицияны башкаруу

Ачылгандан кийин үзгүлтүксүз мониторинг талап кылынат:

  1. Фандинг ставкасынын спреди. Эгер спред чектен төмөн тарылса — жабуу.
  2. Маржа балансы. Эгер бир биржада маржа коопсуз деңгээлден төмөн түшсө — теңдештирүү же жабуу.
  3. Баа алшактыгы. Эгер бир тараптын реализацияланбаган 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)

Өркүндөтүлгөн варианттар

Спот-перп арбитражы

Spot-perpetual futures carry trade: spot holdings and short perp position on one exchange

Эки биржадагы фьючерстердин ордуна бир биржада спот + фьючерс колдонсо болот:

  • Спотту сатып алуу (фандингсиз)
  • 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)

Мульти-биржа арбитражы

Multi-exchange network graph showing funding rate differentials between five exchanges

5+ биржаны бир мезгилде байкоодо, өзгөчө ыңгайлуу мүмкүнчүлүктөрдү табууга болот. Алгоритм:

  1. Бардык биржалардан фандинг ставкаларын чогултуу
  2. Максималдуу спреди бар жупту табуу
  3. Эки биржада тең ликвиддүүлүктү жана ордер китеби тереңдигин текшерүү
  4. Эгер спред > чектен ашса — позицияларды ачуу
  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

Фандинг ставкасын болжолдоо

Funding rate prediction using premium index data with confidence cone

Фандинг ставкасы премиум индексин камтыган формула аркылуу эсептелет — фьючерс баасы менен спот баасынын ортосундагы айырма. Премиум фандингге караганда көбүрөөк жаңыртылат (ар мүнөт сайын, ал эми фандинг ар 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

Болжолдонгон фандинг ставкасын билип, спред башка арбитражерлердин көңүлүн али бурбаган учурда, төлөмгө чейин позицияларды ачса болот.

Инфраструктура талаптары

Low-latency trading infrastructure for cross-exchange arbitrage

Олуттуу фандинг ставкасынын арбитражы үчүн инфраструктура керек:

Компонент Минимум Оптималдуу
Сервер 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 капиталдагы абсолюттук пайда инфраструктура чыгымдарын жана убакытты актабашы мүмкүн.

Корутунду

Фандинг ставкасынын арбитражы — структуралык, дельта-бейтарап стратегия. Ал баанын болжолун талап кылбайт, бирок төмөнкүлөрдү талап кылат:

  1. Инфраструктура — бир нече биржадагы ставкаларды реалдуу убакытта мониторинг кылуу
  2. Аткаруу ылдамдыгы — ар түрдүү аянттарда позицияларды бир мезгилде ачуу
  3. Тобокелдерди башкаруу — маржаны, баа алшактыгын жана спред өзгөрүүлөрүн көзөмөлдөө
  4. Капитал — пайда позиция көлөмүнө пропорционалдуу

Фандинг ставкасынын спредтери туруктуу эмес. Алар туруксуздук мезгилдеринде кеңейет жана тынч мезгилдерде тарылат. Милдет — алшактыктар бар кезде аларды автоматтык түрдө табуу жана пайдалануу.

Фандинг ставкалары левереджделген стратегияларга кантип таасир этери жөнүндө көбүрөөк маалымат үчүн — Funding Rates Kill Your Leverage: Why PnL×50x Is a Fiction макаласын караңыз.


Пайдалуу шилтемелер

  1. Binance — Funding Rate History
  2. Binance — Introduction to Funding Rates
  3. Bybit — Understanding Funding Rates
  4. dYdX — Perpetual Funding Rate Mechanism
  5. 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.}
}
blog.disclaimer

Authors

Eugen Soloviov
Eugen Soloviov

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.

Newsletter

Рынктан бир кадам алдыда болуңуз

AI соода аналитикасы, рынок талдоолору жана платформа жаңылыктары үчүн биздин жаңылыктар бюллетенине жазылыңыз.

Биз сиздин купуялыгыңызды урматтайбыз. Каалаган убакта жазылымдан чыга аласыз.