Install
openclaw skills install polymarket-sports-liveExploits price lag between ESPN real-time scores and Polymarket sports markets. Uses Gaussian win-probability models for NBA/NFL/NHL and Poisson for soccer to calculate fair odds from live game state. Trades when model probability diverges more than 10% from Polymarket price.
openclaw skills install polymarket-sports-liveReal-time live score arbitrage against Polymarket sports markets using ESPN data.
Every 2 minutes, pulls live scores from ESPN's public API and calculates fair win probabilities using sport-specific statistical models:
| Sport | Model | Key Parameter |
|---|---|---|
| NBA | Gaussian | sigma = 12.5 points |
| NFL | Gaussian | sigma = 13.5 points |
| NHL | Gaussian | sigma = 1.5 goals |
| Soccer | Poisson | lambda = 1.35 goals/90min |
Gaussian model: P(win) = CDF(lead / (sigma * sqrt(t_remaining / T)))
Poisson model: Calculates expected goals from current rate, sums probability of all winning scorelines.
Polymarket prices update slowly during live games - often 30-120 seconds behind real scoring events. ESPN's API updates near-instantly. This latency gap is the edge.
Runs every 2 minutes via cron (*/2 * * * *). Managed automaton (auto-executes on schedule).
Only trades when divergence exceeds 10%.
pip dependencies: simmer-sdk, requests
Environment variables:
SIMMER_API_KEY (required) - get from simmer.markets/dashboardTRADING_VENUE (optional) - defaults to sim for paper trading, set to polymarket for realSPORTS_DIVERGENCE_THRESHOLD (optional) - minimum divergence to trigger trade, defaults to 0.10 (10%)SPORTS_TRADE_SIZE (optional) - trade size in USD, defaults to 20.0python sports_live.py # dry run (default, no trades)
python sports_live.py --live # real trades via SimmerClient
python sports_live.py --live --quiet # cron mode
Dry-run by default. Pass
--liveto execute real trades.
sports_live.py fetches live scores from ESPN public API (no auth needed)SimmerClient.find_markets()--live: calls SimmerClient.trade() with market_id, side, amount, reasoningSimmerClient.trade() only. No direct CLOB or wallet access.SIMMER_API_KEY and optionally TRADING_VENUE from env. No other secrets.--live flag must be explicitly passed to execute trades.Remixable Template: Fork this skill to adjust sigma values, add new sports (MLB, tennis), change the divergence threshold, or plug in different live score sources.