Auto Trading Winner
This skill scans markets on sim, polymarket, or kalshi, filters for markets priced in a configurable middle band, ranks them by trading volume, and supports both manual selection and unattended auto mode.
This is a template. The default signal is simple volume ranking plus a price-band filter. Remix it with your own alpha, liquidity rules, timing rules, or fair-value model. The skill handles market discovery, venue-specific indexing, context checks, sizing, and trade execution plumbing.
What It Does
On each run, the skill:
- Calls
auto_redeem(). - Discovers markets for the configured venue.
- Filters markets to a configurable YES price band, default
30%to70%. - Sorts the remaining markets by trading volume.
- Builds a ranked candidate pool and highlights the top
5by default. - Prints the shortlist for review.
- In
RUN_MODE=manual, lets you manually select one candidate. - In
RUN_MODE=auto, starts from rank1automatically unlessSELECT_CANDIDATEis provided. - If the chosen candidate fails indexing or safeguard checks, falls through to the next ranked candidate in the full ranked pool automatically.
- Checks context safeguards before trading.
- Sizes the trade with
simmer_sdk.sizing.size_position(). - Defaults to dry-run unless you explicitly pass
--live.
Required Files
This skill follows Simmer's manual ClawHub pattern:
SKILL.mdclawhub.jsontrade_skill.py
Environment Variables
Credentials
SIMMER_API_KEY(required): Your Simmer API key.SOLANA_PRIVATE_KEY(optional): Needed only for live Kalshi self-custody trading.WALLET_PRIVATE_KEY(optional): Needed only if your Polymarket setup uses an external wallet flow.
Strategy Config
TRADING_VENUE:sim,kalshi, orpolymarket. Default:simRUN_MODE:manualorauto. Default:manualMARKET_QUERY: Optional query term used during discovery. Default: empty string.MIN_PRICE: Minimum YES price allowed. Default:0.30MAX_PRICE: Maximum YES price allowed. Default:0.70MAX_MARKETS: Maximum number of discovered markets to inspect before ranking. Default:50CANDIDATE_LIMIT: Number of ranked candidates to show. Default:5FAIR_PROBABILITY: Fair YES probability used for sizing and side selection. Default:0.55MIN_EDGE: Minimum edge required before trading. Default:0.03MAX_SLIPPAGE_PCT: Skip trades if estimated slippage exceeds this threshold. Default:0.15SIMMER_ENABLE_LIVE: Set totrueto allow live order placement. Default:falseSELECT_CANDIDATE: Optional 1-based index of the candidate to trade in non-interactive runs.AUTO_CONFIRM_LIVE: Optional explicit override required if you wantRUN_MODE=autotogether with live execution onkalshiorpolymarket. Default:false
Safety Model
- Dry-run is the default.
- Every trade is tagged with
sourceandskill_slug. - Every trade includes public
reasoning. - Market context is checked before order placement.
- Position sizing uses bankroll and edge, not a fixed stake.
- Kalshi markets use Simmer's check-then-import indexing path before trading.
RUN_MODE=manualis the default for all venues.RUN_MODE=automakes the skill non-interactive and starts from the top-ranked candidate.- Automatic live execution on
kalshiandpolymarketrequires an explicitAUTO_CONFIRM_LIVE=trueoverride. - If the selected candidate fails, the skill tries later ranked candidates automatically.
Local Usage
Review candidates without trading:
export SIMMER_API_KEY="sk_live_..."
export TRADING_VENUE="sim"
python trade_skill.py
Trade candidate 2 in a non-interactive run:
export SELECT_CANDIDATE="2"
python trade_skill.py --live
Unattended dry-run from the highest-ranked candidate:
export TRADING_VENUE="kalshi"
export RUN_MODE="auto"
python trade_skill.py
Fully unattended paper-trading run on sim:
export TRADING_VENUE="sim"
export RUN_MODE="auto"
export SIMMER_ENABLE_LIVE="true"
python trade_skill.py
Interactive review:
export TRADING_VENUE="kalshi"
python trade_skill.py
Remix Ideas
- Replace the volume ranking with your own score.
- Add time-to-resolution filters.
- Use venue-specific volume thresholds.
- Add per-category or per-market fair values.
- Expand manual selection into a multi-pick workflow.
Publishing
From inside this skill folder:
npx clawhub@latest publish . --slug auto-trading-winner --version 1.0.0
Always publish with an explicit --slug.
Install Verification
After publishing, verify the install path explicitly:
npx clawhub@latest install auto-trading-winner
If you update the skill, publish a patch version:
npx clawhub@latest publish . --slug auto-trading-winner --bump patch
Recommended local smoke test before publishing:
export SIMMER_API_KEY="sk_live_..."
export TRADING_VENUE="sim"
export MARKET_QUERY="bitcoin"
export SELECT_CANDIDATE="1"
python trade_skill.py