Fonlama Oranları Kaldıracınızı Öldürür: Neden PnL×50x Bir Kurgu

Binance/Bybit'teki fonlama oranları, güzel yüksek kaldıraçlı backtest sonuçlarını nasıl garantili kayba dönüştürür. Formüller, gerçek stratejilerin yeniden hesaplanması ve fonlamanın kâra zarar vermediği maksimum kaldıraç seviyesi.

Diyelim ki bir strateji optimize ettiniz. Backtest sonucu PnL +55%, MaxDD -0.9% gösteriyor. MaxLev hesaplıyorsunuz: ⌊50/0.9⌋=55×\lfloor 50 / 0.9 \rfloor = 55\times. Çarpıyorsunuz: 55%×55=+3025%55\% \times 55 = +3025\%. İki yılda yüzde üç bin. Zihinsel olarak Lamborghini'nizi seçmeye başlıyorsunuz.

Üç ay sonra üretimde sermayeniz başlangıç noktasının altına düşüyor. Strateji backtest ile birebir aynı çalışıyor — aynı girişler, aynı çıkışlar, aynı düşüş. Ama para kaybediyorsunuz. Her gün. Sürekli olarak.

Nedeni: fonlama oranları. Backtest'inizin hesaba katmadığı — ya da yanlış hesaba kattığı — görünmez bir ücret.

Fonlama Oranları Nasıl Çalışır

Kripto para borsalarında sürekli swapların vade tarihi yoktur. Vadeli fiyatı spot fiyata bağlı tutmak için borsalar, uzun ve kısa pozisyonlar arasında periyodik ödemeleri içeren bir fonlama mekanizması kullanır.

Binance/Bybit'teki mekanik:

  • Fonlama her 8 saatte bir ödenir (00:00, 08:00, 16:00 UTC)
  • Fonlama oranı, vadeli fiyat ile spot fiyat arasındaki fark tarafından belirlenir
  • Fonlama oranı pozitifse — uzunlar kısalara öder
  • Negatifse — kısalar uzunlara öder
  • Tipik oran: ±0.01%\pm 0.01\% (8 saatte bir (aşırı koşullarda ±0.5%\pm 0.5\%'ye ulaşabilir)

Tek ödeme formülü:

Fonlama maliyeti=Pozisyon bu¨yu¨klu¨g˘u¨×Fonlama oranı\text{Fonlama maliyeti} = \text{Pozisyon büyüklüğü} \times \text{Fonlama oranı}

LL kaldıracı ve CC sermayesi ile:

Fonlama maliyeti=C×L×Oran\text{Fonlama maliyeti} = C \times L \times \text{Oran}

Backtestler Neden Kaldıraç Hakkında Yalan Söyler

Standart MaxLev (Maksimum Kaldıraç) metriği, düşüşün hedef seviyeyi aşmadığı teorik kaldıraç tavanıdır:

MaxLev=⌊Hedef DDMaxDD⌋\text{MaxLev} = \left\lfloor \frac{\text{Hedef DD}}{\text{MaxDD}} \right\rfloor

Bu formül kaldıraca bağlı maliyetleri hesaba katmaz. 1x kaldıraçta fonlama oranı önemsiz bir ücrettir. 58x kaldıraçta ise bir felakettir.

Doğrusal ve İkinci Dereceden Maliyetler

İşlem komisyonları (maker/taker ücretleri) doğrusaldır — işlem hacmiyle orantılıdır ve kaldıraçtan bağımsızdır. Fonlama oranları da pozisyon büyüklüğüne göre doğrusaldır, ancak birim sermaye başına yeniden hesaplandığında kaldıraçla orantılı olarak büyürler:

Sermaye bas¸ına fonlama maliyeti=L×Oran×Sıklık\text{Sermaye başına fonlama maliyeti} = L \times \text{Oran} \times \text{Sıklık}

HH gün elde tutma süresi ve günde 3 ödeme ile:

Toplam fonlama=L×Oran×3×H\text{Toplam fonlama} = L \times \text{Oran} \times 3 \times H

Yeniden Hesaplama: Fonlamayı Hesaba Katan Strateji Örnekleri

Örnek olarak, farklı risk profillerine sahip üç varsayımsal stratejiyi ele alalım. Parametreler: sürekli vadeli işlemler, 25 aylık test süresi, 8 saatte bir 0.01%'lik tipik fonlama oranı.

Orijinal Sonuçlar (Fonlama Olmadan)

StratejiPnLMaxDDMaxLevPnL@MLİşlemlerİşlem süresi
Strateji A+55%-0.9%55x+3025%~500~15%
Strateji B+25%-0.75%66x+1650%~40~5%
Strateji C+300%-17%3x+900%~400~45%

Fonlama Maliyetinin Hesaplanması

def funding_cost(
    leverage: float,
    trading_time_pct: float,
    test_days: int = 750,  # 25 months
    funding_rate: float = 0.0001,  # 0.01% per 8h
    payments_per_day: int = 3,
) -> float:
    """
    Calculate cumulative funding costs as % of capital.

    Returns:
        Funding cost as percentage of initial capital
    """
    active_days = test_days * trading_time_pct
    daily_cost = funding_rate * payments_per_day * leverage
    total_cost = daily_cost * active_days
    return total_cost * 100  # in percent

Hesaplamalar:

# Strategy A: 55x leverage, 15% trading time, 750 days
a_funding = funding_cost(55, 0.15, 750)
# = 0.0001 * 3 * 55 * (750 * 0.15) = 0.0165 * 112.5 = 1.856 → 185.6%

# Strategy B: 66x leverage, 5% trading time, 750 days
b_funding = funding_cost(66, 0.05, 750)
# = 0.0001 * 3 * 66 * (750 * 0.05) = 0.0198 * 37.5 = 0.743 → 74.3%

# Strategy C: 3x leverage, 45% trading time, 750 days
c_funding = funding_cost(3, 0.45, 750)
# = 0.0001 * 3 * 3 * (750 * 0.45) = 0.0009 * 337.5 = 0.304 → 30.4%

Fonlamayı Hesaba Katan Sonuçlar

StratejiPnL@ML (fonlama yok)Fonlama maliyetiPnL@ML (fonlama ile)Durum
Strateji A+3025%-185.6%+2839%~%6 yiyor
Strateji B+1650%-74.3%+1576%~%4.5 yiyor
Strateji C+900%-30.4%+870%~%3 yiyor

İlk bakışta bu tolere edilebilir görünüyor: fonlama, PnL@ML'nin yalnızca %3-6'sını yiyor. Ancak bu ortalama fonlama oranı. Yüksek oranlarda ne olduğuna bakalım.

Fonlama Oranı Sabit Değil

Tipik 0.01%'lik fonlama oranı bir medyan değeridir. Gerçekte oranlar dalgalanır:

Piyasa AşamasıTipik fonlama oranı55x'te 8 saatte55x'te günde
Sakin piyasa0.005%0.275%0.825%
Normal0.01%0.55%1.65%
Yükseliş trendi0.03%1.65%4.95%
Aşırı yükseliş0.1%5.50%16.5%
Ani yükseliş0.5%27.5%—

Yükseliş piyasasında (0.03%) 55x kaldıraçta: uzun pozisyonda tek bir gün, yalnızca fonlamada sermayenin %4.95'ine mal olur.

Aktif Gün Başına PnL ile Gün Başına Fonlama Karşılaştırması

İşte temel hesaplama — günlük strateji getirisi ile günlük maliyetler:

# Strategy A: 55% PnL over 112.5 active days
a_pnl_per_day = 55 * 55 / 112.5  # PnL@ML / active days = 26.9%/day

# At funding 0.01%: 0.0001 * 3 * 55 = 1.65%/day
# Margin: 26.9% - 1.65% = +25.2%/day → OK

# At funding 0.03%: 0.0001 * 3 * 3 * 55 = 4.95%/day
# Margin: 26.9% - 4.95% = +21.9%/day → still OK

# Strategy B: 25% PnL over 37.5 active days
b_pnl_per_day = 25 * 66 / 37.5  # = 44.0%/day

# At funding 0.01%: 0.0001 * 3 * 66 = 1.98%/day
# Margin: 44.0% - 1.98% = +42.0%/day → OK

Bu sayılarla fonlama kritik görünmüyor. Ancak bunlar ortalama değerler. Sorun başka yerde.

Asıl Sorun: Düşüş Döneminde Fonlama

Kaldıraç, düşüş süresi ve fonlama etki yüzeyi

Fonlama maliyetleri pozisyon açıkken sürekli birikir — düşüş dönemleri dahil. Örnek olarak: Strateji A'nın %0.9'luk maksimum düşüşü 55x kaldıraçta şu hale gelir:

Efektif DD=0.9%×55=49.5%\text{Efektif DD} = 0.9\% \times 55 = 49.5\%

Bu zaten likidasyonun eşiğindedir. Şimdi fonlamayı ekleyin:

Fonlamalı DD=49.3%+DD su¨resinde biriken fonlama\text{Fonlamalı DD} = 49.3\% + \text{DD süresinde biriken fonlama}

Düşüş, 0.01%'lik fonlama oranıyla 3 gün sürerse:

3 gu¨nlu¨k fonlama=0.0001×3×55×3=4.95%\text{3 günlük fonlama} = 0.0001 \times 3 \times 55 \times 3 = 4.95\%

Toplam: 49.5%+4.95%=54.45%49.5\% + 4.95\% = 54.45\% — standart %50 bakım marjında likadasyon.

Fonlamayı Hesaba Katan Güvenli Kaldıraç Formülü

Lsafe=Hedef DD−Fonlama tamponu∣MaxDD∣L_{safe} = \frac{\text{Hedef DD} - \text{Fonlama tamponu}}{|\text{MaxDD}|}

burada Fonlama tamponu, tipik düşüş süresi boyunca beklenen fonlamadır:

Fonlama tamponu=Oran×3×L×DD su¨resi (gu¨n)\text{Fonlama tamponu} = \text{Oran} \times 3 \times L \times \text{DD süresi (gün)}

Bu, özyinelemeli bir denklemdir (fonlama tamponu LL'ye bağlıdır). Çözüm:

Lsafe=Hedef DD∣MaxDD∣+Oran×3×DD su¨resiL_{safe} = \frac{\text{Hedef DD}}{|\text{MaxDD}| + \text{Oran} \times 3 \times \text{DD süresi}}

def safe_leverage(
    max_dd_pct: float,
    target_dd_pct: float = 50.0,
    funding_rate: float = 0.0001,
    dd_duration_days: float = 3.0,
) -> float:
    """
    Safe leverage accounting for funding costs during drawdown.
    """
    denominator = max_dd_pct / 100 + funding_rate * 3 * dd_duration_days
    return target_dd_pct / 100 / denominator

# Strategy A: MaxDD=0.9%, DD duration ~3 days
a_safe = safe_leverage(0.9, 50.0, 0.0001, 3.0)
# = 0.50 / (0.009 + 0.0009) = 0.50 / 0.0099 = 50.5x

# At elevated funding 0.03%:
a_safe_high = safe_leverage(0.9, 50.0, 0.0003, 3.0)
# = 0.50 / (0.009 + 0.0027) = 0.50 / 0.0117 = 42.7x

Sonuç: tipik fonlama oranında Strateji A için güvenli kaldıraç 55x değil 50x'tir. Yüksek fonlamada ise 42x. PnL@ML farkı:

  • Naif: 55%×55=+3025%55\% \times 55 = +3025\%
  • Fonlamayla (0.01%): 55%×50−165%=+2585%55\% \times 50 - 165\% = +2585\%
  • Fonlamayla (0.03%): 55%×42−400%=+1910%55\% \times 42 - 400\% = +1910\%

Backtest'e Fonlamanın Pratik Entegrasyonu

Backtest'lerde fonlama oranlarını hesaba katmak isteğe bağlı değil — bir zorunluluktur. İşte minimal bir uygulama:

import pandas as pd
import numpy as np

def load_funding_rates(symbol: str) -> pd.DataFrame:
    """Load historical funding rates from warehouse."""
    # Funding rates are stored in CSV: timestamp, rate
    # Binance publishes every 8 hours
    path = f"warehouse/data/{symbol}/funding/"
    # ... loading and merging files
    return df  # columns: [timestamp, rate]

def apply_funding_to_trades(trades, funding_rates, leverage: int = 1):
    """
    Subtract real funding costs from each trade's PnL.
    """
    for trade in trades:
        # Find all funding payments during the position holding period
        mask = (
            (funding_rates.index >= trade.entry_time) &
            (funding_rates.index <= trade.exit_time)
        )
        payments = funding_rates.loc[mask, 'rate']

        # Funding cost: sum of rates × leverage × direction
        # Long pays positive funding, receives negative
        direction = 1 if trade.side == 'long' else -1
        total_funding = payments.sum() * direction * leverage

        # PnL adjustment
        trade.pnl_pct -= total_funding * 100

    return trades

İyi kurulmuş bir backtest motorunda fonlama oranları yüklenir ve her işleme otomatik olarak uygulanır. Bu gerçekçi bir tablo sunar — ve çoğu zaman istenilenden daha az güllük olur.

Gerçekçi Kaldıraç Aralığı

Fonlama oranı rejimleri ve güvenli kaldıraç karşılaştırması

Bir örnek olarak — fonlama oranının farklı MaxDD seviyelerinde güvenli kaldıracı nasıl etkilediği:

Fonlama rejimiOrtalama oranDD=%0.9'da MaxLevDD=%17'de MaxLev
Düşük (0.005%)0.005%53x3x
Tipik (0.01%)0.01%50x3x
Yüksek (0.03%)0.03%42x3x
Çok yüksek (0.05%)0.05%36x2x

Temel gözlem: düşük düşüşlü stratejilerde (Strateji A, B) fonlama, efektif kaldıracı önemli ölçüde azaltır. Yüksek düşüşlü stratejilerde (Strateji C), fonlamanın etkisi minimaldir — çünkü kaldıraç zaten 3x ile sınırlıdır.

Fonlama Etkisini Minimize Etme Stratejileri

1. Hedge-Nötr Pozisyonlar

Fonlama oranı, vadeli fiyat ile spot fiyat arasındaki fark tarafından belirlenir. Stratejiniz spot üzerinden hedging'e izin veriyorsa — fonlama nötralize edilir:

  • Uzun vadeli işlem + kısa spot = fonlamaya karşı 0 net maruz kalma
  • Ancak: kripto'da spotu kısaltmak sınırlıdır (marjin hesabı veya borç verme gerektirir)

2. Daha Düşük Fonlamalı Borsalara Geçiş

Farklı borsaların aynı varlık için farklı fonlama oranları vardır. Fonlama arbitrajını izlemek, Borsalar Arası Fonlama Oranı Arbitrajı makalesinde ayrıntılı olarak açıklanan ayrı bir stratejidir.

3. Giriş Zamanlaması

Fonlama sabit zamanlarda ödenir (00:00, 08:00, 16:00 UTC). Bir işlem ödemeden bir dakika önce kapanırsa — fonlama alınmaz. Bu bir mikro optimizasyon, ancak 58x kaldıraçta atlanan tek ödemeden 0.58% tasarruf etmek önemlidir.

4. Dinamik Kaldıraç

Sabit kaldıraç yerine uyarlanabilir kaldıraç kullanın:

Ldynamic=Lbase×Oranmedyanmax⁡(Orangu¨ncel,Oranmedyan)L_{dynamic} = L_{base} \times \frac{\text{Oran}_{medyan}}{\max(\text{Oran}_{güncel}, \text{Oran}_{medyan})}

Fonlama yüksek olduğunda kaldıraç otomatik olarak azalır, maliyetleri sınırlar.

Fonlamayı Pipeline'a Entegre Etmek İçin Öneriler

Fonlama oranları, backtest pipeline'ının zorunlu bir parçası olmalıdır:

  • Her sembol için tarihsel fonlama oranlarını yükleyin
  • Her işlemi, elde tutma süresi boyunca gerçek fonlama için ayarlayın
  • Fonlama tamponu ile formülü kullanarak MaxLev hesaplayın
  • Raporda her iki sayıyı da gösterin: fonlama olmadan ve fonlamayla PnL@ML

Pratik kural: bir strateji 0.03%'lik fonlama oranında (boğa piyasasında zamanın %20-30'unda gerçekleşen) kârlı olmayı bırakırsa — yüksek kaldıraçta üretime hazır değildir. Kaldıracı, stratejinin en kötü fonlama senaryosunda bile kârlı olduğu bir seviyeye düşürün.

Sonuç

Fonlama oranları, kaldıraç üzerindeki bir vergidir. Gerçek bir vergi gibi, küçük miktarlarda fark edilmez ve büyük miktarlarda yıkıcıdır.

Üç kural:

  1. Her zaman fonlamayı hesaba katarak PnL@ML hesaplayın. Fonlama olmadan formula, trading değil pazarlamadır. Tarihsel fonlama oranlarını yükleyin ve her işlemden gerçek maliyetleri çıkarın.

  2. Güvenli kaldıraç formülünü kullanın:

Lsafe=Hedef DD∣MaxDD∣+Oran×3×DD su¨resiL_{safe} = \frac{\text{Hedef DD}}{|\text{MaxDD}| + \text{Oran} \times 3 \times \text{DD süresi}}

  1. 3x fonlamada test edin. Strateji, 0.03%'lük fonlamada (yalnızca 0.01% değil) kârlıysa — sağlamdır. Değilse — kaldıracı azaltın.

50-60x kaldıraçtaki güzel PnL sayıları hoş bir yanılsamadır. Fonlama oranları soğuk gerçektir. İkisi arasında backtest ile işlem hesabı arasındaki fark yatar.

Yüksek kaldıraçta düşüşlerin ve oynaklık sürüklenmesinin matematiği hakkında daha fazlası için — Kayıp-Kâr Asimetrisi makalemize bakın. Fonlama ayarlı sonuçlar için güven aralıklarının nasıl elde edileceği hakkında — Backtest'ler için Monte Carlo Bootstrap.


Faydalı Bağlantılar

  1. Binance — Fonlama Oranı Geçmişi
  2. Binance — Fonlama Oranlarına Giriş
  3. Bybit — Fonlama Oranlarını Anlama
  4. Deribit Insights — Sürekli Swapların Gizli Maliyeti
  5. Lopez de Prado — Finansal Makine Öğrenmesinde İlerlemeler, Bölüm 14: Backtest İstatistikleri
  6. Kevin Davey — Kazanan Algoritmik İşlem Sistemleri Oluşturma: İşlem Maliyetleri

Alıntı

@article{soloviov2026fundingratesleverage,
  author = {Soloviov, Eugen},
  title = {Funding Rates Kill Your Leverage: Why PnL×50x Is a Fiction},
  year = {2026},
  url = {https://marketmaker.cc/tr/blog/post/funding-rates-kill-leverage},
  version = {0.1.0},
  description = {Binance/Bybit'teki fonlama oranları, güzel yüksek kaldıraçlı backtest sonuçlarını nasıl garantili kayba dönüştürür. Formüller, gerçek stratejilerin yeniden hesaplanması ve fonlamanın kâra zarar vermediği maksimum kaldıraç seviyesi.}
}