Polymarket Bot Tutorial · Chapter 25 of 32
Sports market bots di Polymarket: NFL weekly games, NBA tag (745) microstructure, soccer (Premier League, Bundesliga, Champions League), tennis (864) - liquidity, sumber edge, pola code.
Apa yang dibahas dalam chapter ini
NFL, NBA, Soccer, dan Tennis adalah volume sports terbesar Polymarket berdasarkan kategori. Masing-masing punya ketersediaan data, cadence, dan profil edge yang berbeda. Chapter ini membahas pola bot spesifik untuk tiap league dan tag ID yang perlu Anda filter.
- NFL: weekly cadence, peak liquidity Sunday
- NBA (tag 745): in-game microstructure
- Soccer: international vs club leagues
- Tennis (tag 864): tournament cadence
- Sumber edge yang bertahan
- Live data: ESPN, official APIs
- Sample bot: pre-game line catcher
NFL: weekly cadence, peak liquidity Sunday
NFL punya rhythm mingguan paling kuat di antara semua sport di Polymarket. Markets dibuka Selasa setelah game minggu sebelumnya, line-shop terjadi Rabu-Jumat, volume betting memuncak Sabtu-Minggu. Resolution biasanya Minggu malam untuk early games, Senin malam untuk game yang paling akhir.
Pola bot: line-catcher Selasa-Rabu saat opening line ditetapkan, in-play Minggu saat volume puncak. Bot berbeda untuk tiap window. Market Monday Night Football sering punya volume lebih tipis daripada game lain - perhatikan bahwa slippage risk lebih tinggi untuk entry ukuran kecil.
Peak volume ada di Super Bowl: lebih dari $50M traded di semua market SB selama minggu pertandingan. Bahkan bot $100 pada minggu itu nyaris tidak berarti; market sudah efficient pada skala itu.
NBA (tag 745): in-game microstructure
NBA adalah sport dengan frequency tertinggi di Polymarket - 25-30 game per minggu selama regular season, 5-15 di playoffs. Tag ID 745 memfilter event khusus NBA.
In-game microstructure bekerja di NBA karena: (1) ESPN memperbarui scoreboard setiap ~10 detik, (2) game berlangsung 2,5 jam dengan aksi terus-menerus, (3) order book Polymarket untuk game besar tetap dalam sampai kuarter 4.
Strategi yang berhasil: subscribe ke WS book sebuah game + ESPN feed, bereaksi terhadap imbalance + score events dalam 10-15 detik. Strategi yang tidak berhasil: pre-game line catching (cukup efficient sehingga retail tidak banyak menangkapnya), late-game certainty arbitrage (wilayah 0.99-trap).
Soccer: international vs club leagues
Soccer terbagi menjadi tiga tier kasar di Polymarket.
- Top European leagues (EPL tag 739, La Liga, Bundesliga, Serie A) - volume moderat, book dalam untuk match besar. Strategi bot mirip NBA.
- Champions League / Europa League (UCL tag 2186) - volume puncak pada fase knockout. Book paling dalam mulai round-of-16 ke atas.
- International / smaller leagues (Saudi Pro League, MLS, J-League) - book tipis, spread besar. Umumnya bukan wilayah bot.
Skor yang diskret di soccer (0-1 goals adalah event besar) membuatnya berbeda dari aliran kontinu NBA. Pola bot untuk soccer adalah: berada di sisi yang benar sebelum goal tercipta, keluar cepat setelah goal terjadi.
Tennis (tag 864): tournament cadence
Tennis tag 864. Tour ATP dan WTA bermain selama 11 bulan dalam setahun dengan Grand Slams pada Jan (Australian Open), May-Jun (French Open), Jul (Wimbledon), dan Aug-Sep (US Open). Volume terkonsentrasi pada empat minggu itu plus seri Masters 1000.
Tennis punya in-play price ladders paling bersih di antara semua sport (chapter 15). Harga di tengah match mengikuti kurva yang dapat diprediksi berdasarkan state set dan break. Bot dengan model price ladder khusus tennis dapat mendeteksi mispricing secara real time.
Window yang sepi: di antara Grand Slams, minggu-minggu yang hanya berisi turnamen ATP 250 / ATP 500, book sangat tipis. Pause bot atau pindahkan ke sport lain selama periode ini.
Sumber edge yang bertahan
Di keempat sport, edge yang bertahan dari waktu ke waktu adalah:
- Pre-game line shop melawan angka dari venue yang lebih sharp (Pinnacle, Betfair). Saat Polymarket berbeda dari sharp book lebih dari > 3c, fade Polymarket.
- In-play overreaction terhadap satu play (interception, injury, momentum shift). Tunggu 30-60 detik setelah play, lalu fade jika market overshot.
- Late-game heavy favorites di 0.85-0.92 dengan risk-managed sizing. Di bawah 0.85 = risk nyata; di atas 0.92 = 0.99 trap.
Edge yang tidak bertahan: pure technical analysis pada harga, sentiment scraping dari Twitter, efek musiman berbasis kalender.
Live data: ESPN, official APIs
Matrix sumber data untuk keempat sport.
| Sport | Primary | Backup | Update cadence |
|---|---|---|---|
| NFL | ESPN scoreboard | NFL.com feed | ~10s during play |
| NBA | ESPN scoreboard | stats.nba.com | ~10s during play |
| Soccer (EPL/UCL) | ESPN scoreboard | SofaScore | ~15-30s |
| Tennis (ATP/WTA) | ESPN scoreboard | tennis.com live | ~30s (point-level) |
ESPN gratis dan andal untuk keempatnya. Untuk update di bawah 10 detik, bayar feed khusus (StatsPerform, GeniusSports) - tetapi peningkatan latency marginal jarang sepadan dengan biayanya untuk retail.
Sample bot: pre-game line catcher
Referensi: pseudocode pre-game line-catcher.
def line_catcher():
# Find games starting in the next 2-12 hours
events = gamma_events(tag_id=745, hours_ahead=12)
for ev in events:
for m in ev["markets"]:
polymarket_prob = float(json.loads(m["outcomePrices"])[0])
sharp_prob = fetch_pinnacle_implied(ev["slug"]) # 3rd-party feed
if sharp_prob - polymarket_prob > 0.04:
# Polymarket has the YES side cheap vs sharp
tok = json.loads(m["clobTokenIds"])[0]
place_fok(tok, "BUY", polymarket_prob + 0.01, size=10)
elif polymarket_prob - sharp_prob > 0.04:
# Polymarket has the NO side cheap vs sharp
tok = json.loads(m["clobTokenIds"])[1]
place_fok(tok, "BUY", 1 - polymarket_prob + 0.01, size=10)
Peringatan: API Pinnacle / Betfair memerlukan akun; tidak gratis. Tanpa reference yang sharp, line-catching berubah menjadi opini vs opini, yang bukan wilayah bot.





