SkillHub

polymarket-opportunities-scanning

v1.0.0

Scan Polymarket prediction markets for book arbitrage opportunities (overbooked/underbooked multi-outcome markets), generate a formatted report, and deliver it via Telegram and email. Use when asked to "scan Polymarket", "find betting opportunities", "run Polymarket report", "check Polymarket arb",...

Sourced from ClawHub, Authored by caoooqiii

Installation

Please help me install the skill `polymarket-opportunities-scanning` from SkillHub official store. npx skills add caoqi/polymarket-opportunities-scanning

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.jsnWait for it to complete. If it fails, send a Telegram alert with the error.",
    "timeoutSeconds": 0
  },
  "delivery": { "mode": "none" }
}