Sports Model
Sports Model computes a quantitative fair-value probability for Polymarket sports markets using an internal power-rating model fed by league APIs (NBA
What it does
Sports Model computes a quantitative fair-value probability for Polymarket sports markets using an internal power-rating model fed by league APIs (NBA, NFL, EPL, ATP/WTA, MLB), lineup and injury data via SportsFeed-Adapter, and weather data for outdoor events. When the CLOB mid-price diverges from the model price by more than min_edge_bps_vs_model, the bot sizes an IOC OrderIntent using a fractional-Kelly position sizing formula (kelly_fraction) bounded by max_per_bet_usd. The bot targets the Apr 2026 $5M pUSD maker rebate pool for sports+esports markets when the edge direction permits maker posting. This is a user-controlled execution tool that automates quantitative sports market trading decisions. No performance claims are made.
Pipeline placement
Applies to: Polymarket sports markets (NBA, NFL, EPL, ATP/WTA, MLB, esports) where internal power-rating model price diverges from C
Why it matters
| If this fails | Consequence |
|---|---|
| Model price computed with stale lineup or injury data | A key player's injury changes the model price substantially. Trading on the stale model produces a position in the wrong direction relative to the true updated probability. |
| Kelly fraction set too high | Fractional Kelly with a high fraction creates large positions that overwhelm the top-of-book depth, causing significant slippage and potentially exceeding the Risk guardrail's position limits. |
| In-play market state not accounted for | For in-play markets, the CLOB price updates continuously with live game state. Trading on a model price calibrated for pre-game conditions during in-play produces systematically mispriced entries. |
| feeRateBps present on signed order (V1 pattern) | CTFExchangeV2 rejects orders with feeRateBps. Fees are operator-set at match time. The signed order must not contain this field. |
Inputs
Polymarket inputs
| Input | Source | Required | Use |
|---|---|---|---|
| Polymarket sports market mid and depth | ws_market (CLOB WebSocket) | required | Compute CLOB mid-price; measure divergence from model price in bps; size order against available depth. |
| In-play market state (where applicable) | ws_sports (Polymarket sports WebSocket) | optional | Detect live game state changes (score, time remaining, possession) that affect model price validity. |
| Market open/closed/resolved status | clob_public | required | Skip markets that are closed, resolved, or halted (in-play pause). |
Internal inputs
| Input | Source | Required | Use |
|---|---|---|---|
| KillSwitch active flag | KillSwitch | required | Abort all intent emission immediately if KillSwitch is active. |
| Power-rating model price (fair-value probability per market) | internal (model engine) | required | Compare model_price against CLOB mid; compute edge_bps = |model_price - clob_mid| * 10000. |
| League APIs (NBA, NFL, EPL, ATP/WTA, MLB) | internal (SportsFeed-Adapter) | required | Current standings, team stats, and match schedules for model calibration. |
| Lineup / injury / weather data via SportsFeed-Adapter | internal (SportsFeed-Adapter) | required | Adjust power-rating model for confirmed lineup changes, injuries, or weather conditions for outdoor events. |
| Builder code bytes32 | internal config | required | Injected into builder field on every signed V2 OrderIntent. Sports maker rebate pool (Apr 2026: $5M pUSD) eligible. |
Authority
What this bot is permitted to do
State
Readiness
Limited live
Status
beta
Class
Alpha Strategy
Default mode
limited_live
Developer owner
Polytraders core — Strategy pod
Capital impact
Direct
Reason codes emitted
| Code | Severity | Meaning | Action |
|---|---|---|---|
| SPORTS_MODEL_EDGE_TRADE | INFO | edge_bps >= min_edge_bps_vs_model, data fresh, drawdown guard clear. IOC OrderIntent emitted. | Emit IOC OrderIntent; update session drawdown tracking. |
| SPORTS_MODEL_NO_EDGE | INFO | edge_bps is below the 50 bps hard floor. Model and CLOB prices are sufficiently aligned. | Skip; emit sampled DecisionReport. |
| SPORTS_MODEL_EDGE_MARGINAL | WARN | edge_bps between 50 and 200 bps. Trade is marginal; Kelly size reduced by 50%. | Emit IOC at 50% Kelly size; log warning. |
| SPORTS_MODEL_STALE_DATA | HARD_REJECT | SportsFeed-Adapter lineup/injury data is more than 30 minutes old. Model may be miscalibrated. | Skip; no OrderIntent emitted. |
| SPORTS_MODEL_DRAWDOWN_GUARD_TRIGGERED | HARD_REJECT | Session mark-to-model drawdown has exceeded drawdown_guard_bps hard limit (1200 bps). All new entries paused. | Skip all markets; emit DecisionReport. |
| SPORTS_MODEL_DRAWDOWN_WARNING | WARN | Session drawdown between 500 and 1200 bps. Kelly fraction reduced to 50%. | Continue trading at 50% Kelly size; log warning. |
| SPORTS_MODEL_HIGH_KELLY | WARN | kelly_fraction config is above the 0.20 warning threshold. Per-trade position size is elevated. | Allow but log warning. |
| STALE_MARKET_DATA | HARD_REJECT | ws_market or ws_sports feed is stale (> 5s). | Skip; no OrderIntent emitted. |
| KILL_SWITCH_ACTIVE | HARD_REJECT | Global kill switch is active. | Skip all markets; no OrderIntents emitted. |
| PARAMETER_CHANGE_REQUIRES_APPROVAL | HARD_REJECT | A config change would push a parameter past its locked hard limit. | Reject config change; do not apply. |
Related bots in Strategy
Used by
Reverse index — strategies that currently reference strat.sports-model. If you change this bot's authority or reason codes, these strategies must re-pass shadow.
| Strategy | State | Activity |
|---|---|---|
| US Elections — sentiment fade | demo-wired | last triggered 36m ago |
Showing 1 of 1 · demo-wired ≠ production-live
Why this matters
Strategy bots does NOT sign, route, or directly submit orders to the chain. Understanding the authority boundary prevents misuse and makes promotion-gate reviews faster and more reliable. View raw spec JSON →