This is a zero-risk trading simulator that executes against live Polymarket order book prices and persists your portfolio in SQLite. It walks the actual order book to fill trades rather than using mid-prices, includes configurable risk rules like max position sizing and drawdown limits, and can execute structured recommendations from strategy advisors. The health check script is smart: run it at session start and it fetches live prices, updates your portfolio, evaluates stop losses, and returns a color-coded risk status. If you're building trading strategies or want to test ideas against real market data without putting money on the line, this gives you the full simulation loop with persistent state across sessions.
npx -y skills add mjunaidca/polymarket-skills --skill polymarket-paper-trader --agent claude-codeInstalls into .claude/skills of the current project.
Simulate trades against live Polymarket prices with zero financial risk. No wallet, no keys, no money at stake. Portfolio persists across sessions in SQLite.
python ~/.agents/skills/polymarket-paper-trader/scripts/paper_engine.py --action init --balance 1000
# Buy $50 of YES shares using live order book prices
python ~/.agents/skills/polymarket-paper-trader/scripts/paper_engine.py \
--action buy --token TOKEN_ID --side YES --size 50 \
--reason "High confidence based on news analysis"
python ~/.agents/skills/polymarket-paper-trader/scripts/paper_engine.py \
--action buy --token TOKEN_ID --side YES --size 50 --price 0.45 \
--reason "Value buy below fair price estimate"
python ~/.agents/skills/polymarket-paper-trader/scripts/paper_engine.py --action portfolio
python ~/.agents/skills/polymarket-paper-trader/scripts/paper_engine.py --action portfolio --json
python ~/.agents/skills/polymarket-paper-trader/scripts/paper_engine.py \
--action close --token TOKEN_ID --reason "Taking profit"
python ~/.agents/skills/polymarket-paper-trader/scripts/paper_engine.py --action trades
python ~/.agents/skills/polymarket-paper-trader/scripts/portfolio_report.py
python ~/.agents/skills/polymarket-paper-trader/scripts/portfolio_report.py --json
python ~/.agents/skills/polymarket-paper-trader/scripts/health_check.py
python ~/.agents/skills/polymarket-paper-trader/scripts/health_check.py --json
Runs the full session-start workflow in one command: loads portfolio, fetches live prices, updates DB, calculates drawdown, checks stop losses, evaluates all risk limits. Returns GREEN/YELLOW/RED status.
Token IDs come from the Polymarket Gamma API. To find them for a market:
# Search for markets
curl -s 'https://gamma-api.polymarket.com/markets?limit=5&active=true&closed=false&order=volume24hr&ascending=false' | python3 -c "
import sys, json
for m in json.load(sys.stdin):
tokens = json.loads(m['clobTokenIds'])
prices = json.loads(m['outcomePrices'])
print(f\"{m['question'][:60]}\")
print(f\" YES token: {tokens[0]} price: {prices[0]}\")
print(f\" NO token: {tokens[1]} price: {prices[1]}\")
print()
"
Or use the polymarket-scanner skill to discover markets first.
The executor takes structured recommendations from strategy advisors:
python ~/.agents/skills/polymarket-paper-trader/scripts/execute_paper.py \
--recommendation '{
"token_id": "TOKEN_ID",
"side": "YES",
"action": "BUY",
"size_usd": 50,
"confidence": 0.75,
"reasoning": "Momentum signal detected",
"strategy": "momentum"
}'
Dry run (validates without executing):
python ~/.agents/skills/polymarket-paper-trader/scripts/execute_paper.py \
--recommendation '{"token_id":"TOKEN","side":"YES","size_usd":50}' --dry-run
| Rule | Default | Purpose |
|---|---|---|
| Max position size | 10% of portfolio | No single bet too large |
| Max drawdown | 30% | Stop trading if losing too much |
| Max concurrent positions | 5 | Diversification |
| Daily loss limit | 5% of starting balance | Prevent tilt |
| Max single market exposure | 20% of portfolio | No concentration |
| Human approval threshold | 15% of portfolio | Large trades need confirmation |
Override with --force flag or by passing custom risk_config on init.
clob.polymarket.com~/.polymarket-paper/portfolio.dbAll scripts support --json for machine-readable output. Key Python functions:
paper_engine.init_portfolio(balance, name) — Create portfoliopaper_engine.place_order(token_id, side, size, price) — Execute tradepaper_engine.close_position(token_id) — Close positionpaper_engine.get_portfolio(name) — Get current statepaper_engine.get_trades(name) — Trade historyexecute_paper.execute_recommendation(rec) — Execute strategy signalportfolio_report.generate_report(name) — Full analyticsSee references/risk-rules.md for detailed risk parameters and references/paper-trading-guide.md for the full paper trading guide.
juliusbrussee/caveman
mattpocock/skills
shadcn/improve
obra/superpowers
forrestchang/andrej-karpathy-skills
vercel-labs/skills