Polymarket Bot Tutorial · Глава 25 из 32
Sports market bots на Polymarket: NFL weekly games, NBA tag (745) microstructure, soccer (Premier League, Bundesliga, Champions League), tennis (864) - liquidity, источники edge, code patterns.
Что охватывает эта глава
NFL, NBA, Soccer и Tennis - крупнейшие по объему sports-категории на Polymarket. У каждой свой доступ к data, cadence и profile edge. В этой главе рассматриваются league-specific bot patterns и tag IDs, по которым нужно фильтровать.
- NFL: weekly cadence, пик liquidity в Sunday
- NBA (tag 745): in-game microstructure
- Soccer: international vs club leagues
- Tennis (tag 864): tournament cadence
- Источники edge, которые сохраняются
- Live data: ESPN, official APIs
- Sample bot: pre-game line catcher
NFL: weekly cadence, пик liquidity в Sunday
NFL имеет самый выраженный weekly rhythm среди всех sports на Polymarket. Markets открываются во вторник после игр предыдущей недели, line shopping происходит со среды по пятницу, betting volume достигает пика в Saturday-Sunday. Resolution обычно в Sunday night для ранних игр и в Monday night для поздней.
Bot pattern: line-catcher во вторник-среду, когда задается opening line, и in-play в Sunday во время пикового volume. Для каждого окна нужен отдельный bot. Market Monday Night Football часто имеет более тонкий volume, чем другие игры - учитывайте повышенный риск slippage при небольших входах.
Пик volume приходится на Super Bowl: более $50M traded across all SB markets в неделю игры. Даже bot на $100 в эту неделю - незначительный шум; на таком масштабе market efficient.
NBA (tag 745): in-game microstructure
NBA - самый high-frequency sport на Polymarket: 25-30 games в неделю в regular season, 5-15 в playoffs. Tag ID 745 фильтрует события только по NBA.
In-game microstructure работает в NBA, потому что: (1) ESPN обновляет scoreboards примерно каждые ~10s, (2) games длятся 2.5 hours continuous action, (3) Polymarket books для крупных games остаются deep до 4th quarter.
Рабочая strategy: подписаться на WS book игры + ESPN feed и реагировать на imbalance + score events за 10-15 seconds. Нерабочие стратегии: pre-game line catching (достаточно efficient, retail ловит мало), late-game certainty arbitrage (территория 0.99-trap).
Soccer: international vs club leagues
Soccer на Polymarket делится на три условных tier.
- Top European leagues (EPL tag 739, La Liga, Bundesliga, Serie A) - moderate volume, deep books на крупных матчах. Bot strategies похожи на NBA.
- Champions League / Europa League (UCL tag 2186) - пик volume на knockout stages. Books самые глубокие начиная с round-of-16.
- International / smaller leagues (Saudi Pro League, MLS, J-League) - thin books, большие spreads. Обычно не территория bot.
Дискретное scoring в soccer (0-1 goals - это огромные события) делает его отличным от continuous flow NBA. Bot pattern для soccer: быть на правильной стороне до гола и быстро выходить после срабатывания события.
Tennis (tag 864): tournament cadence
Tennis tag 864. ATP и WTA tours играют 11 месяцев в году, а Grand Slams проходят в Jan (Australian Open), May-Jun (French Open), Jul (Wimbledon) и Aug-Sep (US Open). Volume концентрируется в эти четыре недели плюс в серии Masters 1000.
Tennis имеет самые чистые in-play price ladders среди всех sports (chapter 15). Mid-match prices следуют предсказуемым curves, привязанным к состояниям set-and-break. Bot с tennis-specific price ladder model может в real time обнаруживать mispricing.
Тихие окна: между Grand Slams, в недели только с турнирами ATP 250 / ATP 500 books очень thin. В такие периоды лучше поставить bot на паузу или переключиться на другой sport.
Источники edge, которые сохраняются
Across all four sports, edge, которые сохраняются со временем, это:
- Pre-game line shop против более sharp venue's number (Pinnacle, Betfair). Когда Polymarket расходится с sharp book более чем на > 3c, фейдьте Polymarket.
- In-play overreaction на одно play (interception, injury, momentum shift). Подождите 30-60 seconds после play, затем фейдьте, если market ушел слишком далеко.
- Late-game heavy favorites at 0.85-0.92 с risk-managed sizing. Ниже 0.85 = реальный risk; выше 0.92 = 0.99 trap.
Edge, которые не сохраняются: pure technical analysis по prices, sentiment scraping из Twitter, calendar-based seasonal effects.
Live data: ESPN, official APIs
Data source matrix для четырех sports.
| 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 бесплатен и надежен для всех четырех. Для обновлений быстрее 10s можно платить за specialized feed (StatsPerform, GeniusSports) - но marginal latency improvement редко оправдывает cost для 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)
Caveats: Pinnacle / Betfair APIs require accounts; not free. Без sharp reference line-catching сводится к opinion vs opinion, а это уже не territory bot.





