Polymarket Bot Tutorial · Bab 15 dari 32

Sports microstructure bots di Polymarket: edge saat in-game, mispricing yang didorong scoreline, tag NBA (745) dan Tennis (864), live data sources, serta execution patterns untuk high-frequency sports markets.

Apa yang dibahas dalam bab ini

Sports markets adalah segmen non-political yang paling konsisten aktif di Polymarket. Bot yang benar-benar bekerja terbagi dalam dua kategori yang jelas: pre-game line-catchers yang trading setelah line terbentuk, dan in-game microstructure bots yang bereaksi terhadap pergerakan order book saat pertandingan berlangsung. Bab ini membahas keduanya dengan tag ID, data sources, dan latency budget spesifik yang berlaku untuk masing-masing.

Sports markets adalah segmen non-political tersibuk di Polymarket. Pola eksekusi yang bekerja menggabungkan live-score feed (ESPN, PandaScore) dengan sinyal microstructure order book. Bab ini membahas apa yang bekerja khusus untuk NFL, NBA, soccer, dan tennis, serta perbedaan pada esports.

  • Mengapa sports markets bisa ditradingkan
  • Pre-game vs in-game (bot yang berbeda)
  • Verified tag IDs (745 NBA, 864 Tennis)
  • Data sources: ESPN, official APIs, on-screen
  • Latency budget untuk in-game
  • Jebakan 0.99 / 0.01
  • Code: subscribe ke games book dan bereaksi

Mengapa sports markets bisa ditradingkan

Sports markets selesai dalam timeframe yang jelas (jam hingga hari), memiliki public live data, dan menarik arus order yang terus-menerus selama pertandingan. Ketiganya diperlukan agar market bisa ditradingkan - political markets tidak punya "defined timeframe," weather markets tidak punya "continuous flow," turnamen yang tidak populer tidak punya "public live data."

Populasi trader di sports markets juga lebih beragam dibandingkan, misalnya, election markets. Petaruh olahraga kasual memberi harga secara emosional; trader yang lebih terinformasi mengoreksi harga menuju fair value sepanjang pertandingan. Kesenjangan di antara keduanya adalah edge bot.

Distribusi volume tidak merata: NFL Sunday bisa memutar ratusan juta dolar di seluruh sports markets Polymarket; pertandingan Saudi Pro League pada Selasa malam mungkin hanya di bawah $50k. Sesuaikan strategi Anda dengan tempat aktivitas yang benar-benar ada.

Pre-game vs in-game (bot yang berbeda)

Dua desain bot yang secara fundamental berbeda.

Pre-game line-catcher: memindai market yang baru dibuka, mengidentifikasi line yang salah harga terhadap model Anda atau terhadap angka dari venue yang lebih sharp, lalu memasang buy FOK. Menahan posisi sampai in-play, kadang sampai resolusi. Kecepatan: menit, bukan detik. Edge: model + line-shopping.

In-game microstructure: subscribe ke WebSocket order book pertandingan live, bereaksi terhadap sinyal imbalance + event skor dalam hitungan detik. Kecepatan: detik, bukan menit. Edge: latency + membaca order flow.

Keduanya hampir tidak berbagi code. Risiko, data sources, dan exit strategy mereka berbeda. Bot yang mencoba melakukan keduanya biasanya malah tidak melakukan keduanya dengan baik; pilih salah satu.

Verified tag IDs (745 NBA, 864 Tennis)

Production tag IDs yang diverifikasi pada Mei 2026 untuk kategori sports utama. Gunakan ini untuk memfilter panggilan /events secara efisien.

Sport / LeagueTag IDTag slugNotes
NBA745nbahighest volume Oct-Jun
NFL450nflpeak Sun/Mon Sep-Feb
Tennis (all)864tennisyear-round, tournament cadence
Soccer (general)1059soccercombine with sub-tags below
EPL739epl
UCL2186uefa-champions-league
Esports (all)702esportsLoL+CS2+Valorant+Dota
MLB1245mlbpeak Apr-Oct
NHL823nhlpeak Oct-Jun

Tag IDs stabil dari tahun ke tahun. Tag baru ditambahkan (Saudi Pro League, IPL) tetapi tag lama tidak diganti nomor.

Data sources: ESPN, official APIs, on-screen

Untuk traditional sports, gratis ESPN scoreboard API mencakup semua yang Anda butuhkan: skor, period/clock, win-probability, kadang shot location. Tidak perlu key; rate-limited hanya di level IP. Pola endpoint: https://site.api.espn.com/apis/site/v2/sports/<sport>/<league>/scoreboard.

Untuk esports, ESPN tidak punya coverage. Opsi: PandaScore ($30-60/bulan, standard industri), HLTV (khusus CS2, bisa di-scrape, tanpa API), Liquipedia (dikelola komunitas, bisa di-scrape, cadence pembaruan lebih lambat).

On-screen feeds (membayar stream TV dan OCR pada scorebug) bisa bekerja, tetapi operasionalnya berat. Disarankan hanya jika Anda punya strategi yang membutuhkan update sub-3-detik pada sport yang tidak punya API real-time.

Latency budget untuk in-game

End-to-end latency budget untuk bot reaktif in-game.

  • Score event terjadi: t=0
  • Source feed merefleksikan: t+3-15s (ESPN: ~10s; PandaScore: ~3s)
  • Bot Anda membaca feed: t+10-16s
  • Bot memutuskan aksi: +50ms
  • FOK order ditempatkan: +200-500ms
  • Matched di CLOB: +300-1000ms (network + matching)

Total: 11-17 detik. Firma profesional tercepat mencapai 3-5 detik end-to-end dengan paid premium feeds dan co-located VPS. Bot retail yang berjalan di host standar dan ESPN gratis berada di sisi yang lebih lambat.

Strategi yang membutuhkan sub-5 detik tidak layak untuk retail. Strategi yang bekerja dalam window 10-17 detik adalah: line-catching setelah skor, fading overreaction, late-game certainty plays.

The 0.99 / 0.01 trap

Kegagalan bot sports in-play yang paling umum: membeli heavy favorite di 0.99 dengan sisa satu menit, berharap mudah dapat +1¢. Ada tiga alasan mengapa ini gagal.

Pertama, probabilitas implisit 1% dari underdog bukan nol - comeback di menit akhir terjadi dengan frekuensi yang tidak sepele. Kemenangan yang 99,5% pasti, jika dimainkan 200 kali, menghasilkan satu kekalahan untuk ukuran posisi penuh.

Kedua, spread di 0.99/0.01 berarti Anda membayar 99c per share, menang 1c saat berhasil, kalah 99c saat reversal langka terjadi. Risk-reward-nya brutal.

Ketiga, bot yang memakai GTC sell di 0.999 hampir tidak akan terisi - tidak ada buyer di harga itu. Posisi berjalan sampai resolusi. Jika menang, Anda mendapat 1c. Jika reversal terjadi, Anda kalah 99c.

Jebakan ini adalah uang nyata yang hilang oleh builder yang tidak menghitung matematikanya. Jauhi market dengan harga 0.95+ kecuali strategi Anda memang dirancang khusus untuk profil redemption-arbitrage.

Code: subscribe ke games book dan bereaksi

Reference: subscribe ke WebSocket dari satu game NBA tertentu, log update book, jalankan FOK saat sinyal imbalance muncul.

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()

Penambahan produksi: cooldown antar-fire, per-token inventory cap, kill jika book stale (tidak ada pesan selama 30 detik).

Pertanyaan yang sering diajukan

Tag sports mana yang paling aktif di Polymarket?
NBA (tag_id 745), Tennis (tag_id 864), dan soccer (bervariasi حسب competition) memimpin volume 24 jam selama musimnya. NFL melonjak setiap minggu selama regular season dan playoffs. Kami telah memverifikasi ID tag NBA dan Tennis di production - yang lain harus dicek lewat endpoint gamma /tags sebelum bergantung padanya.
Apakah saya bisa membot in-game sports markets secara menguntungkan?
Mungkin - tetapi sulit. Edgenya nyata (scoreline live sering salah harga selama 30-90 detik) tetapi bot lain juga memperhatikan. Hasil terbaik yang kami lihat datang dari menggabungkan sumber data live-score yang cepat dengan rules sederhana ("lawan baru mencetak skor, market belum bergerak, buy"). Pure stat-arb tanpa data source kalah oleh kompetitor yang lebih cepat.
Di mana saya mendapatkan data sports live?
ESPN.com punya unofficial JSON endpoints yang mengembalikan skor live - cukup baik untuk banyak strategi. Official APIs (NBA Stats API, NFL public endpoints) lebih andal tetapi lebih lambat. Akun Twitter reporter lapangan memberi teks tetapi membutuhkan parsing LLM. Tidak ada yang setara HFT; semuanya "cukup cepat" untuk retail.
Apa itu jebakan 0.99 / 0.01?
Ketika sebuah sports market berada di 99 sen YES (sangat mungkin menang), hampir tidak ada upside tersisa dan pergerakan 1 sen bisa menghapus expected gain selama berbulan-bulan. Banyak bot terjebak membeli di 0.99 demi mengejar sen terakhir dan terpukul saat kejadian tak terduga menjatuhkan harga ke 0.85. Aturan keras: jangan beli di atas ~0.95 kecuali perhitungan expected value Anda sangat solid.
Bagaimana Polymarket sports dibandingkan dengan sportsbook tradisional?
Tidak ada house edge pada spread (vs vig ~5-10% di FanDuel/DraftKings), tetapi liquidity lebih tipis dan spread bisa lebih lebar. Polymarket unggul untuk event yang underpriced oleh buku tradisional - turnamen internasional, esports, market niche. Untuk NFL/NBA arus utama, sportsbook tradisional lebih likuid tetapi biayanya lebih tinggi dalam vig.
Bisakah bot saya trading di beberapa sports markets secara bersamaan?
Ya - dan sebaiknya. Sports microstructure bekerja paling baik sebagai portofolio 5-20 game simultan. Per-game position cap (misalnya 50 USD), portfolio cap (misalnya 500 USD), dan exposure yang tidak berkorelasi antar game. Memusatkan pada satu game akan memaksimalkan variance.