Install
openclaw skills install @diagnostikon/polymarket-ladder-nhl-hockey-traderTrades monotonicity violations in NHL hockey O/U market ladders and spread-vs-total consistency on Polymarket. Each game spawns multiple O/U lines that must be monotonically decreasing — when the ladder is broken, the mispriced line reverts.
openclaw skills install @diagnostikon/polymarket-ladder-nhl-hockey-traderThis is a template. The default signal detects monotonicity violations in NHL hockey O/U ladders and spread-vs-total inconsistencies -- remix it with additional leagues, period-based markets, or live odds feeds. The skill handles all the plumbing (market discovery, ladder grouping, monotonicity checks, spread consistency, trade execution, safeguards). Your agent provides the alpha.
Polymarket lists multiple O/U lines for each NHL game at different totals:
These O/U markets form a ladder that must be monotonically decreasing:
P(O/U 4.5 OVER) >= P(O/U 5.5 OVER) >= P(O/U 6.5 OVER) >= P(O/U 7.5 OVER)
Additionally, spread markets constrain the O/U distribution -- a large spread (one team heavily favored) implies a scoring profile that must be consistent with the total.
This skill reconstructs each game's full ladder and trades where it is mathematically broken.
Within the same game, the probability of going OVER must decrease as the line increases. If a higher line is priced above a lower line, the curve is broken -- pure structural arbitrage:
If P(O/U 5.5 OVER) > P(O/U 4.5 OVER):
Buy YES on O/U 4.5 (underpriced)
Buy NO on O/U 5.5 (overpriced)
This also checks non-adjacent pairs (e.g., O/U 7.5 vs O/U 4.5) for larger violations that span multiple rungs of the ladder.
A large spread implies one team is heavily favored, which shifts the expected scoring distribution:
When the O/U curve is inconsistent with the spread, the total is likely mispriced.
get_markets(limit=200) if keyword search yields few resultsYES_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_VIOLATION | 0.05 | Min ladder violation magnitude to trigger a trade |
Traditional sportsbooks have professional line-setters who enforce consistency across all O/U lines for the same game. Polymarket has no such mechanism -- each O/U market (4.5, 5.5, 6.5, 7.5) is priced by its own order book with its own liquidity pool. This creates systematic micro-inconsistencies in the implied scoring distribution, especially when:
This skill treats the full O/U ladder as a consistency curve and trades the repair.
simmer-sdk by Simmer Markets (SpartanLabsXyz)