Back to skills
extension
Category: Data & AnalyticsNo API key required

Polymarket Opportunities Scanning

Scan Polymarket prediction markets for book arbitrage opportunities (overbooked/underbooked multi-outcome markets), generate a formatted report, and deliver...

Polymarket Opportunities Scanning

Scan Polymarket's active multi-outcome markets for book arbitrage opportunities where the sum of all YES prices deviates from 1.0. Generate a ranked report and send to Telegram + email.

How It Works

In a truly mutually exclusive multi-outcome market, all YES prices should sum to 1.0.

| Deviation | Type | Strategy | |-----------|------|----------| | Sum > 1.0 (overbooked) | OVERBOOK | Buy all NO outcomes | | Sum < 1.0 (underbooked) | UNDERBOOK | Buy all YES outcomes |

NegRisk markets are the highest quality — they're structurally guaranteed to be mutually exclusive.

Setup

  1. Copy scripts/scanner.js and scripts/send-report.js to your project directory
  2. Create .env in the same directory with email config (see references/setup.md)
  3. Install dependencies: npm install (no external deps — uses built-in fetch and Node.js)
  4. Test: node scanner.js && node send-report.js

Running a Scan

# Run scanner → saves opportunities.json
node scanner.js

# Send report (reads opportunities.json → Telegram + email)
node send-report.js

Or run both in one cron command:

node /path/to/send-report.js

(send-report.js calls scanner.js internally)

Scan Parameters (configurable in scanner.js)

| Parameter | Default | Description | |-----------|---------|-------------| | minVolume | $10,000 | Skip low-liquidity markets | | minThreshold | 3% | Minimum deviation worth acting on | | maxThreshold | 50% | Above this = likely false signal | | minPrice | 3% | Filter near-zero outcomes | | maxPrice | 97% | Filter near-certain outcomes |

Report Format

🎯 Polymarket Opportunities Report [timestamp]
Found N opportunities (X NegRisk)

⭐ NegRisk Markets (highest quality)
[OVERBOOK/UNDERBOOK] Event Title
💰 Profit: X%  | Volume: $Xk | 24h: $Xk
📐 Sum: X% (deviation +X%)
🎯 Strategy: Buy all NO / Buy all YES
🔗 https://polymarket.com/event/...
  X%  Outcome A
  X%  Outcome B
  ...

📋 Regular Multi-Outcome Markets
[same format]

Delivery

  • Telegram: via OpenClaw message tool (channel: telegram, to: <your_telegram_id>)
  • Email: via Apple Mail + osascript (macOS only) — set SMTP_TO in .env

See references/setup.md for configuration details.

Cron Job Setup

Recommended: daily at 08:00 local time.

{
  "name": "Polymarket Morning Scan",
  "schedule": { "kind": "cron", "expr": "0 8 * * *", "tz": "Europe/Stockholm" },
  "sessionTarget": "isolated",
  "payload": {
    "kind": "agentTurn",
    "message": "Run: exec → node /path/to/send-report.js\nWait for it to complete. If it fails, send a Telegram alert with the error.",
    "timeoutSeconds": 0
  },
  "delivery": { "mode": "none" }
}