Polymarket Bot Tutorial · Kabanata 15 ng 32

Sports microstructure bots sa Polymarket: in-game edge, scoreline-driven mispricing, ang NBA tag (745) at Tennis tag (864), live data sources, at execution patterns para sa high-frequency sports markets.

Ano ang sinasaklaw ng kabanatang ito

Ang sports markets ay ang pinaka-consistent na active non-political segment sa Polymarket. Ang mga bots na gumagana ay nahahati sa dalawang malinaw na buckets: pre-game line-catchers na nag-trade kapag naka-set na ang line, at in-game microstructure bots na nag-react sa order-book movement habang naglalaro. Sinasaklaw ng kabanatang ito ang pareho na may specific tag IDs, data sources, at latency budgets na nalalapat sa bawat isa.

Ang sports markets ay ang pinaka-abala na non-political segment sa Polymarket. Ang execution pattern na gumagana ay nagsasama ng live-score feed (ESPN, PandaScore) sa order-book microstructure signals. Sinasaklaw ng kabanatang ito kung ano ang gumagana para sa NFL, NBA, soccer, at tennis nang partikular, at kung saan naiiba ang esports.

  • Bakit tradeable ang sports markets
  • Pre-game vs in-game (magkaibang bots)
  • Verified tag IDs (745 NBA, 864 Tennis)
  • Data sources: ESPN, official APIs, on-screen
  • Latency budget para sa in-game
  • Ang 0.99 / 0.01 trap
  • Code: mag-subscribe sa games book at mag-react

Bakit tradeable ang sports markets

Ang sports markets ay nag-cle-clear sa defined timeframes (oras hanggang araw), may public live data, at nakakaakit ng tuloy-tuloy na order flow sa panahon ng mga laro. Lahat ng tatlo ay kinakailangan para sa tradeable market - ang political markets ay nawawalan ng "defined timeframe," ang weather markets ay nawawalan ng "continuous flow," ang obscure tournaments ay nawawalan ng "public live data."

Ang trader population sa sports markets ay mas magkakaiba din kaysa sa, halimbawa, election markets. Ang casual sports bettors ay nag-price emotionally; ang informed traders ay nag-correct papunta sa fair value sa kurso ng laro. Ang gap sa pagitan ng dalawa ay ang bot edge.

Hindi pantay ang volume distribution: ang NFL Sunday ay magro-rotate ng daan-daang milyong dolyar sa Polymarket sports markets; ang Tuesday-night Saudi Pro League fixture ay maaaring gumawa ng wala pang $50k. Sukatin ang iyong strategy kung saan talaga ang aksyon.

Pre-game vs in-game (magkaibang bots)

Dalawang pundamental na magkaibang bot designs.

Pre-game line-catcher: i-scan ang markets na kabubukas pa lang, i-identify ang mis-priced lines laban sa iyong model o laban sa numero ng mas matalim na venue, maglagay ng FOK buy. Hawakan sa in-play, minsan hanggang sa resolution. Speed: minuto-hindi-segundo. Edge: model + line-shopping.

In-game microstructure: mag-subscribe sa live game's order book WebSocket, mag-react sa imbalance signals + score events sa loob ng ilang segundo. Speed: segundo-hindi-minuto. Edge: latency + pagbasa ng order flow.

Ang dalawa ay walang halos shared code. Mayroon silang magkaibang risk profiles, magkaibang data sources, magkaibang exit strategies. Ang bot na nagtatangkang gawin ang pareho ay nauuwi sa hindi paggawa ng alinman nang maayos; pumili ng isa.

Verified tag IDs (745 NBA, 864 Tennis)

Production tag IDs verified Mayo 2026 para sa major sports categories. Gamitin ang mga ito upang mag-filter ng /events calls nang efficient.

Sport / LeagueTag IDTag slugNotes
NBA745nbapinakamataas na volume Oct-Jun
NFL450nflpeak Sun/Mon Sep-Feb
Tennis (lahat)864tennisbuong taon, tournament cadence
Soccer (general)1059soccerpagsamahin sa sub-tags sa ibaba
EPL739epl
UCL2186uefa-champions-league
Esports (lahat)702esportsLoL+CS2+Valorant+Dota
MLB1245mlbpeak Apr-Oct
NHL823nhlpeak Oct-Jun

Ang tag IDs ay matatag sa kabuuan ng mga taon. Ang mga bagong tags ay idinaragdag (Saudi Pro League, IPL) ngunit ang mga lumang tags ay hindi na-renumber.

Data sources: ESPN, official APIs, on-screen

Para sa traditional sports ang libreng ESPN scoreboard API ay sumasaklaw sa lahat ng kailangan mo: scores, period/clock, win-probability, minsan shot location. Walang key na kinakailangan; rate-limited lamang sa IP level. Endpoint pattern: https://site.api.espn.com/apis/site/v2/sports/<sport>/<league>/scoreboard.

Para sa esports, ang ESPN ay walang coverage. Mga opsyon: PandaScore ($30-60/buwan, industry standard), HLTV (CS2 lamang, scrapeable, walang API), Liquipedia (community-maintained, scrapeable, mas mabagal ang update cadence).

Ang on-screen feeds (pagbabayad para sa TV stream at OCR-reading ang scorebug) ay gumagana ngunit operationally heavy. Inirerekomenda lamang kung mayroon kang strategy na nangangailangan ng sub-3-second updates sa isang sport na walang API na sumasaklaw sa real time.

Latency budget para sa in-game

Ang end-to-end latency budget para sa in-game reactive bot.

  • Nangyayari ang score event: t=0
  • Source feed nagre-reflect: t+3-15s (ESPN: ~10s; PandaScore: ~3s)
  • Binabasa ng iyong bot ang feed: t+10-16s
  • Nagdedesisyon ang bot ng action: +50ms
  • Inilagay ang FOK order: +200-500ms
  • Naka-match sa CLOB: +300-1000ms (network + matching)

Total: 11-17 segundo. Ang pinakamabilis na professional firms ay nakakamit ng 3-5 segundo end-to-end na may paid premium feeds at co-located VPS. Ang retail bots na tumatakbo sa standard hosts at libreng ESPN ay nasa mas mabagal na dulo.

Ang mga strategies na nangangailangan ng sub-5s ay hindi viable para sa retail. Ang mga strategies na gumagana sa 10-17s window ay: line-catching pagkatapos ng score, fading overreactions, late-game certainty plays.

Ang 0.99 / 0.01 trap

Ang pinakakaraniwang in-play sports bot failure: pagbili ng heavy favorite sa 0.99 na may isang minuto natitira, na inaasahan ang madaling +1¢. Tatlong dahilan kung bakit ito nabigo.

Una, ang 1% implied probability ng underdog ay hindi zero - ang late comebacks ay nangyayari sa hindi-trivial na frequency. Ang 99.5% certain win, nilaro ng 200 beses, ay gumagawa ng isang pagkawala para sa full position size.

Pangalawa, ang spread sa 0.99/0.01 ay nangangahulugang nagbabayad ka ng 99c bawat share, panalo ng 1c sa tagumpay, talo ng 99c sa bihirang reversal. Ang risk-reward ay brutal.

Pangatlo, ang bot na gumagamit ng GTC sell sa 0.999 ay bihira mag-fill - walang buyers sa presyong iyon. Ang position ay sumasakay sa resolution. Kung manalo, nakakuha ka ng 1c. Kung mangyari ang reversal, mawawalan ka ng 99c.

Ang trap ay totoong pera na nawala ng mga builders na hindi nagpatakbo ng math. Manatiling malayo sa 0.95+ priced markets maliban kung ang iyong strategy ay partikular na binuo para sa redemption-arbitrage profile.

Code: mag-subscribe sa games book at mag-react

Reference: mag-subscribe sa specific NBA game's WebSocket, mag-log ng book updates, mag-fire ng FOK sa imbalance signal.

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 additions: cooldown sa pagitan ng fires, per-token inventory cap, kill sa stale book (walang mensahe sa 30s).

Mga madalas na tanong

Anong sports tags ang pinaka-aktibo sa Polymarket?
Ang NBA (tag_id 745), Tennis (tag_id 864), at soccer (nag-iiba ayon sa competition) ay nangunguna sa 24h volume sa panahon ng kanilang seasons. Ang NFL ay tumataas linggo-linggo sa regular season at playoffs. Na-verify namin ang NBA at Tennis tag IDs sa production - dapat suriin ang iba sa gamma /tags endpoint bago umasa sa kanila.
Maaari ba akong mag-bot ng in-game sports markets nang kumikita?
Posible - ngunit mahirap. Ang edge ay totoo (ang live scoreline ay madalas na mali ang presyo sa loob ng 30-90 segundo) ngunit may ibang bots din na nanonood. Pinakamahusay na resulta na nakita namin ay nanggaling sa pagsasama ng mabilis na live-score data source na may simpleng mga rules ("nag-score ang opponent, hindi pa nakakalipat ang market, bumili"). Ang purong stat-arb na walang data source ay natatalo sa mas mabilis na competitors.
Saan ako kukuha ng live sports data?
Ang ESPN.com ay may unofficial JSON endpoints na nagbabalik ng live scores - sapat na para sa maraming strategies. Ang official APIs (NBA Stats API, NFL public endpoints) ay mas maaasahan ngunit mas mabagal. Ang Twitter accounts ng beat reporters ay nagbibigay ng text ngunit nangangailangan ng LLM parsing. Wala sa kanila ay HFT-grade; lahat ay "sapat na mabilis" para sa retail.
Ano ang 0.99 / 0.01 trap?
Kapag ang sports market ay nasa 99 cents YES (napakalamang nanalo), halos walang upside na natitira at ang 1-cent move ay maaaring mag-wipe ng inaasahang gain ng ilang buwan. Maraming bots ang nahuhuli sa pagbili sa 0.99 na hinahabol ang huling cent at nasasaktan kapag ang hindi inaasahang kaganapan ay nagpababa ng presyo sa 0.85. Hard rule: huwag bumili sa itaas ng ~0.95 maliban kung ang iyong expected value math ay bulletproof.
Paano naghahambing ang Polymarket sports sa traditional sportsbooks?
Walang house edge sa spread (vs ~5-10% vig sa FanDuel/DraftKings), ngunit ang liquidity ay mas manipis at ang spreads ay maaaring mas malapad. Ang Polymarket ay nakakahigit para sa events na ang traditional books ay nag-underprice - international tournaments, esports, niche markets. Para sa mainstream NFL/NBA, ang traditional books ay mas liquid ngunit mas mahal sa vig.
Maaari ba ang aking bot ay mag-trade sa maraming sports markets nang sabay-sabay?
Oo - at dapat. Ang sports microstructure ay pinakamahusay na gumagana bilang portfolio ng 5-20 sabay-sabay na games. Per-game position cap (e.g. 50 USD), portfolio cap (e.g. 500 USD), at uncorrelated exposure sa kabuuan ng games. Ang concentrating sa isang game ay nagma-max out ng variance.