Polymarket Bundle Dota2 Bo3 Trader

v0.0.2

Trades structural inconsistencies between Dota 2 BO3 winner, individual game winners, and game handicap markets on Polymarket. P(BO3 win) must equal f(P(Game...

0· 113·0 current·0 all-time
Security Scan
Capability signals
CryptoRequires sensitive credentials
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the code and SKILL.md: the skill discovers Polymarket Dota 2 markets, computes implied BO3 probabilities, and sizes trades. The declared dependency (simmer-sdk) and required env var (SIMMER_API_KEY) are appropriate for a trading automation that uses the Simmer platform.
Instruction Scope
SKILL.md and trader.py limit actions to market discovery, parsing, inconsistency detection, paper trading by default, and live execution only with an explicit --live flag. There are no instructions to read unrelated files or exfiltrate data. The doc does mention optional integrations (OpenDota, PandaScore) as remix ideas; those are not required by the shipped code.
Install Mechanism
No network-download install is embedded in the bundle. clawhub.json lists a pip dependency (simmer-sdk), which is expected and traceable; there are no obscure URLs or archive extracts in the package.
Credentials
The only required secret is SIMMER_API_KEY, which is proportionate because it grants trading authority to the Simmer client. The skill also reads optional SIMMER_* tunables from the environment; these are configuration parameters rather than unrelated credentials. Note: if you add any of the optional remix integrations (OpenDota, PandaScore, etc.) you'll likely need additional API keys.
Persistence & Privilege
always:false and autostart:false mean the skill is not force-enabled; automaton.managed with an entrypoint is normal for a runnable trader. The skill can be invoked autonomously (disable-model-invocation not set), which is expected for trading automations — be aware autonomous trading plus a live API key increases blast radius if misconfigured.
Assessment
This skill appears coherent and intended for trading on Polymarket via the Simmer platform. Before enabling live trading: 1) keep the SIMMER_API_KEY secret — it grants trading authority; test extensively in paper mode (default) and only run with --live after you review tunables (max position, min trade, thresholds). 2) Inspect and vet the simmer-sdk package and your runtime environment (rotate keys if leaked). 3) If you enable any remix integrations (OpenDota, PandaScore), only provide the additional API keys you trust and understand, since those add network access and credential scope. 4) Consider limiting automation/autonomy until you’ve validated behavior in paper mode and set conservative risk limits.

Like a lobster shell, security has layers — review code before you run it.

latestvk97cbj4nnwm0c41sj6rdb25ns5853vfm
113downloads
0stars
3versions
Updated 22h ago
v0.0.2
MIT-0

Bundle -- Dota 2 BO3 Structure Trader

This is a template. The default signal is structural inconsistency detection between BO3 winner, game winner, and handicap markets -- remix it with Elo ratings, draft data, or live match feeds. The skill handles all the plumbing (market discovery, match grouping, trade execution, safeguards). Your agent provides the alpha.

Strategy Overview

Dota 2 BO3 matches spawn multiple related markets on Polymarket: the overall BO3 winner, individual Game 1/2/3 winners, and game handicap lines (-1.5 / +1.5). These markets must be structurally consistent -- the BO3 win probability is a mathematical function of the individual game probabilities. When they diverge, it is pure structural arbitrage.

Example: If P(Team A wins Game 1) = 60% and P(Team A wins Game 2) = 55%, then P(Team A wins BO3) should be approximately 70%. If the BO3 market prices Team A at 55%, it is underpriced by 15%.

Edge

Each market in a Dota 2 BO3 bundle is priced by its own independent order book. Retail participants trade each market in isolation -- they bet on "Team A wins Game 1" without considering how that price constrains the BO3 winner or handicap markets. Professional sportsbooks enforce consistency across related lines; Polymarket does not. The result is persistent structural inconsistencies between mathematically linked markets.

Signal Logic

  1. Discover active Dota 2 markets via keyword search + get_markets(limit=200) as primary fallback
  2. Parse each question to extract:
    • "Dota 2: Team A vs Team B - Game N Winner" -> (match_key, game_number)
    • "Dota 2: Team A vs Team B (BO3)" -> (match_key, bo3_winner)
    • "Game Handicap: Team A (-1.5) vs Team B (+1.5)" -> (match_key, handicap_team, handicap_value)
  3. Group by match_key
  4. For each match with BO3 + game winners:
    • Calculate implied BO3 from game probabilities: P(BO3) = P(G1)*P(G2) + P(G1)*(1-P(G2))*P(G3) + (1-P(G1))*P(G2)*P(G3)
    • Compare implied BO3 to market BO3 price
    • Check handicap consistency: P(handicap -1.5 covers) ~ P(G1) * P(G2) (must win both games for 2-0)
  5. Trade inconsistencies exceeding SIMMER_MIN_INCONSISTENCY (default 8%)
  6. Size by conviction (inconsistency magnitude), not flat amount

Remix Signal Ideas

  • OpenDota API: Pull team Elo ratings and recent match history -- compare Elo-implied game win probabilities to market prices for an additional edge layer
  • Draft-phase data: Dota 2 drafts dramatically affect game-level win probability -- if a team drafts a late-game composition, their Game 1 probability drops but Game 3 rises, creating systematic mispricing in early-game markets
  • PandaScore live feed: Stream real-time match data during a BO3 -- after Game 1 result is known, Game 2/3 and BO3 markets should adjust instantly but often lag by minutes
  • Hero win rate data: Cross-reference the drafted heroes against Dotabuff/OpenDota hero win rates for the current patch to estimate game-level probabilities more accurately than market prices reflect

Safety & Execution Mode

The skill defaults to paper trading (venue="sim"). Real trades only with --live flag.

ScenarioModeFinancial risk
python trader.pyPaper (sim)None
Cron / automatonPaper (sim)None
python trader.py --liveLive (polymarket)Real USDC

autostart: false and cron: null mean nothing runs automatically until configured in Simmer UI.

Required Credentials

VariableRequiredNotes
SIMMER_API_KEYYesTrading authority. Treat as a high-value credential.

Tunables (Risk Parameters)

All declared as tunables in clawhub.json and adjustable from the Simmer UI.

VariableDefaultPurpose
SIMMER_MAX_POSITION40Max USDC per trade at full conviction
SIMMER_MIN_TRADE5Floor for any trade
SIMMER_MIN_VOLUME5000Min market volume filter (USD)
SIMMER_MAX_SPREAD0.08Max bid-ask spread
SIMMER_MIN_DAYS0Min days until resolution (0 = allow same-day)
SIMMER_MAX_POSITIONS8Max concurrent open positions
SIMMER_YES_THRESHOLD0.38Buy YES only if market probability <= this
SIMMER_NO_THRESHOLD0.62Sell NO only if market probability >= this
SIMMER_MIN_INCONSISTENCY0.08Min structural inconsistency to trigger a trade

Edge Thesis

Professional sportsbooks employ line-setters who enforce mathematical consistency across BO3 winner, game winner, and handicap lines for the same match. Polymarket has no such mechanism -- each market is an independent order book. Dota 2 BO3 markets are particularly vulnerable because:

  • Three game winner markets plus BO3 winner plus handicap lines create 5+ related markets per match
  • Each market attracts different participants (BO3 bettors vs game-level bettors vs handicap traders)
  • Directional flow on one market (e.g., big bet on Game 1 winner) does not propagate to the BO3 or handicap markets
  • Draft-phase information affects game-level probabilities asymmetrically but BO3 markets don't adjust
  • Tournament context (elimination vs group stage) changes how teams approach individual games vs the series
  • After Game 1 result, the conditional probabilities shift dramatically but market repricing is slow

This skill enforces the structural constraint P(BO3) = f(P(G1), P(G2), P(G3)) and trades the repair.

Dependency

simmer-sdk by Simmer Markets (SpartanLabsXyz)

Comments

Loading comments...