Install
openclaw skills install polymarket-24h-nba-game-structure-traderTrades structural inconsistencies across correlated NBA game markets on Polymarket by grouping moneyline, spread, O/U (full-game and 1H), and 1H moneyline markets for the same game and detecting cross-market mispricings including monotonicity violations, 1H-vs-full divergences, and spread-moneyline directional conflicts.
openclaw skills install polymarket-24h-nba-game-structure-traderThis is a template. The default signal detects structural inconsistencies across correlated NBA game markets -- remix it with additional sports, league-specific heuristics, or live odds feeds. The skill handles all the plumbing (market discovery, game grouping, cross-market checks, trade execution, safeguards). Your agent provides the alpha.
Polymarket lists multiple correlated markets for each NBA game:
Retail trades each market as an isolated bet. But together, these markets form a structural web that must be internally consistent.
This skill reconstructs the full game structure and finds where it is mathematically broken.
If the full-game moneyline says a team is an 80% favorite, the 1H moneyline cannot be a coin-flip. The expected 1H advantage is dampened but must exist:
If ML_full > 70%, then ML_1h > 50% + (ML_full - 50%) * dampening
When the 1H moneyline diverges too far from what the full-game moneyline implies, the 1H market is mispriced.
Within the same game, the probability of going OVER must decrease as the line increases:
P(O/U 235.5 OVER) >= P(O/U 236.5 OVER) >= P(O/U 237.5 OVER)
If a higher line is priced above a lower line, the curve is broken -- pure structural arbitrage.
At the same line value, the full-game total always exceeds the 1H total, so:
P(Full O/U X OVER) >= P(1H O/U X OVER)
If a 1H O/U market is priced higher than the equivalent full-game O/U market, the relationship is violated.
The spread favorite (negative line) must be the moneyline favorite. If the spread says Clippers (-8.5) but the moneyline says Pacers are favored, the markets contradict each other.
YES_THRESHOLD / NO_THRESHOLD)The skill defaults to paper trading (venue="sim"). Real trades only with --live flag.
| Scenario | Mode | Financial risk |
|---|---|---|
python trader.py | Paper (sim) | None |
| Cron / automaton | Paper (sim) | None |
python trader.py --live | Live (polymarket) | Real USDC |
autostart: false and cron: null mean nothing runs automatically until configured in Simmer UI.
| Variable | Required | Notes |
|---|---|---|
SIMMER_API_KEY | Yes | Trading authority. Treat as a high-value credential. |
All declared as tunables in clawhub.json and adjustable from the Simmer UI.
| Variable | Default | Purpose |
|---|---|---|
SIMMER_MAX_POSITION | 40 | Max USDC per trade at full conviction |
SIMMER_MIN_TRADE | 5 | Floor for any trade |
SIMMER_MIN_VOLUME | 5000 | Min market volume filter (USD) |
SIMMER_MAX_SPREAD | 0.08 | Max bid-ask spread |
SIMMER_MIN_DAYS | 0 | Min days until resolution (0 = allow same-day) |
SIMMER_MAX_POSITIONS | 8 | Max concurrent open positions |
SIMMER_YES_THRESHOLD | 0.38 | Buy YES only if market probability <= this |
SIMMER_NO_THRESHOLD | 0.62 | Sell NO only if market probability >= this |
SIMMER_MIN_INCONSISTENCY | 0.05 | Min structural inconsistency magnitude to trigger a trade |
Traditional sportsbooks have professional line-setters who enforce consistency across all markets for the same game. Polymarket has no such mechanism -- each market (moneyline, spread, O/U, 1H variants) is priced by its own order book with its own liquidity pool. This creates systematic micro-inconsistencies in the implied game model, especially when:
This skill treats the full game structure as a consistency web and trades the repair.
simmer-sdk by Simmer Markets (SpartanLabsXyz)