Polymarket Ladder Nhl Hockey Trader
by @diagnostikon
Trades 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...
clawhub install polymarket-ladder-nhl-hockey-traderπ About This Skill
name: polymarket-ladder-nhl-hockey-trader description: Trades 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. metadata: author: Diagnostikon owner: Diagnostikon version: "1.0.0" displayName: Ladder NHL Hockey Curve Trader difficulty: advanced
Ladder β NHL Hockey Curve Trader
> This 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.
Strategy Overview
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.
The Edge: NHL Ladder Arbitrage
Violation Type 1: O/U Monotonicity
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.
Violation Type 2: Spread-vs-Total Consistency
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.
Why This Works
1. Retail trades in silos -- most users bet on individual O/U lines without cross-referencing the full ladder 2. No market maker enforcement -- unlike sportsbooks, there is no central entity maintaining consistency across O/U lines for the same game 3. Mathematical, not opinion -- monotonicity violations are provable inconsistencies in the implied probability distribution 4. NHL-specific density -- NHL games generate multiple O/U lines (4.5, 5.5, 6.5, 7.5) plus spread markets, creating a rich surface for inconsistencies 5. Injury and lineup news -- goalie changes and late scratches move individual lines without propagating to the full ladder
Signal Logic
1. Discover all NHL-related markets via keyword search (team names, "NHL", "hockey", "O/U")
2. Fallback to get_markets(limit=200) if keyword search yields few results
3. Parse each question: extract (game_key, ou_line) for O/U markets; (game_key, spread_team, spread_value) for spread markets
4. Filter with NHL team regex, exclude non-hockey matches
5. Group O/U markets into ladders by game_key
6. Match spread markets to game ladders by team name overlap
7. For each game ladder with 2+ O/U markets:
- Check monotonicity: P(OVER) must decrease as line increases
- Check non-adjacent pairs for larger violations
8. For games with spread + O/U markets:
- Check spread-vs-total consistency
9. Rank violations by magnitude
10. Trade only violations that also pass threshold gates (YES_THRESHOLD / NO_THRESHOLD)
11. Size by conviction, not flat amount
Remix Signal Ideas
Safety & Execution Mode
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.
Required Credentials
| Variable | Required | Notes |
|---|---|---|
| SIMMER_API_KEY | Yes | Trading authority. Treat as a high-value credential. |
Tunables (Risk Parameters)
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 |
Edge Thesis
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.
Dependency
simmer-sdk by Simmer Markets (SpartanLabsXyz)