⚠ INTERNAL — Operator UX mock · Design preview of V2 development path · demo-wired ≠ production-live · back to dev guide
Polygon · pUSD 10
📓 Developer Guide 📋 Reason Codes 📈 Shadow Mode
JD John Doe · Admin

Sports Model

strat.sports-model
Strategy beta Limited live frozen

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

runs after: SportsFeed-Adapter model price feed + Market scanner Sports Model runs before: Risk guardrail pipeline

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 failsConsequence
Model price computed with stale lineup or injury dataA 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 highFractional 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 forFor 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

InputSourceRequiredUse
Polymarket sports market mid and depthws_market (CLOB WebSocket)requiredCompute 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)optionalDetect live game state changes (score, time remaining, possession) that affect model price validity.
Market open/closed/resolved statusclob_publicrequiredSkip markets that are closed, resolved, or halted (in-play pause).

Internal inputs

InputSourceRequiredUse
KillSwitch active flagKillSwitchrequiredAbort all intent emission immediately if KillSwitch is active.
Power-rating model price (fair-value probability per market)internal (model engine)requiredCompare model_price against CLOB mid; compute edge_bps = |model_price - clob_mid| * 10000.
League APIs (NBA, NFL, EPL, ATP/WTA, MLB)internal (SportsFeed-Adapter)requiredCurrent standings, team stats, and match schedules for model calibration.
Lineup / injury / weather data via SportsFeed-Adapterinternal (SportsFeed-Adapter)requiredAdjust power-rating model for confirmed lineup changes, injuries, or weather conditions for outdoor events.
Builder code bytes32internal configrequiredInjected 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

Trade

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

CodeSeverityMeaningAction
SPORTS_MODEL_EDGE_TRADEINFOedge_bps >= min_edge_bps_vs_model, data fresh, drawdown guard clear. IOC OrderIntent emitted.Emit IOC OrderIntent; update session drawdown tracking.
SPORTS_MODEL_NO_EDGEINFOedge_bps is below the 50 bps hard floor. Model and CLOB prices are sufficiently aligned.Skip; emit sampled DecisionReport.
SPORTS_MODEL_EDGE_MARGINALWARNedge_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_DATAHARD_REJECTSportsFeed-Adapter lineup/injury data is more than 30 minutes old. Model may be miscalibrated.Skip; no OrderIntent emitted.
SPORTS_MODEL_DRAWDOWN_GUARD_TRIGGEREDHARD_REJECTSession 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_WARNINGWARNSession drawdown between 500 and 1200 bps. Kelly fraction reduced to 50%.Continue trading at 50% Kelly size; log warning.
SPORTS_MODEL_HIGH_KELLYWARNkelly_fraction config is above the 0.20 warning threshold. Per-trade position size is elevated.Allow but log warning.
STALE_MARKET_DATAHARD_REJECTws_market or ws_sports feed is stale (> 5s).Skip; no OrderIntent emitted.
KILL_SWITCH_ACTIVEHARD_REJECTGlobal kill switch is active.Skip all markets; no OrderIntents emitted.
PARAMETER_CHANGE_REQUIRES_APPROVALHARD_REJECTA config change would push a parameter past its locked hard limit.Reject config change; do not apply.

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.

StrategyStateActivity
US Elections — sentiment fadedemo-wiredlast 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 →
Polytraders Operator UX Mock · INTERNAL · demo-wired ≠ production-live · the plan · reason codes · shadow-mode pipeline
⚙ Page Configuration
Current page settings
Loading configuration…