Blog'a Dön

Forex'te üçgen arbitraj açıklaması: geliştirici rehberi (2026)

V
Vlado Grigirov
May 16, 2026
Currency API Exchange Rates Forex Triangular Arbitrage Developer Guide Education Finexly

Forex'te üçgen arbitraj açıklaması: geliştirici rehberi (2026)

Forex'te üçgen arbitraj, döviz piyasasının en zarif fikirlerinden biridir. Şöyle der: Eğer USD → EUR → GBP → USD dönüşümünü yapıp başladığımdan daha fazla dolarla bitirebilirsem, piyasa yanlış fiyatlanmıştır ve aradaki fark risksiz kârdır. Pratikte bu fırsatlar milisaniyeler kadar sürer ve yüksek frekanslı işlem masalarına aittir — ancak temel matematiği, döviz verisiyle çalışan her geliştiricinin anlaması gereken bir konudur. API'nizin döndürdüğü çapraz kurların içsel olarak tutarlı olup olmadığını söyler, daha akıllı çok aşamalı dönüşüm rotaları kurmanıza imkân verir ve bozuk fiyat tekliflerini müşterilerinize ulaşmadan yakalayan tutarlılık kontrollerini besler.

Bu rehber üçgen arbitrajın ne olduğunu açıklar, çapraz kur formülünü adım adım gezer ve JavaScript, Python, PHP ve cURL'de gerçek kodla — gerçek zamanlı bir döviz API'si tarafından desteklenen — çalışan bir üçgen arbitraj tarayıcısının nasıl kurulacağını gösterir.

Üçgen arbitraj nedir?

Üçgen arbitraj (ayrıca çapraz para birimi arbitrajı veya üç noktalı arbitraj olarak da bilinir), döviz piyasasında üç para birimi arasındaki fiyat tutarsızlığını sömürme eylemidir. Tüccar, A para birimini B ile, B'yi C ile ve C'yi tekrar A ile değiştirir. Eğer son A miktarı başlangıç miktarından büyükse, risksiz kâr yakalamışsınızdır.

Teknik, yalnızca iki para birimi arasındaki teklif edilen çapraz kur, üçüncü bir para birimi (genellikle ABD doları) üzerinden hesaplanan zımni çapraz kurdan ayrıştığında işler. Piyasa dengedeyken — neredeyse her zaman böyledir — bu kurlar eşleşir ve arbitraj yoktur. Hızlı bir hareket, haber şoku veya yavaş bir aracıdan gelen eski bir teklifte kısaca ayrıştıklarında fırsat açılır.

Modern forex'te üçgen arbitraj, mikrosaniyelerle ölçülen eş yerleşik (co-located) sunucularla çalışan algoritmik tüccarların hâkimiyetindedir. Bireysel tüccarlar hızda rekabet edemez ve spreadler ile ücretler düşüldükten sonra görünür neredeyse hiçbir fırsat aslında kâra çevrilemez. Peki neden geliştiriciler ilgilensin? Çünkü bir HFT tarayıcısını besleyen aynı matematik, şunları yapmak için kullandığınız matematiktir:

  • Sağlayıcınızın döndürdüğü çapraz kurların içsel olarak tutarlı olduğunu doğrulamak
  • Sağlayıcınızın doğrudan kote etmediği para birimi çiftleri için çok aşamalı dönüşümleri yönlendirmek
  • Müşteriye dönük bir teklifi bozmadan önce eski verileri tespit etmek
  • Eğitim araçları, kâğıt ticareti simülatörleri ve analiz panelleri kurmak

Asıl ödül bu. Formüle geçelim.

Matematik: Üçgen arbitraj fırsatı nasıl tespit edilir

Üç kur işin içindedir. Bir baz para birimi seçin (tipik olarak USD) ve diğer iki tane — diyelim ki EUR ve GBP. Böylece üç döviz kurunuz olur:

  • EUR/USD — bir euronun kaç dolar satın aldığı
  • GBP/USD — bir sterlinin kaç dolar satın aldığı
  • EUR/GBP — bir euronun kaç sterlin satın aldığı (bu teklif edilen çapraz kurdur)

EUR/USD ve GBP/USD'den türetilen zımni çapraz kur EUR/GBP şudur:

Zımni EUR/GBP = EUR/USD ÷ GBP/USD

Sezgi: Bir euro EUR/USD dolar değerinde, bir sterlin GBP/USD dolar değerinde, dolayısıyla bir euro EUR/USD ÷ GBP/USD sterlin değerinde olmalı — piyasa tutarlıysa.

Teklif edilen EUR/GBP, zımni EUR/GBP'den işlem maliyetlerinden fazla farklıysa teorik bir arbitraj vardır. Yüzdelik fark:

Arbitraj % = (Zımni − Teklif) ÷ Teklif × 100

Daha basit bir düşünme yolu: A para biriminden 1 birimle başlayın, döngüyü dolaşın ve ne kadarla bittiğine bakın. Sonuç 1'den büyükse bir fırsat bulmuşsunuzdur. Genel döngü kontrolü:

Kâr oranı = Kur(A→B) × Kur(B→C) × Kur(C→A)

Kâr oranı > 1 ise A → B → C → A döngüsü (maliyetler öncesi) kârlıdır. 1'den küçükse ters döngü (A → C → B → A) kârlı olabilir. 1'e eşitse piyasa dengededir.

Gerçekten hatırlamanız gereken tek formül budur. Geri kalan her şey tesisat işidir.

Çalışılmış örnek: USD → EUR → GBP → USD

Sağlayıcınızın aşağıdaki canlı kurları döndürdüğünü varsayın:

ÇiftKur
EUR/USD1.0850
GBP/USD1.2700
EUR/GBP0.8500
1. Adım: Zımni EUR/GBP'yi hesaplayın.

Zımni EUR/GBP = 1.0850 ÷ 1.2700 = 0.8543

2. Adım: Teklif edilen EUR/GBP ile karşılaştırın.

Teklif = 0.8500
Zımni = 0.8543
Fark = (0.8543 − 0.8500) ÷ 0.8500 × 100 = %0.51

Modern FX'te 51 baz puanlık fark devasadır (gerçek fırsatlar tipik olarak 1–5 baz puandır ve milisaniyeler içinde kaybolur). Gösterim için döngüyü çalıştıralım.

3. Adım: \$1,000,000'ı döngüye sokun.

  1. USD → EUR: 1,000,000 ÷ 1.0850 = €921,659
  2. EUR → GBP: 921,659 × 0.8500 = £783,410
  3. GBP → USD: 783,410 × 1.2700 = $994,931

Bu yaklaşık $5,069'luk bir zarar. USD → EUR → GBP → USD döngüsü kârlı değildir. Tersine çevirin:

  1. USD → GBP: 1,000,000 ÷ 1.2700 = £787,402
  2. GBP → EUR: 787,402 ÷ 0.8500 = €926,355
  3. EUR → USD: 926,355 × 1.0850 = $1,005,095

Ters yön $1M üzerinde $5,095 kâr getirir. Ders: İşlemin yönü, tutarsızlığın kendisi kadar önemlidir. Her zaman iki yönü de kontrol edin.

Geliştiriciler neden ilgilenmeli (işlem yapmıyor olsanız bile)

Bir SaaS faturalama sistemi, e-ticaret ödemesi, bordro motoru veya seyahat rezervasyon platformu kuruyorsanız HFT ilginizi çekmez — ama matematik kesinlikle çeker.

1. Çapraz kur tutarlılık kontrolleri. Sağlayıcınız EUR/USD, GBP/USD ve EUR/GBP döndürüyorsa, ilk ikisini bölüp üçüncüyle karşılaştırabilirsiniz. Tipik spreaddan (diyelim ki 10 bps) büyük bir fark, fiyatlardan birinin eski ya da hatalı olduğuna güçlü bir işarettir. Loglayın, uyarı verin, ikincil bir kaynağa düşün.

2. Daha akıllı çok aşamalı dönüşüm. Bir müşterinin Tayland bahtını (THB) Norveç kronuna (NOK) dönüştürmek istediğini ve sağlayıcınızın THB/NOK'yi doğrudan kote etmediğini varsayın. USD üzerinden yönlendirebilirsiniz: THB → USD → NOK. Üçgen matematiği size bunun (yuvarlama hatası dışında) varsayımsal doğrudan bir teklife matematiksel olarak eşdeğer olduğunu söyler. Finexly API dokümantasyonu, dönüşümleri temiz biçimde zincirlemenin yolunu ayrıntılı anlatır.

3. Üretime varmadan kötü veriyi yakalama. Çok para birimli bir faturadaki tek bir eski fiyat, yanlış fiyatlanmış sözleşmelere, başarısız mutabakatlara ve mutsuz finans ekiplerine yol açabilir. Üçgen kontroller yazabileceğiniz en ucuz tutarlılık testidir — üç API çağrısı, iki bölme, bir karşılaştırma.

4. Eğitim ve görselleştirme. Çapraz kur tutarlılığını gerçek zamanlı görselleştiren dahili araçlar, ops ekibinize anomalileri göstermenin ve finans paydaşlarıyla güven inşa etmenin harika bir yoludur.

Finexly ile bir üçgen arbitraj tarayıcısı kurmak

Tarayıcıyı kuralım. Bir döviz sepeti için canlı kurları çekeceğiz, her zımni çapraz kuru teklif edilenle karşılaştıracağız ve yapılandırılabilir bir eşiği aşan her anomaliyi yüzeye çıkaracağız.

cURL: En son kurları çek

Mümkün olan en basit çağrı. latest uç noktası, istediğiniz herhangi bir sembol alt kümesi için bir baz para birimine karşı mid-market kurlar döndürür.

curl "https://api.finexly.com/v1/latest?base=USD&symbols=EUR,GBP,JPY" \
  -H "Authorization: Bearer YOUR_API_KEY"

Tipik bir yanıt:

{
  "base": "USD",
  "timestamp": 1763309480,
  "rates": {
    "EUR": 0.9217,
    "GBP": 0.7874,
    "JPY": 152.43
  }
}

Bunlar USD cinsinden kurlar: 1 USD = 0.9217 EUR, 0.7874 GBP, 152.43 JPY. EUR/GBP'yi hesaplamak için EUR/GBP = (1/EUR_per_USD) × GBP_per_USD = GBP_per_USD ÷ EUR_per_USD ilişkisini kullanırız, daha okunaklı olarak: EUR/GBP = 0.7874 / 0.9217 ≈ 0.8543.

JavaScript / Node.js: Üretime hazır bir tarayıcı

Bu uygulama tek bir istekle bir döviz sepetini çeker, her çift için zımni çapraz kuru hesaplar ve yapılandırılabilir bir eşiği aşan her şeyi işaretler.

// triangular-scanner.js
const API_KEY = process.env.FINEXLY_API_KEY;
const BASE_URL = "https://api.finexly.com/v1";

async function getRates(base, symbols) {
  const url = `${BASE_URL}/latest?base=${base}&symbols=${symbols.join(",")}`;
  const res = await fetch(url, {
    headers: { Authorization: `Bearer ${API_KEY}` },
  });
  if (!res.ok) throw new Error(`Finexly API ${res.status}`);
  const data = await res.json();
  return data.rates; // { EUR: 0.9217, GBP: 0.7874, ... }
}

function impliedCrossRate(baseToA, baseToB) {
  // If 1 USD = X EUR and 1 USD = Y GBP, then 1 EUR = Y/X GBP
  return baseToB / baseToA;
}

async function scanTriangles(base, currencies, thresholdBps = 10) {
  const rates = await getRates(base, currencies);
  const opportunities = [];

  for (let i = 0; i < currencies.length; i++) {
    for (let j = i + 1; j < currencies.length; j++) {
      const a = currencies[i];
      const b = currencies[j];

      // Implied a/b cross-rate via the base
      const implied = impliedCrossRate(rates[a], rates[b]);

      // Quoted a/b — fetch directly to compare
      const quoted = await getRates(a, [b]);
      const quotedRate = quoted[b];

      const gapBps = ((implied - quotedRate) / quotedRate) * 10000;

      if (Math.abs(gapBps) > thresholdBps) {
        opportunities.push({
          triangle: `${base} → ${a} → ${b} → ${base}`,
          implied: implied.toFixed(6),
          quoted: quotedRate.toFixed(6),
          gapBps: gapBps.toFixed(2),
        });
      }
    }
  }

  return opportunities;
}

scanTriangles("USD", ["EUR", "GBP", "JPY", "CHF"], 10).then(console.log);

Periyodik olarak çalıştırın (izleme amaçlı her 5–30 saniye fazlasıyla yeter) ve uyarıları Slack, PagerDuty veya ekibinizin yaşadığı yere yönlendirin. Daha derin bir entegrasyon turu için Node.js döviz API entegrasyon rehberimize bakın.

Python: Vektörleştirilmiş matematiğe sahip bir tarayıcı

Python'un gücü kısa sayısal kodtur. Aynı fikir, daha hızlı yazılır:

# triangular_scanner.py
import os
import itertools
import requests

API_KEY = os.environ["FINEXLY_API_KEY"]
BASE_URL = "https://api.finexly.com/v1"

def get_rates(base, symbols):
    r = requests.get(
        f"{BASE_URL}/latest",
        params={"base": base, "symbols": ",".join(symbols)},
        headers={"Authorization": f"Bearer {API_KEY}"},
        timeout=5,
    )
    r.raise_for_status()
    return r.json()["rates"]

def scan_triangles(base, currencies, threshold_bps=10):
    rates = get_rates(base, currencies)
    opportunities = []

    for a, b in itertools.combinations(currencies, 2):
        implied = rates[b] / rates[a]
        quoted = get_rates(a, [b])[b]
        gap_bps = (implied - quoted) / quoted * 10_000

        if abs(gap_bps) > threshold_bps:
            opportunities.append({
                "triangle": f"{base} → {a} → {b} → {base}",
                "implied": round(implied, 6),
                "quoted": round(quoted, 6),
                "gap_bps": round(gap_bps, 2),
            })

    return opportunities

if __name__ == "__main__":
    results = scan_triangles("USD", ["EUR", "GBP", "JPY", "CHF"], 10)
    for r in results:
        print(r)

Desen aynı: baz kurları tek çağrıyla alın, her zımni çaprazı türetin, teklif çaprazı ile karşılaştırın, eşiği aşan her şeyi yüzeye çıkarın. Önbellekleme ve yeniden denemeleri içeren daha fazla Python deseni için Python döviz API eğitimimize bakın.

PHP: Aynı tarayıcı, web dostu

PHP, bir faturalama panosuna veya yönetici aracına doğrudan gömüldüğünde parlar.

<?php
// triangular_scanner.php
$apiKey = getenv('FINEXLY_API_KEY');
$baseUrl = 'https://api.finexly.com/v1';

function getRates(string $base, array $symbols, string $apiKey, string $baseUrl): array {
    $url = "{$baseUrl}/latest?base={$base}&symbols=" . implode(',', $symbols);
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => ["Authorization: Bearer {$apiKey}"],
        CURLOPT_TIMEOUT => 5,
    ]);
    $response = curl_exec($ch);
    curl_close($ch);
    $data = json_decode($response, true);
    return $data['rates'] ?? [];
}

function scanTriangles(string $base, array $currencies, int $thresholdBps, string $apiKey, string $baseUrl): array {
    $rates = getRates($base, $currencies, $apiKey, $baseUrl);
    $opportunities = [];

    for ($i = 0; $i < count($currencies); $i++) {
        for ($j = $i + 1; $j < count($currencies); $j++) {
            $a = $currencies[$i];
            $b = $currencies[$j];
            $implied = $rates[$b] / $rates[$a];
            $quoted = getRates($a, [$b], $apiKey, $baseUrl)[$b];
            $gapBps = ($implied - $quoted) / $quoted * 10000;

            if (abs($gapBps) > $thresholdBps) {
                $opportunities[] = [
                    'triangle' => "{$base} → {$a} → {$b} → {$base}",
                    'implied'  => round($implied, 6),
                    'quoted'   => round($quoted, 6),
                    'gap_bps'  => round($gapBps, 2),
                ];
            }
        }
    }
    return $opportunities;
}

print_r(scanTriangles('USD', ['EUR', 'GBP', 'JPY', 'CHF'], 10, $apiKey, $baseUrl));

Kuyruğa alınmış işler ve Eloquent önbellekleme dahil Laravel'e özgü desenler için Laravel döviz API eğitimimize bakın.

Yaygın tuzaklar ve bireysel arbitrajın neden başarısız olduğu

Üçgen arbitrajı gerçekten ticaret yapma cazibesine kapılıyorsanız bu bölümü iki kez okuyun.

1. Spreadler fırsatı yer. Yukarıdaki tüm matematik mid-market kurlarını varsayıyordu. Gerçekte alırken ask'tan, satarken bid'den işlem yaparsınız. EUR/USD'de tipik bir bireysel spread 1–2 pip'tir. Üç spread'i geçtiğinizde işlem maliyetinde 3–6 pip ödemiş olursunuz — görülen herhangi bir arbitraj farkından çok daha fazla.

2. Gecikme sizi öldürür. Akademik araştırmalar, üçgen fırsatların %95'inin 5 saniyeden az ve %60'ının 1 saniyeden az sürdüğünü göstermiştir. Komut dosyanız üç teklif alıp üç emir gönderene kadar fark kaybolur. HFT firmaları mikrosaniye kazanmak için sunucuları borsa veri merkezlerine eş yerleştirir; dizüstü bilgisayarınız rekabet edemez.

3. "Ücretsiz" kurlar işlem yapılabilir değildir. Bir API'de gördüğünüz mid-market kur, bilgilendirici bir fiyattır — bid ve ask'ın orta noktasıdır. Onunla işlem yapamazsınız. Gerçek işlem fiyatları aracı kâr marjını, kaymayı ve (sıklıkla) her bacaktaki gizli ücretleri içerir.

4. Bacak riski (leg risk). Gerçek bir fırsatı yakalasanız bile üç işlemi atomik olarak yürütmelisiniz. İkincisi başarısız olur veya kısmen gerçekleşirse, istemediğiniz bir para biriminde takılı kalırsınız — aleyhinize hareket etmiş olabilecek bir fiyatta.

5. Düzenleyici sürtünme. Sınır ötesi yürütme yerleri, KYC gereksinimleri ve finansman hesabınızdaki döviz dönüşüm ücretleri, bireysel tüccarların hesap tablolarında göz ardı ettiği maliyet katmanları ekler.

Çıkarım: Üçgen arbitrajı bir ticaret stratejisi olarak değil, analitik ve mühendislik bir araç olarak ele alın. Matematik döviz API'si önbellekleme ve hata işleme, veri kalitesi izleme, çok aşamalı dönüşüm yönlendirme ve eğitim araçları için paha biçilmezdir. Ticareti eş yerleşik sunuculara sahip insanlara bırakın.

Sık sorulan sorular

Üçgen arbitraj 2026'da kârlı mı? Bireysel tüccarlar için fiilen hayır. Spreadler, gecikme ve algoritmik firmalardan gelen rekabet, maliyet sonrası net getirileri neredeyse sıfıra indirdi. Bugün kârlı üçgen arbitraj, mikrosaniye gecikmeli eş yerleşik sistemler çalıştıran yüksek frekanslı masaların hâkimiyetindedir. Ancak matematik, FX'e dokunan herhangi bir uygulamada çapraz kur tutarlılık kontrolleri, çok aşamalı dönüşüm ve veri doğrulama için temel olmaya devam ediyor.

Üçgen arbitraj ile çapraz kur hesabı arasındaki fark nedir? Çapraz kur hesabı matematiktir: EUR/USD ve GBP/USD'den EUR/GBP'yi türetmek. Üçgen arbitraj, hesaplanan çapraz kur ile ayrıca kote edilen çapraz kur arasındaki farkı sömüren ticaret stratejisidir. Her üçgen arbitraj fırsatı bir çapraz kur uyuşmazlığıdır, ancak her çapraz kur hesabı arbitraj içermez.

Üçgen arbitraj için en iyi üç para birimi hangisidir? Tarihsel olarak en çok izlenen üçgenler yüksek likidite ve dar spreadler nedeniyle USD-EUR-GBP, USD-EUR-JPY ve USD-GBP-JPY'dir. Kripto piyasaları, borsalar arası parçalı likidite nedeniyle bazen daha büyük fırsatlar sunar, ancak emanet, çekim ve uzlaştırma riskleriyle birlikte gelir.

Üçgen arbitrajı test etmek için Finexly gibi ücretsiz bir API kullanabilir miyim? Evet — öğrenme, izleme ve doğrulama için ücretsiz bir döviz API'si mükemmeldir. Finexly'nin ücretsiz katmanı 170'ten fazla para birimini kapsar ve birkaç saniyede bir çalışan bir tarayıcı kurmak için fazlasıyla yeter. Yalnızca bulduğunuz herhangi bir fırsattan kâr beklemeyin; bunu ticaret olarak değil mühendislik ve analitik olarak ele alın.

Üçgen arbitraj tarayıcısı ne sıklıkla çalıştırılmalı? Veri kalitesi izlemesi için (çoğu geliştiricinin bunu kurmasının gerçek nedeni), her 30 ile 60 saniyede bir yeter. HFT tarzı tespit için alt milisaniye anketleme ve tick tick beslemeye ihtiyacınız olur — o noktada bir REST API yanlış araçtır. Her mimarinin ne zaman mantıklı olduğunu öğrenmek için REST vs WebSocket karşılaştırmamıza bakın.

Üçgen arbitraj ile çapraz döviz kurları arasındaki ilişki nedir? Çapraz döviz kuru, USD'yi içermeyen iki para birimi arasındaki herhangi bir kurdur. Üçgen arbitraj esasen teklif edilen çapraz kurun, USD üzerinden türetilen zımni çapraz kura eşit olup olmadığının kontrolüdür. Çapraz kurlara yeniyseniz geliştiriciler için çapraz döviz kurları derinlemesine yazımızla başlayın.

Toparlayalım

Üçgen arbitraj, matematiğin sadece şu olduğunu fark edene kadar egzotik gelen konulardan biridir: iki kuru bölün, üçüncüyle karşılaştırın, ayrılırlarsa uyarı verin. Ticaret stratejisi olarak modern piyasalarda kâr elde etmek neredeyse imkânsızdır. Mühendislik deseni olarak ise bir fintech geliştiricisinin alet kutusundaki en kullanışlı araçlardan biridir — veri doğrulama, çok aşamalı dönüşüm ve anomalileri müşterilere ulaşmadan yüzeye çıkarmak için.

Bir sonraki döviz dönüşüm akışını kabloladığınızda, bir üçgen tutarlılık kontrolü ekleyin. Üç API çağrısı ve on satır kod, finans ekibinizden çok önce bozuk fiyatları yakalayacak.

Gerçek zamanlı döviz kurlarını projenize entegre etmeye hazır mısınız? Ücretsiz Finexly API anahtarınızı alın — kredi kartı gerekmez. Ayda 1.000 ücretsiz istekle başlayın, büyüdükçe fiyatlandırma planlarımızla ölçeklendirin veya canlı kurları görmek için etkileşimli döviz çeviriciyi deneyin.

Vlado Grigirov

Senior Currency Markets Analyst & Financial Strategist

Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...

View full profile →