Install
openclaw skills install @diagnostikon/polymarket-bundle-dota2-props-traderTrades bundle inconsistencies across correlated Dota 2 match props on Polymarket. A single match spawns 28+ prop markets (kills O/U, roshan, barracks, rampage, first blood, ultra kill, daytime) that are fundamentally correlated -- high-kill games have more roshan fights, more barracks destroyed, more rampages. When one prop implies high action but another implies low, this skill detects the inconsistency and trades the outlier toward the action-score consensus. Conviction scales with inconsistency magnitude.
openclaw skills install @diagnostikon/polymarket-bundle-dota2-props-traderThis is a template. The default signal detects action-score inconsistencies across correlated Dota 2 match props -- remix it with OpenDota API data, hero draft analysis, or live match feeds. The skill handles all the plumbing (market discovery, prop parsing, bundle grouping, inconsistency detection, trade execution, safeguards). Your agent provides the alpha.
A single Dota 2 match on Polymarket spawns 28+ prop markets:
These props are fundamentally correlated. High-kill games feature more teamfights, which means more roshan contests, more barracks pushes, more multi-kill sprees. When the kills O/U market implies a high-action game but another prop implies low action, the bundle is internally inconsistent -- and one of them is wrong.
Polymarket prices each prop in isolation via its own order book. There is no mechanism to enforce cross-prop consistency the way a professional sportsbook would. This creates systematic mispricings:
get_markets(limit=200) as primary discovery (Dota markets often missed by find_markets) + keyword search supplementkills_ou (with threshold), roshan, barracks, rampage, first_blood, ultra_kill, daytimeMIN_INCONSISTENCY (default 10%)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 | 3000 | Min market volume filter (USD) |
SIMMER_MAX_SPREAD | 0.10 | Max bid-ask spread |
SIMMER_MIN_DAYS | 0 | Min days until resolution (0 = allow same-day) |
SIMMER_MAX_POSITIONS | 10 | 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.10 | Min action-score inconsistency to trigger a trade |
Professional sportsbooks employ traders who ensure cross-prop consistency: if the kills line moves, the roshan and barracks lines adjust automatically. Polymarket has no such mechanism. Each prop market is its own independent order book with its own participants, most of whom are betting on a single prop without considering the bundle. This creates persistent, exploitable inconsistencies that reform every time a new Dota 2 match is listed. The skill treats the kills O/U probability as the action-score anchor (most liquid, best-priced) and trades the outlier props back toward consistency.
simmer-sdk by Simmer Markets (SpartanLabsXyz)