mcpField
S
storyclaw-polymarket-trading

storyclaw-polymarket-trading

github.com/storyclaw-officialOther054 installsUpdated today
Repository

About storyclaw-polymarket-trading

storyclaw-polymarket-trading is an agent skill for building and managing Polymarket trading strategies, with paper trading enabled by default. It supports user-confirmed strategy setup, parameter adjustments based on performance, and explicit approval before live trading.

Key features

  1. 01Support multiple market categories
  2. 02Run strategies in dry-run mode by default
  3. 03Adjust parameters based on performance
  4. 04Track strategy lifecycle and status
  5. 05Require confirmation before strategy setup
  6. 06Require explicit approval for live trading

Use cases

  1. 01Explore a user-selected Polymarket category
  2. 02Test a proposed strategy without live trades
  3. 03Review results and adjust strategy parameters
  4. 04Decide whether to approve a move to live trading

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/storyclaw-official/talenthub --skill storyclaw-polymarket-trading

After installing, type/storyclaw-polymarket-tradingin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

.gitignore
credentials/
example.json
scripts/
check_and_report.py
market_scanner.py
polymarket.py
review_cron.py
signal_cron.py
signals.py
strategy_manager.py

Details

From the project README

Polymarket Trading - Self-Evolving Trading Bot

Design a trading strategy with the user, run automated paper trading (dry-run), auto-improve parameters when underperforming, and ask permission to switch to live trading when edge target met.

Supports any market type: politics, sports, crypto prices, science, entertainment, etc.

Critical Rules

  1. NEVER default to any specific market — always ask user what they want to trade
  2. NEVER show made-up prices or signals — only real script output
  3. DRY RUN always on by default — only switch to live after explicit user confirmation
  4. Auto-improve silently — adjust params and notify user
  5. NEVER create a strategy or set up crons without explicit user confirmation

Multi-User Support

Each user has their own credentials/{USER_ID}.json:

{
  "private_key": "0x...",
  "funder_address": "0x...",
  "dry_run": true
}

Set USER_ID or TELEGRAM_USER_ID env var when calling scripts.

Or set POLYMARKET_PRIVATE_KEY env var.

First-Time User Flow

1. Check credentials
USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/polymarket.py check

If not configured, run interactive setup:

USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/polymarket.py setup
2. Ask what they want to trade

Do NOT assume. Ask:

  • What market type? (politics, sports, crypto, tech, etc.)
  • Any specific keywords to focus on?
3. Propose strategy — WAIT FOR CONFIRMATION

Based on the conversation, derive and propose concrete values. Stop and wait for user to confirm before executing anything.

4. Create strategy (only after confirmation)
USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/strategy_manager.py create --json '{
  "name": "<strategy name>",
  "market_filter": {
    "keywords": ["<keywords>"],
    "min_liquidity_usdc": 1000,
    "max_days_to_expiry": 30,
    "min_days_to_expiry": 1
  },
  "signal": {
    "method": "orderbook_imbalance",
    "params": { "threshold": 0.15, "max_entry_price": 0.60 }
  },
  "sizing": { "max_size_usdc": 5 },
  "targets": { "min_sample_size": 30, "min_edge": 0.05 }
}'
5. Set up crons
SKILL_PATH={baseDir}
STRATEGY_ID=<id from step 4>

# Signal scan: every 15 minutes
(crontab -l 2>/dev/null; echo "*/15 * * * * USER_ID=$TELEGRAM_USER_ID python3 $SKILL_PATH/scripts/signal_cron.py $STRATEGY_ID >> $SKILL_PATH/state/$TELEGRAM_USER_ID.$STRATEGY_ID.log 2>&1") | crontab -

# Performance review: daily at 09:00 UTC
(crontab -l 2>/dev/null; echo "0 9 * * * USER_ID=$TELEGRAM_USER_ID python3 $SKILL_PATH/scripts/review_cron.py $STRATEGY_ID >> $SKILL_PATH/state/$TELEGRAM_USER_ID.review.log 2>&1") | crontab -

Strategy Lifecycle

dry_run → improving → pending_live → live

Go-live condition: edge = win_rate - avg_entry_price >= min_edge AND total_pnl > 0

Strategy Management

USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/strategy_manager.py status
USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/strategy_manager.py review <strategy_id>
USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/strategy_manager.py activate-live <strategy_id>

Auto-Improvement Rules

ConditionAction
edge < min_edge - 10%Raise threshold (fewer but stronger signals)
edge < min_edge - 3%Lower max_entry_price (cheaper entries)
3+ adjustments still failingNotify user to reconsider
edge >= min_edge AND pnl > 0Mark pending_live, notify user

Signal Methods

MethodBest for
orderbook_imbalanceAny liquid market with active orderbook

New methods can be added to scripts/signals.py.

Troubleshooting

ErrorSolution
py-clob-client not installedpip3 install py-clob-client
USER_ID not setAdd USER_ID=xxx prefix
No config foundRun python3 {baseDir}/scripts/polymarket.py setup
API Error 401Re-run setup to re-derive keys
No markets foundBroaden keywords or lower min_liquidity_usdc

File Structure

polymarket-trading/
├── SKILL.md
├── scripts/
│   ├── strategy_manager.py   # Lifecycle: create/review/status/activate-live
│   ├── signal_cron.py        # Cron: scan markets, run signals, record trades
│   ├── review_cron.py        # Cron: daily review + auto-improve
│   ├── signals.py            # Pluggable signal methods
│   ├── market_scanner.py     # Gamma API market discovery
│   └── polymarket.py         # CLOB API primitives
├── credentials/
│   └── {USER_ID}.json
├── strategies/
│   └── {USER_ID}/{strategy_id}.json
└── state/
    └── {USER_ID}.{strategy_id}.perf.json

Comments

Markdown supported