Berke Özyaşar
Blog

Polymarket arbitraj botu: YES ve NO toplamı 1 doların altına düşünce

Polymarket'te YES ve NO tokenlarının toplam fiyatı 1 doların altına düştüğünde iki tarafı alıp birleştiren merge arbitrajı botunun mimarisi ve riskleri.

·

Polymarket, Polygon ağı üzerinde çalışan bir tahmin piyasası. Her piyasada bir soru var ("Bitcoin önümüzdeki 15 dakikada yükselir mi?" gibi) ve iki sonuç tokenı işlem görüyor: YES ve NO. Ben Berke Özyaşar; bu piyasalarda fiyatlar arasında oluşan küçük tutarsızlıkları tarayan ve otomatik işlem yapan Python botları geliştirdim. Bu yazıda Polymarket botlarının dayandığı merge arbitrajı fikrini, botun mimarisini ve işin gerçek risklerini anlatıyorum.

Temel fikir: 1 YES + 1 NO = 1 USDC

Polymarket, Gnosis'in geliştirdiği Conditional Token Framework (CTF) akıllı kontratlarını kullanıyor. Bu yapıda iki temel işlem var:

  • Split: 1 USDC teminat yatırılır, karşılığında aynı piyasaya ait 1 YES ve 1 NO token alınır.
  • Merge: Elinizdeki 1 YES ve 1 NO token kontrata geri verilir, 1 USDC teminat geri alınır.

Piyasa nasıl sonuçlanırsa sonuçlansın, tokenlardan biri 1 dolar, diğeri 0 olur. Yani bir YES ve bir NO'dan oluşan tam set her zaman 1 dolar eder ve bunu kontrat garanti eder. Verimli bir piyasada en iyi YES satış fiyatı ile en iyi NO satış fiyatının toplamı 1 dolar civarında olmalı. Ama özellikle 5 ile 15 dakikalık kısa süreli kripto "Up or Down" piyasalarında fiyatlar hızlı hareket ediyor ve bu toplam zaman zaman 1 doların altına düşüyor.

Bir örnekle: Bir piyasada "Down" 74 sentten, "Up" 22 sentten satılıyorsa iki tarafı birden almak 96 sente mal olur. Bu iki token merge edildiğinde 100 sent geri alınır; aradaki 4 sent, ücretler düşülmeden önceki brüt farktır. Fiyatın hangi yöne gittiğinin önemi yoktur.

Polymarket'in hibrit yapısı

Botun nasıl çalıştığını anlamak için Polymarket'in iki katmanını bilmek gerekiyor. Emirler zincir dışında, merkezi bir emir defterinde (CLOB) eşleşiyor; emir vermek ve iptal etmek gas gerektirmiyor, emirler EIP-712 standardıyla imzalanıyor. Eşleşen işlemler Polygon üzerinde kesinleşiyor; split, merge ve redeem gibi işlemler doğrudan zincir üzerinde yapılıyor. Teminat olarak USDC.e, zincir üstü işlemlerin gas ücreti için POL kullanılıyor.

Bu yapının arbitraj açısından önemli bir sonucu var: iki tarafın alımı zincir dışında, merge ise zincir üstünde gerçekleşiyor. Yani iki alım tek bir atomik işlem değil. Bunun neden kritik olduğuna risk bölümünde döneceğim.

Botun mimarisi

Bot dört ana parçadan oluşuyor.

1. Piyasa keşfi

Polymarket'in Gamma API'si üzerinden aktif kripto "up-or-down" piyasaları çekiliyor. Her piyasa için conditionId ve YES/NO token kimlikleri kaydediliyor. Kısa süreli piyasalar sürekli açılıp kapandığı için bu liste düzenli olarak yenileniyor.

2. Tarayıcı

Tarayıcı yaklaşık iki saniyede bir her iki tokenın emir defterini CLOB API'den okuyor, en iyi satış fiyatlarını topluyor ve 1 dolardan farkı hesaplıyor. Burada önemli olan brüt fark değil, net kâr. Polymarket'in kripto piyasalarındaki taker ücreti fiyata bağlı: 50 sent civarında en yüksek, fiyat uçlara yaklaştıkça azalıyor. Tarayıcı her iki tarafın ücretini o fiyata göre ayrı ayrı hesaplıyor ve merge işleminin gas maliyetini de ekliyor. Minimum fark ve minimum kâr eşiklerinin altında kalan fırsatlar atlanıyor. İşlem büyüklüğü de emir defterinin en üst seviyesindeki miktarla sınırlanıyor; daha büyük bir emir fiyatı kendi aleyhine kaydırır.

3. Yürütücü

Fırsat bulunduğunda iki taraf için imzalı emirler mümkün olduğunca eş zamanlı gönderiliyor. Python tarafında bunun için py-clob-client kütüphanesini kullanıyorum; emir imzalama ve API kimlik bilgileri bu kütüphane üzerinden yönetiliyor.

4. Merge ya da sonuca kadar tutma

İki taraf da dolduğunda web3.py ile CTF kontratındaki mergePositions() çağrılıyor ve USDC.e cüzdana geri dönüyor. Alternatif olarak pozisyon piyasa sonuçlanana kadar tutulabilir; bu merge için ödenecek gas'tan tasarruf ettirir ama sermayeyi o süre boyunca kilitler. Sık işlem yapan bir stratejide sermayeyi hemen geri almak genellikle daha mantıklı.

İkinci strateji: Dump & Hedge

Saf merge arbitrajında fırsatlar hızla kapanıyor. Botta bunun yanında "Dump & Hedge" denen ikinci bir strateji de var:

  • Bir tarafın fiyatında ani bir düşüş (10 sent veya daha fazla) olduğunda o taraf alınıyor.
  • Karşı tarafla birlikte toplam maliyet 95 sent veya altına indiğinde diğer taraf da alınarak set tamamlanıyor.
  • Belirli bir süre içinde bu koşul oluşmazsa, tek taraflı kalmamak için karşı taraf zararına da olsa alınıyor (zamanlı stop-loss hedge).

Bu strateji daha fazla fırsat yakalıyor ama tanımı gereği bir süre tek taraflı açık pozisyon taşıyor; yani saf arbitrajdan daha risklidir.

Altyapı

  • Dil ve kütüphaneler: Python, py-clob-client ve web3.py. Polymarket'in TypeScript ve Rust SDK'ları da var; gecikmenin daha kritik olduğu durumlarda değerlendirilebilir.
  • RPC: Herkese açık Polygon RPC uç noktaları yavaş ve kararsız olabiliyor; ücretli bir RPC sağlayıcısı kullanmak gecikmeyi doğrudan etkiliyor.
  • İzleme: Tarama sonuçları, gönderilen emirler, dolum durumları ve merge işlemleri Grafana panellerinden izleniyor. Ne yaptığını görmediğiniz bir botu çalıştırmak bence başlı başına bir risk.
  • Acil durdurma: Beklenmedik bir durumda tüm işlemleri tek komutla durduran bir kill switch.

Riskler: "risksiz arbitraj" diye bir şey yok

Merge arbitrajı kağıt üzerinde sonuçtan bağımsız görünüyor ama pratikte ciddi riskler var:

  • Tek taraf riski: İlk taraf dolduktan sonra ikinci tarafın fiyatı değişebilir ya da emir hiç dolmayabilir. O durumda elinizde yön bahsine dönüşmüş tek taraflı bir pozisyon kalır.
  • Ücret erozyonu: Taker ücreti ve gas toplamı farkı aşarsa kâr yerine zarar oluşur. Ücretin fiyata bağlı olması, hesabı her fırsatta yeniden yapmayı gerektiriyor.
  • Kayma ve likidite: Emir defteri sığ olabilir. Gördüğünüz fiyat ile emrin ulaştığı andaki fiyat aynı olmayabilir.
  • Rekabet: Aynı fırsatları tarayan başka botlar da var; fırsatlar çok kısa sürede kapanabiliyor.
  • Hız sınırları: API'lerin önünde Cloudflare var; çok sık istek atmak engellenmeye yol açabiliyor. Yeniden deneme mantığı ve istek sıklığı buna göre ayarlanmalı.
  • Test ortamı yok: Polymarket'in bir test ağı yok; her işlem gerçek parayla yapılıyor. Bu yüzden her yeni sürümü çok küçük tutarlarla denemek gerekiyor.
  • Erişim kısıtları: Polymarket bazı ülkelerden erişimi kısıtlıyor; bulunduğunuz yerin kurallarını ve platformun kullanım koşullarını kontrol etmeniz gerekiyor.

Bu yazı yatırım tavsiyesi değildir. Bir arbitraj botu belirli koşullarda fırsat yakalamak için tasarlanır; ücretler, kayma ve likidite yüzünden zarar etmesi de mümkündür.

Kendi botunuzu düşünüyorsanız

Polymarket ya da benzer piyasalar için bir bot fikriniz varsa, önce stratejiyi net kurallara dökmek, sonra küçük tutarlarla ve iyi bir izleme altyapısıyla ilerlemek gerekiyor. Bu tür projelerde nasıl çalıştığımı trading botları sayfasında anlattım; oradan ya da iletişim sayfasından bana ulaşabilirsiniz.

Diğer yazılar

Uygulamanızı birlikte yayınlayalım.

Ne yapmak istediğinizi birkaç cümleyle anlatın. Aynı gün dönüş yapıyorum.

Gezinmek için ↑ ↓, açmak için Enter, kapatmak için Esc