← Makalelere geri dön
March 5, 2026
5 dakikalık okuma

Borsalar Arası Fonlama Oranı Arbitrajı: Oran Farklılıklarından Nasıl Kazanılır

Borsalar Arası Fonlama Oranı Arbitrajı: Oran Farklılıklarından Nasıl Kazanılır
#algo trading
#fonlama oranları
#arbitraj
#kripto
#Binance
#Bybit
#piyasa yapıcılığı

ETHUSDT'nin fonlama oranı Binance'te %0,01, Bybit'te ise %0,035. Aynı coin, aynı an; ancak oranlar 3,5 kat farklı. Biri daha fazla öder, biri daha az öder. Ve biri bu farktan kâr eder.

Fonlama oranı arbitrajı, kriptoda piyasa yönünden bağımsız olan ender stratejilerden biridir. Fiyatı tahmin etmezsiniz. Kârı, borsalar arasındaki oranların yapısal sapmasından elde edersiniz.

Fonlama Oranları Borsalar Arasında Neden Farklılaşır?

Fonlama oranı, sürekli vadeli işlem sözleşmesinin fiyatını spot fiyata sabitleyen bir mekanizmadır. Her borsa bunu kendi verilerine dayanarak bağımsız olarak hesaplar:

  • Trader bileşimi. Binance'te çoğunlukla uzun pozisyon almaya meyilli bireysel yatırımcılar hâkimdir. Bybit ve OKX'te daha fazla profesyonel katılımcı bulunur. Farklı uzun/kısa dengesi, farklı fonlamaya yol açar.
  • Hesaplama formülü. Her borsa kendi formülünü kullanır. Binance, prim endeksini ve faiz oranını hesaba katar. Bybit ve OKX de aynı şeyi yapar ancak farklı ağırlıklar ve ortalama dönemleriyle.
  • Likidite. Daha az likit borsalarda prim (vadeli ile spot arasındaki fark) daha değişken olduğundan fonlama daha geniş salınımlar yapar.
  • Ödeme sıklığı. Çoğu borsa fonlamayı her 8 saatte bir öder (UTC 00:00, 08:00, 16:00). Ancak bazıları (belirli pariteler için Bybit, dYdX) saatlik ödeme yapar; bu da ek fırsatlar doğurur.

Tipik Sapmalar

Borsalar arası fonlama oranı spreadleri

Sakin piyasada büyük borsalardaki fonlama oranları birbirine yakındır; fark %0,001-0,005 arasındadır. Ancak yüksek volatilite dönemlerinde sapmalar artar:

Piyasa Fazı Binance Bybit OKX dYdX Spread
Sakin %0,01 %0,012 %0,009 %0,01 ~%0,003
Boğa trendi %0,03 %0,05 %0,025 %0,04 ~%0,025
Aşırı boğa %0,1 %0,2 %0,08 %0,15 ~%0,12
Ayı trendi -%0,02 -%0,01 -%0,025 -%0,015 ~%0,015

8 saatlik %0,025 spread, günlük %0,075 demektir. 100.000 pozisyonbu¨yu¨klu¨g˘u¨ylebu,yo¨nselriskolmaksızıngu¨nde75pozisyon büyüklüğüyle bu, yönsel risk olmaksızın günde 75, aylık ~2.250 $ anlamına gelir.

Temel Arbitraj Mekaniği

Borsalar arası fonlama oranı arbitrajı: iki borsada ters pozisyonlar

Fikir basittir: birinde fonlama alırken diğerinde daha az ödemek için iki borsada ters pozisyonlar açmak.

Örnek

Binance: fonlama oranı = +%0,01 (uzunlar kısalara öder) Bybit: fonlama oranı = +%0,04 (uzunlar kısalara öder)

Adımlar:

  1. Bybit'te kısa açın — her 8 saatte %0,04 alırsınız
  2. Binance'te uzun açın — her 8 saatte %0,01 ödersiniz
  3. Pozisyonlar aynalıdır — fiyat riski nötrdür
  4. Net kâr: %0,04 - %0,01 = 8 saatte %0,03

Günde (3 ödeme): %0,09. Aylık: ~%2,7. Yönsel risk olmaksızın.

def funding_arbitrage_pnl(
    rate_short_exchange: float,  # kısa açtığımız borsadaki oran
    rate_long_exchange: float,   # uzun açtığımız borsadaki oran
    position_size: float,        # USD cinsinden pozisyon büyüklüğü
    payments_per_day: int = 3,
    days: int = 30,
) -> float:
    """
    Belirli bir süre için fonlama oranı arbitrajı PnL'si.

    Pozitif fonlamada: kısa taraf rate_short alır, uzun taraf rate_long öder.
    Negatif fonlamada: kısa taraf öder, uzun taraf alır.
    """
    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)

Riskler ve Tuzaklar

Borsalar arası arbitrajın riskleri: tasfiye, fiyat sapması, komisyon erozyonu

Strateji "bedava para" gibi görünür. Değildir. Birkaç ciddi risk vardır.

1. Borsalar Arası Fiyat Sapması

Farklı borsalardaki pozisyonlar aynı fiyattan açılmaz. Binance ile Bybit arasındaki spread genellikle %0,01-0,05 düzeyindedir; ancak yüksek volatilite anlarında %0,5-1'e ulaşabilir. Pozisyonları eş zamanlı açmazsanız sapma, fonlama kârını aşabilir.

Çözüm: API üzerinden minimum gecikmeyle eş zamanlı açış. İdeal olarak — her iki borsaya yakın yerleşik sunucular.

2. Fonlama Oranı Değişimleri

Pozisyonları %0,03 spreadle açtınız. Bir saat sonra spread %0,005'e indi ya da tersine döndü. Artık her iki borsada da ödüyor olabilirsiniz.

Çözüm: Gerçek zamanlı spread izleme ve spread eşiğin altına düştüğünde otomatik kapanış.

def should_close(
    current_spread: float,
    entry_spread: float,
    min_spread: float = 0.0001,     # %0,01
    trading_costs: float = 0.0005,  # açış + kapanış için %0,05
) -> bool:
    """
    Spread eşiğin altına düştüyse veya mevcut spread işlem
    maliyetlerini karşılamıyorsa pozisyonu kapat.
    """
    return current_spread < min_spread or current_spread < trading_costs

3. İşlem Komisyonları

İki borsada pozisyon açmak ve kapatmak 4 emir demektir. Maker komisyonu %0,02, taker komisyonu %0,05 olduğunda:

  • İyimser senaryo (tümü maker): 4×0.02%=0.08%4 \times 0.02\% = 0.08\%
  • Kötümser senaryo (tümü taker): 4×0.05%=0.20%4 \times 0.05\% = 0.20\%

Komisyonların başa baş noktasına ulaşması için pozisyonun yeterince uzun tutulması gerekir:

Bas¸a bas¸ su¨resi=Toplam komisyonlarSpread×Gu¨nlu¨o¨deme sayısı\text{Başa baş süresi} = \frac{\text{Toplam komisyonlar}}{\text{Spread} \times \text{Günlük ödeme sayısı}}

def breakeven_days(
    total_commissions_pct: float,  # toplam komisyonlar (%)
    spread: float,                  # fonlama oranı spreadi
    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. Marjin Gereksinimleri

Her iki borsadaki pozisyonlar teminat gerektirir. 100.000 $ pozisyon için her borsada 5x kaldıraçla:

  • Binance: 20.000 $ teminat
  • Bybit: 20.000 $ teminat
  • Toplam kilitli: 100.000 pozisyonic\cin40.000pozisyon için **40.000**

Sermaye getirisi: ROC=$2700$40000×100%=6.75% aylık\text{ROC} = \frac{\$2700}{\$40000} \times 100\% = 6.75\% \text{ aylık}

10x kaldıraçta teminat 20.000 $'a düşer, ROC %13,5'e yükselir. Ancak fiyat sapmasından kaynaklanan tasfiye riski de artar.

5. Tasfiye Riski

Varlık fiyatı sert hareket ederse bir pozisyon gerçekleşmemiş zarar üretir. Zararlı pozisyonun bulunduğu borsada marjin sürdürülmesi gerekir. Marjin yetersiz kalırsa — tasfiye. Bu arada diğer borsadaki kâr yardımcı olmaz; farklı bir hesapta bulunur.

Çözüm:

  • Marjin rezervi tutun (minimumun en az 2 katı)
  • Marjin seviyesi uyarıları ayarlayın
  • Otomatik yeniden dengeleme: dengesizlik oluştuğunda borsalar arasında fon transferi yapın

Fonlama Oranı İzleme Sistemi

Birden fazla borsada gerçek zamanlı fonlama oranı izleme panosu

Arbitrajın ilk adımı veri toplamaktır. İlgilendiğiniz tüm borsalardaki fonlama oranlarını gerçek zamanlı olarak takip etmeniz gerekir.

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:
    """
    Birden fazla borsada fonlama oranlarını izler.
    """
    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):
        """Bir borsadan mevcut fonlama oranını getirir."""
        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]:
        """
        Tüm borsaları tarar ve arbitraj fırsatlarını bulur.
        """
        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]   # burada uzun aç (daha az öde)
            highest = rates[-1] # burada kısa aç (daha fazla al)
            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,  # yıllıklaştırılmış %
            })

        return sorted(opportunities, key=lambda x: -x['spread'])

Örnek Çıktı

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%

Uygulama: Eş Zamanlı Pozisyon Açma

Borsalar arası eş zamanlı arbitraj uygulaması

Yönsel risk maruziyetinden kaçınmak için uzun ve kısayı mümkün olduğunca eş zamanlı açmak kritik öneme sahiptir.

import asyncio

async def execute_arbitrage(
    long_exchange,
    short_exchange,
    symbol: str,
    size: float,
    max_slippage_pct: float = 0.05,
):
    """
    İki borsada eş zamanlı olarak uzun ve kısa pozisyon açar.
    """
    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

Pozisyon Yönetimi

Açıldıktan sonra sürekli izleme gerekir:

  1. Fonlama oranı spreadi. Spread eşiğin altına inerse — kapat.
  2. Marjin bakiyesi. Bir borsadaki marjin güvenli seviyenin altına düşerse — yeniden dengele ya da kapat.
  3. Fiyat sapması. Bir taraftaki gerçekleşmemiş K&Z limiti aşarsa — kapat.
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,
):
    """
    Açık bir arbitraj pozisyonunu izler.
    """
    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)

Gelişmiş Varyantlar

Spot-Perp Arbitrajı

Spot-sürekli vadeli işlem carry trade: spot varlık ve tek borsada kısa perp pozisyonu

İki borsada vadeli işlem yerine tek bir borsada spot + vadeli işlem kombinasyonunu kullanabilirsiniz:

  • Spot al (fonlama yok)
  • Sürekli vadeli işlemi kısa yap (oran pozitifken fonlama alırsınız)

Avantaj: her şey tek borsada, marjin yönetimi daha basit. Dezavantaj: yalnızca pozitif fonlamada işe yarar (uzunlar kısalara öder); bu durum boğa piyasasının ~%70'inde gözlemlenir.

def spot_perp_carry(
    funding_rate: float,      # mevcut fonlama oranı
    spot_fee: float = 0.001,  # spot komisyon (%0,1)
    perp_fee: float = 0.0005, # vadeli komisyon (%0,05)
    leverage: int = 1,
) -> dict:
    """
    Spot-perp carry trade getirisini hesaplar.
    """
    total_fees = (spot_fee + perp_fee) * 2  # açış + kapanış

    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)

Çok Borsalı Arbitraj

Beş borsa arasındaki fonlama oranı farklılıklarını gösteren çok borsalı ağ grafiği

5+ borsayı eş zamanlı izlediğinizde daha avantajlı fırsatlar bulabilirsiniz. Algoritma:

  1. Tüm borsalardan fonlama oranlarını topla
  2. Maksimum spreade sahip çifti bul
  3. Her iki borsadaki likidite ve emir defteri derinliğini kontrol et
  4. Spread > eşik ise pozisyon aç
  5. Sürekli yeniden tara: en iyi çift değişirse döndür
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:
    """
    Maksimum fonlama oranı spreadine sahip borsa çiftini bulur.
    Döndürür: (long_exchange, short_exchange, spread) ya da 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

Fonlama Oranı Tahmini

Güven konisiyle prim endeksi verilerini kullanan fonlama oranı tahmini

Fonlama oranı, prim endeksini — vadeli ile spot fiyat arasındaki farkı — içeren bir formülle hesaplanır. Prim, fonlamaya kıyasla daha sık güncellenir (her dakika vs her 8 saatte bir). Bu, ödeme gerçekleşmeden dakikalar veya saatler önce bir sonraki fonlama oranını tahmin etmenizi sağlar.

def predict_next_funding(
    premium_index: float,
    interest_rate: float = 0.0001,  # 8 saatte %0,01 (standart)
    clamp_range: float = 0.0005,    # ±%0,05
) -> float:
    """
    Mevcut prim endeksine göre bir sonraki fonlama oranını tahmin eder.
    Binance formülü: 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

Tahmin edilen fonlama oranını bilerek, spread henüz diğer arbitrajcıların dikkatini çekmemişken ödeme öncesinde pozisyon açabilirsiniz.

Altyapı Gereksinimleri

Borsalar arası arbitraj için düşük gecikmeli ticaret altyapısı

Ciddi fonlama oranı arbitrajı için altyapıya ihtiyaç duyarsınız:

Bileşen Minimum Optimal
Sunucu Bulut VPS Borsalara yakın colocation
Gecikme < 500ms < 50ms
API anahtarları 2 borsa 5+ borsa
Borsa başına sermaye Her biri 10.000 $ Her biri 50.000 $+
İzleme Log + uyarılar Pano + otomatik yeniden dengeleme
Veri REST API polling WebSocket streaming

Farklı Ölçeklerde Ekonomi

Sermaye Pozisyon (5x) Spread %0,03 Aylık PnL ROC
10.000 $ 25.000 $ %0,03 ~675 $ ~%6,75
50.000 $ 125.000 $ %0,03 ~3.375 $ ~%6,75
200.000 $ 500.000 $ %0,03 ~13.500 $ ~%6,75

ROC ölçekten bağımsızdır (yeterli likidite sağlandığında). Ancak 10.000 $ sermayedeki mutlak kâr, altyapı maliyetleri ve harcanan zamanı karşılamayabilir.

Sonuç

Fonlama oranı arbitrajı, yapısal, delta-nötr bir stratejidir. Fiyat tahmini gerektirmez; ancak şunları gerektirir:

  1. Altyapı — birden fazla borsada oranların gerçek zamanlı izlenmesi
  2. Uygulama hızı — farklı borsalarda eş zamanlı pozisyon açma
  3. Risk yönetimi — marjin, fiyat sapması ve spread değişimlerinin kontrolü
  4. Sermaye — kâr, pozisyon büyüklüğüyle doğru orantılıdır

Fonlama oranı spreadleri sabit değildir. Volatilite dönemlerinde genişler, sakin dönemlerde daralır. Görev, sapmalar varken onları otomatik olarak bulup değerlendirmektir.

Fonlama oranlarının kaldıraçlı stratejileri nasıl etkilediği hakkında daha fazla bilgi için — Fonlama Oranları Kaldıracınızı Öldürüyor: PnL×50x Neden Bir Yanılsamadır makalesine bakın.


Faydalı Bağlantılar

  1. Binance — Fonlama Oranı Geçmişi
  2. Binance — Fonlama Oranlarına Giriş
  3. Bybit — Fonlama Oranlarını Anlamak
  4. dYdX — Sürekli Vadeli Fonlama Oranı Mekanizması
  5. Coinglass — Fonlama Oranı Monitörü

Atıf

@article{soloviov2026fundingarbitrage,
  author = {Soloviov, Eugen},
  title = {Funding Rate Arbitrage Across Exchanges: How to Profit from Rate Differences},
  year = {2026},
  url = {https://marketmaker.cc/tr/blog/post/funding-rate-arbitrage-cross-exchange},
  description = {Kripto borsalarında fonlama oranı arbitrajının nasıl çalıştığı, Binance, Bybit, OKX ve dYdX'te oranların neden farklılaştığı ve bir izleme ile uygulama sisteminin nasıl kurulacağı.}
}
Sorumluluk Reddi: Bu makalede sağlanan bilgiler yalnızca eğitim ve bilgilendirme amaçlıdır ve finansal, yatırım veya ticaret tavsiyesi niteliği taşımaz. Kripto para ticareti önemli bir kayıp riski içerir.

Yazarlar

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

Piyasanın Önünde Olun

Özel yapay zeka ticaret içgörüleri, piyasa analizi ve platform güncellemeleri için bültenimize abone olun.

Gizliliğinize saygı duyuyoruz. İstediğiniz zaman abonelikten çıkabilirsiniz.