Install
openclaw skills install @diagnostikon/polymarket-macro-fear-index-traderBuilds a custom fear index from ALL Polymarket markets by aggregating geopolitical escalation, falling crypto, extreme weather, and rising disease signals into a composite score. When fear is extreme markets OVERREACT and everything gets sold -- this skill buys the most oversold markets pushed below YES_THRESHOLD by panic, not fundamentals. When fear is too low (complacency), it sells overpriced markets.
openclaw skills install @diagnostikon/polymarket-macro-fear-index-traderThis is a template. The default signal aggregates four fear dimensions from Polymarket market probabilities -- remix it with VIX data, credit default swap spreads, or social media sentiment scores. The skill handles all the plumbing (market discovery, fear scoring, regime detection, trade execution, safeguards). Your agent provides the alpha.
Markets overreact to fear. When geopolitical tensions spike, crypto crashes, disease outbreaks emerge, and extreme weather hits simultaneously, traders panic-sell across ALL categories -- even markets that have nothing to do with the fear catalyst. This creates oversold opportunities.
This skill builds a custom fear index from Polymarket's own markets:
When the composite fear index exceeds the PANIC threshold, the skill finds ALL markets below YES_THRESHOLD and buys the most oversold ones -- these have been pushed too low by indiscriminate fear selling.
All markets from get_markets(limit=200) are classified into fear categories:
| Category | Keywords | Fear direction |
|---|---|---|
| Geo | war, invasion, escalation, nuclear, missile, sanctions | High P(escalation) = high fear |
| Crypto | bitcoin, ethereum, solana, above/below | Low P(BTC above X) = high fear |
| Health | measles, pandemic, outbreak, cases, virus | High P(cases > X) = high fear |
| Weather | hurricane, tornado, flood, wildfire, earthquake | High P(extreme event) = high fear |
Each market's probability is converted to a fear score (0-1), then averaged within its category. The composite fear index is a weighted average:
fear_index = 0.35 * geo_fear + 0.30 * crypto_fear + 0.20 * health_fear + 0.15 * weather_fear
| Regime | Condition | Action |
|---|---|---|
| PANIC | fear_index > 0.65 | Buy YES on most oversold markets (lowest P first) |
| COMPLACENCY | fear_index < 0.30 | Sell NO on most overpriced markets (highest P first) |
| NEUTRAL | Between thresholds | Fall back to standard conviction signals |
In PANIC regime:
YES_THRESHOLD: (threshold - p) / threshold1 + min(0.5, (fear_index - FEAR_THRESHOLD) / (1 - FEAR_THRESHOLD))In COMPLACENCY regime:
NO_THRESHOLD: (p - threshold) / (1 - threshold)1 + min(0.5, (COMPLACENCY_THRESHOLD - fear_index) / COMPLACENCY_THRESHOLD)crypto_fear with real-time VIX levels| Parameter | Default | Notes |
|---|---|---|
| Max position size | $40 USDC | Per market, reached at max conviction |
| Min market volume | $3,000 | Liquidity filter |
| Max bid-ask spread | 10% | Avoid illiquid panic-widened spreads |
| Min days to resolution | 7 | Need time for fear to subside |
| Max open positions | 10 | Spread across many oversold markets |
clawhub install polymarket-macro-fear-index-trader
Requires: SIMMER_API_KEY environment variable.
Runs on demand or via automaton. Cron is set to null -- configure it in the Simmer UI when ready.
The skill defaults to paper trading (venue="sim"). Real trades only execute when --live is passed explicitly.
| Scenario | Mode | Financial risk |
|---|---|---|
python trader.py | Paper (sim) | None |
| Cron / automaton | Paper (sim) | None |
python trader.py --live | Live (polymarket) | Real USDC |
The automaton cron is set to null -- it does not run on a schedule until you configure it in the Simmer UI. autostart: false means it won't start automatically on install.
| Variable | Required | Notes |
|---|---|---|
SIMMER_API_KEY | Yes | Trading authority -- keep this credential private. |
All risk parameters are declared in clawhub.json as tunables and adjustable from the Simmer UI without code changes. They use SIMMER_-prefixed env vars so apply_skill_config() can load them securely.
| Variable | Default | Purpose |
|---|---|---|
SIMMER_MAX_POSITION | 40 | Max USDC per trade (reached at 100% conviction) |
SIMMER_MIN_TRADE | 5 | Floor for any trade (min USDC regardless of conviction) |
SIMMER_MIN_VOLUME | 3000 | Min market volume filter (USD) |
SIMMER_MAX_SPREAD | 0.10 | Max bid-ask spread (0.10 = 10%) |
SIMMER_MIN_DAYS | 7 | Min days until market resolves |
SIMMER_MAX_POSITIONS | 10 | Max concurrent open positions |
SIMMER_YES_THRESHOLD | 0.38 | Buy YES if market price <= this value |
SIMMER_NO_THRESHOLD | 0.62 | Sell NO if market price >= this value |
SIMMER_FEAR_THRESHOLD | 0.65 | Fear index above this = PANIC regime |
SIMMER_COMPLACENCY_THRESHOLD | 0.30 | Fear index below this = COMPLACENCY regime |
SIMMER_GEO_WEIGHT | 0.35 | Weight for geopolitical fear component |
SIMMER_CRYPTO_WEIGHT | 0.30 | Weight for crypto fear component |
SIMMER_HEALTH_WEIGHT | 0.20 | Weight for health fear component |
SIMMER_WEATHER_WEIGHT | 0.15 | Weight for weather fear component |
simmer-sdk is published on PyPI by Simmer Markets.
Review the source before providing live credentials if you require full auditability.