Polymarket Bot Tutorial · 32 bölümün 15.si

Polymarket'te sports microstructure botları: oyun içi edge, scoreline odaklı mispricing, NBA tag'i (745) ve Tennis tag'i (864), live data kaynakları ve yüksek frekanslı sports markets için execution patterns.

Bu bölüm neleri kapsıyor

Sports markets, Polymarket'teki siyasi olmayan segmentler arasında en istikrarlı şekilde aktif olanıdır. İşe yarayan botlar iki net gruba ayrılır: line belirlendikten sonra trade yapan pre-game line-catcher'lar ve oyun sırasında order-book hareketine tepki veren in-game microstructure botları. Bu bölüm, her biri için geçerli olan özel tag ID'leri, data sources ve latency budget'larıyla birlikte ikisini de kapsar.

Sports markets, Polymarket'teki siyasi olmayan en yoğun segmenttir. İşe yarayan execution pattern, live-score feed (ESPN, PandaScore) ile order-book microstructure sinyallerini birleştirir. Bu bölüm, özellikle NFL, NBA, soccer ve tennis için neyin işe yaradığını ve esports'un nerede farklılaştığını kapsar.

  • Sports markets neden trade edilebilir
  • Pre-game ve in-game (farklı botlar)
  • Doğrulanmış tag ID'leri (745 NBA, 864 Tennis)
  • Data sources: ESPN, resmi APIs, on-screen
  • In-game için latency budget
  • 0.99 / 0.01 tuzağı
  • Kod: bir games book'a subscribe ol ve tepki ver

Sports markets neden trade edilebilir

Sports markets tanımlı zaman dilimlerinde (saatlerden günlere) kapanır, public live data'ya sahiptir ve oyun sırasında sürekli order flow çeker. Trade edilebilir bir market için bu üçünün de gerekli olması gerekir - siyasi marketlerde "tanımlı zaman dilimi" eksiktir, weather markets'te "sürekli flow" eksiktir, belirsiz turnuvalarda ise "public live data" eksiktir.

Sports markets'teki trader kitlesi de, örneğin election markets'e kıyasla, daha çeşitlidir. Sıradan sports bettors duygusal fiyatlama yapar; bilgili traders ise oyun boyunca fair value'ya doğru düzeltme yapar. İkisi arasındaki fark bot edge'idir.

Volume dağılımı eşit değildir: bir NFL Sunday, Polymarket sports markets arasında yüz milyonlarca doları döndürebilir; bir Salı gecesi Saudi Pro League karşılaşması ise 50 bin doların altında kalabilir. Stratejinizi, hareketin gerçekten olduğu yere göre boyutlandırın.

Pre-game ve in-game (farklı botlar)

Temelde birbirinden farklı iki bot tasarımı vardır.

Pre-game line-catcher: yeni açılan marketleri tarar, kendi modelinize veya daha sharp bir venue'nün rakamına göre yanlış fiyatlanan line'ları belirler, FOK buy yerleştirir. In-play'e, bazen resolution'a kadar taşır. Hız: saniyeler değil, dakikalar. Edge: model + line-shopping.

In-game microstructure: canlı bir oyunun order book WebSocket'ine subscribe olur, imbalance sinyalleri + score event'lerine saniyeler içinde tepki verir. Hız: dakikalar değil, saniyeler. Edge: latency + order flow okuma.

İkisinin kodu neredeyse hiç ortak değildir. Risk profilleri, data sources'ları ve exit strategy'leri farklıdır. İkisini birden yapmaya çalışan bir bot sonunda ikisini de iyi yapamaz; birini seçin.

Doğrulanmış tag ID'leri (745 NBA, 864 Tennis)

Majör sports kategorileri için Mayıs 2026'da doğrulanmış production tag ID'leri. Bunları /events çağrılarını verimli şekilde filtrelemek için kullanın.

Sport / LeagueTag IDTag slugNotlar
NBA745nbaOct-Jun arasında en yüksek volume
NFL450nflSep-Feb arası Sun/Mon zirvesi
Tennis (all)864tennisyıl boyu, turnuva ritmi
Soccer (general)1059socceraşağıdaki alt tag'lerle birlikte kullanın
EPL739epl
UCL2186uefa-champions-league
Esports (all)702esportsLoL+CS2+Valorant+Dota
MLB1245mlbApr-Oct arasında zirve
NHL823nhlOct-Jun arasında zirve

Tag ID'leri yıllar boyunca sabittir. Yeni tag'ler eklenir (Saudi Pro League, IPL) ama eski tag'ler yeniden numaralandırılmaz.

Data sources: ESPN, resmi APIs, on-screen

Geleneksel sports'lar için ücretsiz ESPN scoreboard API ihtiyacınız olan her şeyi kapsar: scores, period/clock, win-probability, bazen shot location. Key gerekmez; yalnızca IP seviyesinde rate-limited'dır. Endpoint pattern: https://site.api.espn.com/apis/site/v2/sports/<sport>/<league>/scoreboard.

Esports için ESPN coverage sağlamaz. Seçenekler: PandaScore ($30-60/ay, sektör standardı), HLTV (sadece CS2, scrape edilebilir, API yok), Liquipedia (community-maintained, scrape edilebilir, daha yavaş update cadence).

On-screen feed'ler (bir TV stream'i için ödeme yapıp scorebug'u OCR ile okumak) çalışır, ancak operasyonel olarak ağırdır. Yalnızca hiçbir API'nin real time olarak kapsamadığı bir sport için sub-3-second update gerektiren bir stratejiniz varsa önerilir.

In-game için latency budget

In-game reactive bir bot için uçtan uca latency budget.

  • Score event gerçekleşir: t=0
  • Source feed bunu yansıtır: t+3-15s (ESPN: ~10s; PandaScore: ~3s)
  • Bot'unuz feed'i okur: t+10-16s
  • Bot action'a karar verir: +50ms
  • FOK order yerleştirilir: +200-500ms
  • CLOB'da matched olur: +300-1000ms (network + matching)

Toplam: 11-17 saniye. En hızlı profesyonel firmalar ücretli premium feeds ve co-located VPS ile uçtan uca 3-5 saniye elde eder. Standart host'larda ve ücretsiz ESPN ile çalışan retail botlar daha yavaş uçtadır.

Sub-5s gerektiren stratejiler retail için uygulanabilir değildir. 10-17 saniyelik pencerede çalışan stratejiler şunlardır: score sonrası line-catching, overreaction fade etmek, late-game certainty play'leri.

0.99 / 0.01 tuzağı

In-play sports bot'larının en yaygın başarısızlık biçimi: bir dakika kala ağır favoriyi 0.99'dan almak ve kolay +1¢ beklemek. Bunun başarısız olmasının üç nedeni var.

Birincisi, underdog'un %1'lik implied probability'si sıfır değildir - son dakika geri dönüşleri önemsiz olmayan bir sıklıkla olur. %99.5 kesin görünen bir win, 200 kez oynandığında tam pozisyon boyutunda bir kayıp üretir.

İkincisi, 0.99/0.01 spread'i, share başına 99c ödediğiniz, başarıda 1c kazandığınız ve nadir tersine dönüşte 99c kaybettiğiniz anlamına gelir. Risk-reward çok serttir.

Üçüncüsü, 0.999'da GTC sell kullanan bot nadiren fill alır - o fiyatta buyer yoktur. Position resolution'a kadar taşınır. Kazanırsa 1c aldınız. Tersine dönüş olursa 99c kaybedersiniz.

Bu tuzak, matematiği yapmadan ilerleyen builder'ların gerçek para kaybetmesine yol açar. Redemption-arbitrage profili için özel olarak tasarlanmamış stratejilerde 0.95+ fiyatlı market'lerden uzak durun.

Kod: bir games book'a subscribe ol ve tepki ver

Referans: belirli bir NBA oyununun WebSocket'ine subscribe ol, book update'lerini logla, imbalance sinyali geldiğinde FOK gönder.

import websocket, json
THRESHOLD = 0.5  # imbalance level to trigger

def on_message(ws, message):
    msg = json.loads(message)
    if msg.get("event_type") != "book": return
    bids = msg.get("bids", [])
    asks = msg.get("asks", [])
    bid_depth = sum(float(b["price"]) * float(b["size"]) for b in bids[:5])
    ask_depth = sum(float(a["price"]) * float(a["size"]) for a in asks[:5])
    total = bid_depth + ask_depth
    if total < 100: return  # too illiquid
    imb = (bid_depth - ask_depth) / total
    if abs(imb) > THRESHOLD:
        print(f"signal imb={imb:.2f} bid={bid_depth:.0f} ask={ask_depth:.0f}")
        # fire FOK here

ws = websocket.WebSocketApp(
    "wss://ws-subscriptions-clob.polymarket.com/ws/market",
    on_open=lambda ws: ws.send(json.dumps({"type":"Market","markets":["<CONDITION_ID>"]})),
    on_message=on_message
)
ws.run_forever()

Production eklemeleri: tetiklemeler arasında cooldown, token başına inventory cap, stale book'ta kill (30 saniyede mesaj yoksa).

Sık sorulan sorular

Polymarket'te en aktif sports tag'leri hangileri?
NBA (tag_id 745), Tennis (tag_id 864) ve soccer (competition'a göre değişir) sezonları sırasında 24 saatlik volume'da liderdir. Production'da NBA ve Tennis tag ID'lerini doğruladık - diğerleri güvenmeden önce gamma /tags endpoint'i üzerinden kontrol edilmelidir.
In-game sports markets'te kârlı şekilde bot kullanabilir miyim?
Mümkün - ama zordur. Edge gerçektir (live scoreline çoğu zaman 30-90 saniye boyunca yanlış fiyatlanır) ancak başka botlar da izliyordur. Gördüğümüz en iyi sonuçlar, hızlı bir live-score data source'u ile basit kuralları ("rakip score yaptı, market henüz hareket etmedi, al") birleştirmekten gelir. Pure stat-arb, data source olmadan daha hızlı rakiplere kaybeder.
Live sports data'yı nereden alırım?
ESPN.com, live scores döndüren unofficial JSON endpoints'e sahiptir - birçok strateji için yeterince iyidir. Resmi APIs (NBA Stats API, NFL public endpoints) daha güvenilirdir ama daha yavaştır. Beat reporter'ların Twitter hesapları metin sağlar ama LLM parsing gerektirir. Hiçbiri HFT-grade değildir; hepsi retail için "yeterince hızlı"dır.
0.99 / 0.01 tuzağı nedir?
Bir sports market 99 cent YES'te olduğunda (kazanma ihtimali çok yüksek), geriye neredeyse hiç upside kalmaz ve 1 cent'lik bir hareket aylık beklenen kazancı silebilir. Birçok bot, son cent'i kovalamak için 0.99'dan alım yaparken ve beklenmedik bir olay fiyatı 0.85'e düşürdüğünde darbe alırken yakalanır. Sert kural: expected value matematiğiniz kusursuz değilse yaklaşık 0.95'in üstünde alım yapmayın.
Polymarket sports, geleneksel sportsbooks ile nasıl karşılaştırılır?
Spread üzerinde house edge yoktur (FanDuel/DraftKings'teki yaklaşık %5-10 vig'e karşı), ancak liquidity daha incedir ve spread'ler daha geniş olabilir. Polymarket, geleneksel book'ların underprice ettiği etkinliklerde öne çıkar - uluslararası turnuvalar, esports, niş market'ler. Ana akım NFL/NBA için geleneksel book'lar daha likittir ama vig nedeniyle daha pahalıdır.
Bot'um birden fazla sports market'te aynı anda trade yapabilir mi?
Evet - hatta yapmalıdır. Sports microstructure en iyi 5-20 eşzamanlı oyunluk bir portfolio olarak çalışır. Oyun başına pozisyon limiti (ör. 50 USD), portfolio limiti (ör. 500 USD) ve oyunlar arasında korelasyonsuz exposure. Tek bir oyuna odaklanmak variance'ı tavan yaptırır.