Polymarket Bot Tutorial · Chương 25 trên 32

Các sports market bot trên Polymarket: NFL weekly games, NBA tag (745) microstructure, soccer (Premier League, Bundesliga, Champions League), tennis (864) - liquidity, edge sources, code patterns.

Chương này đề cập những gì

NFL, NBA, Soccer và Tennis là các danh mục sports có volume lớn nhất trên Polymarket. Mỗi môn có mức độ availability dữ liệu, cadence và edge profile riêng. Chương này sẽ đề cập các bot pattern theo từng league và các tag ID mà bạn sẽ filter.

  • NFL: weekly cadence, peak liquidity Sunday
  • NBA (tag 745): in-game microstructure
  • Soccer: international vs club leagues
  • Tennis (tag 864): tournament cadence
  • Edge sources that survive
  • Live data: ESPN, official APIs
  • Sample bot: pre-game line catcher

NFL: weekly cadence, peak liquidity Sunday

NFL có nhịp điệu theo tuần mạnh nhất trong tất cả các sports trên Polymarket. Markets mở vào thứ Ba sau các trận của tuần trước, line-shop diễn ra từ thứ Tư đến thứ Sáu, betting volume đạt đỉnh vào thứ Bảy và Chủ nhật. Resolution thường diễn ra vào tối Chủ nhật đối với các trận sớm, và tối thứ Hai đối với trận muộn.

Bot pattern: line-catcher vào thứ Ba-Thứ Tư khi opening line được thiết lập, in-play vào Chủ nhật trong giai đoạn volume cao nhất. Mỗi khung thời gian nên dùng bot khác nhau. Market của Monday Night Football thường có volume mỏng hơn các trận khác - hãy lưu ý vì nó có risk slippage cao hơn khi vào lệnh size nhỏ.

Đỉnh volume là Super Bowl: hơn $50M được trade trên tất cả các SB markets trong tuần diễn ra trận đấu. Ngay cả một bot $100 trong tuần đó cũng chỉ là nhiễu không đáng kể; ở quy mô đó, market đã rất efficient.

NBA (tag 745): in-game microstructure

NBA là sports có tần suất cao nhất trên Polymarket - 25-30 trận mỗi tuần trong mùa regular season, 5-15 trận trong playoffs. Tag ID 745 dùng để filter các event chỉ thuộc NBA.

In-game microstructure hoạt động tốt với NBA vì: (1) ESPN cập nhật scoreboard khoảng mỗi 10 giây, (2) trận đấu kéo dài 2,5 giờ với action liên tục, (3) books của Polymarket cho các trận lớn vẫn giữ độ sâu tốt đến hết hiệp 4.

Chiến lược hiệu quả: subscribe vào WS book của một trận + ESPN feed, phản ứng với imbalance + score events trong 10-15 giây. Chiến lược không hiệu quả: pre-game line catching (đủ efficient để retail không bắt được nhiều), late-game certainty arbitrage (vùng 0.99-trap).

Soccer: international vs club leagues

Soccer trên Polymarket có thể chia thành ba tầng chính.

  • Top European leagues (EPL tag 739, La Liga, Bundesliga, Serie A) - volume trung bình, books sâu ở các trận lớn. Bot strategy tương tự NBA.
  • Champions League / Europa League (UCL tag 2186) - volume đạt đỉnh ở các vòng knock-out. Books sâu nhất từ vòng 16 đội trở đi.
  • International / smaller leagues (Saudi Pro League, MLS, J-League) - books mỏng, spread lớn. Thường không phải vùng dành cho bot.

Scoring rời rạc của soccer (0-1 goals là các biến cố rất lớn) khiến nó khác với dòng chảy liên tục của NBA. Bot pattern cho soccer là: đứng đúng phía trước khi có bàn thắng, thoát nhanh sau khi biến cố xảy ra.

Tennis (tag 864): tournament cadence

Tennis tag 864. ATP và WTA tour diễn ra 11 tháng mỗi năm với Grand Slams vào tháng 1 (Australian Open), tháng 5-6 (French Open), tháng 7 (Wimbledon), và tháng 8-9 (US Open). Volume tập trung vào bốn tuần này cộng thêm loạt Masters 1000.

Tennis có price ladder in-play rõ ràng nhất trong mọi sports (chương 15). Giá giữa trận đi theo các đường cong có thể dự đoán, gắn với trạng thái set và break. Một bot có mô hình price ladder riêng cho tennis có thể phát hiện mispricing theo thời gian thực.

Khoảng thời gian yên ắng: giữa các Grand Slam, những tuần chỉ có giải ATP 250 / ATP 500, books rất mỏng. Hãy tạm dừng bot hoặc chuyển sang sport khác trong các giai đoạn này.

Edge sources that survive

Trên cả bốn sports, những edge tồn tại lâu dài theo thời gian là:

  • Pre-game line shop so với số của một venue sắc hơn (Pinnacle, Betfair). Khi Polymarket lệch hơn 3c so với một sharp book, hãy fade Polymarket.
  • In-play overreaction với một play đơn lẻ (interception, injury, momentum shift). Chờ 30-60 giây sau play, fade nếu market đã đi quá xa.
  • Late-game heavy favorites ở 0.85-0.92 với sizing được quản lý rủi ro. Dưới 0.85 = risk thực sự; trên 0.92 = 0.99 trap.

Những edge không tồn tại lâu: pure technical analysis trên giá, sentiment scraping từ Twitter, các hiệu ứng mùa vụ theo lịch.

Live data: ESPN, official APIs

Ma trận data source cho bốn sports.

SportPrimaryBackupUpdate cadence
NFLESPN scoreboardNFL.com feed~10s during play
NBAESPN scoreboardstats.nba.com~10s during play
Soccer (EPL/UCL)ESPN scoreboardSofaScore~15-30s
Tennis (ATP/WTA)ESPN scoreboardtennis.com live~30s (point-level)

ESPN miễn phí và đáng tin cậy cho cả bốn môn. Với cập nhật dưới 10 giây, hãy trả tiền cho một specialized feed (StatsPerform, GeniusSports) - nhưng cải thiện latency biên thường hiếm khi xứng đáng với chi phí đối với retail.

Sample bot: pre-game line catcher

Reference: pre-game line-catcher pseudocode.

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)

Lưu ý: API của Pinnacle / Betfair yêu cầu tài khoản; không miễn phí. Nếu không có sharp reference, line-catching sẽ chỉ còn là opinion so với opinion, và đó không phải vùng dành cho bot.

Câu hỏi thường gặp

Sport nào có volume lớn nhất trên Polymarket?
Tùy theo mùa. NFL dẫn đầu vào các ngày thi đấu Chủ nhật. NBA (verified tag_id 745) dẫn đầu trong các buổi tối ngày thường của mùa regular season. Soccer (không có tag đơn lẻ nào) dẫn đầu trong các tuần Champions League và World Cup. Tennis (verified tag_id 864) tăng vọt trong các quãng Grand Slam. Bot đa sport sẽ hưởng lợi từ sự luân phiên liên tục này.
Pre-game hay in-game sports markets có lợi nhuận hơn?
Pre-game: dễ định giá hơn (có nhiều thời gian nghiên cứu, ít nhiễu biến động trong trận), nhưng spread chặt hơn và cạnh tranh với sportsbook odds. In-game: khó hơn, cần dữ liệu thời gian thực, nhưng mispricing lớn hơn trong các pha biến động cảm xúc (sau touchdown, sau một cú ném hỏng).
Tôi lấy live sports data đủ nhanh cho bot ở đâu?
Các endpoint JSON không chính thức của ESPN.com cho các môn US major. The-odds-api.com tổng hợp nhiều bookmakers nhưng có rate limit. Sofascore.com có soccer + tennis. Với dữ liệu dưới 1 giây: paid feeds từ Sportradar hoặc BetGenius đạt chuẩn chuyên nghiệp nhưng rất đắt. Phần lớn retail bot có thể sống tốt với ESPN + Twitter beat reporters.
Có nên tin Twitter của beat reporter để lấy tin live không?
Phần lớn là có, nhưng cần lưu ý. Beat reporters thường đăng chấn thương/lineup nhanh hơn ESPN. Tuy nhiên, rate limit của Twitter và việc account bị đình chỉ tạo ra các khoảng trống về độ tin cậy. Best practice: theo dõi 5-10 tài khoản reporter, deduplicate, và yêu cầu 2 nguồn trước khi kích hoạt theo chấn thương.
Sports trên Polymarket so với sportsbook truyền thống thế nào?
Không có vig (so với khoảng 5-10% ở FanDuel/DraftKings) nhưng liquidity mỏng hơn và spread rộng hơn ở các market nhỏ. Với NFL/NBA phổ biến, sportsbook truyền thống thường có chất lượng khớp lệnh tốt hơn. Với niche sports (cricket, rugby, esports), Polymarket thường có edge vì các sportsbook truyền thống định giá thấp hơn giá trị của chúng.
Tôi có thể chạy đồng thời bot cho sports + crypto + politics không?
Có, và đó là cách xây dựng portfolio tốt. Sports, politics và crypto có tương quan thấp - đa dạng hóa giữa chúng giúp làm mượt phương sai PnL hằng ngày. Lưu ý: mỗi strategy cần một risk budget riêng, không dùng chung.