Kalshi Politics Random Buyer
This skill scans Kalshi for politics-related markets, randomizes the candidate pool, checks Simmer context safeguards, and prints a dry-run trade plan for one valid candidate.
This is a template. The default signal is intentionally simple: find a politics market at random, then only keep it if context and edge checks still pass. Remix the query set, side logic, price filters, and sizing model with your own thesis.
What It Does
On each run, the skill:
- Searches Kalshi importable markets using politics-related queries.
- Falls back to a global Kalshi scan when keyword searches return nothing.
- Filters for politics candidates with usable tickers and URLs.
- Ignores markets outside a configurable price band.
- Randomizes the candidate list.
- Ensures each candidate is indexed in Simmer using check-then-import.
- Fetches Kalshi market context and skips risky candidates.
- Picks YES or NO using a simple fair-probability edge rule.
- Sizes the hypothetical trade with
simmer_sdk.sizing.size_position(). - Prints a dry-run plan and reasoning.
Important Limitation
This template is intentionally dry-run only.
- Passing
--liveis rejected. - No real order is sent.
- No wallet private key is needed for the default workflow.
Required Files
SKILL.mdclawhub.jsontrade_skill.py
Environment Variables
Credentials
SIMMER_API_KEY(required): Your Simmer API key.
Strategy Config
SEARCH_QUERIES: Comma-separated politics search terms. Default:election,president,presidency,senate,house,governor,politics,campaign,ballot,nominee,partyMAX_MARKETS_PER_QUERY: Maximum Kalshi results to inspect per query. Default:50MIN_PRICE: Minimum YES price allowed. Default:0.02MAX_PRICE: Maximum YES price allowed. Default:0.98FAIR_PROBABILITY: Fair YES probability for edge checks. Default:0.55MIN_EDGE: Minimum edge required to produce a plan. Default:0.02MAX_SLIPPAGE_PCT: Skip candidates with excessive slippage. Default:0.15RANDOM_SEED: Optional integer seed for reproducible selection.
Safety Model
- Dry-run only.
- Uses Simmer context before proposing a trade.
- Skips severe flip-flop, HOLD/SKIP recommendations, resolved markets, and excessive slippage.
- Uses bankroll-aware sizing instead of a hard-coded stake.
- Avoids publishing wallet identifiers in reasoning.
Local Usage
Default dry-run:
export SIMMER_API_KEY="sk_live_..."
python trade_skill.py
Deterministic test run:
export RANDOM_SEED="7"
python trade_skill.py
Custom politics search:
export SEARCH_QUERIES="president,election,governor"
export FAIR_PROBABILITY="0.60"
python trade_skill.py
Remix Ideas
- Replace random candidate selection with volume or liquidity ranking.
- Add event-level filters for US elections only.
- Add position-awareness to avoid repeat exposure.
- Convert the dry-run plan into a proposal file instead of stdout.