Install
openclaw skills install pkedgeMonitor Polymarket prediction markets, spot mispricings between crowd probabilities and real-world evidence, track whale positioning from the top-50 leaderboard wallets, and detect fresh wallet insider signals. Supports four modes: SCAN (daily digest of flagged markets), DEEP DIVE (full single-market analysis with web search evidence), WHALE WATCH (consensus detection across top trader positions), and INSIDER WATCH (fresh wallet large-position detection).
openclaw skills install pkedgePKEdge is an OpenClaw skill that monitors Polymarket prediction markets, spots mispricings between crowd probabilities and real-world evidence, tracks whale positioning from top-50 leaderboard wallets, and detects fresh wallet insider signals. It operates in four modes: SCAN, DEEP DIVE, WHALE WATCH, and INSIDER WATCH.
Intel only. Never recommends trading. Always appends "Not financial advice. DYOR."
Schedule:
cd into the skill folder and run npm install.env file with your Telegram credentials:
PKEDGE_TELEGRAM_TOKEN_FREE — bot token for the free channelPKEDGE_TELEGRAM_CHAT_FREE — chat ID for the free channelPKEDGE_TELEGRAM_TOKEN_TRADER — bot token for the trader channelPKEDGE_TELEGRAM_CHAT_TRADER — chat ID for the trader channelnode cron.js to start scheduled jobs, or configure launchd to run on bootClaude activates this skill when the user says anything matching these patterns:
~/Projects/pkedge/
fetch.js — all Polymarket API calls (no auth required)
analyze.js — scoring, flagging, conviction logic
formatter.js — Telegram message templates
deliver.js — sends to Telegram channels
cron.js — scheduled runner
Purpose: Fetch the top 200 active Polymarket markets by volume, flag anomalies, rank them, deliver the digest.
Step-by-step:
Call fetchActiveMarkets() from fetch.js
Call runScanFlags(markets) from analyze.js
For the top 5 flagged markets, call web search on each question to check for recent news
"[market question]" news todayCall formatScanDigest(flaggedMarkets, 5) from formatter.js for Trader channel
Call formatScanPreview(flaggedMarkets[0]) from formatter.js for Free channel
Deliver via deliver.js sendToTrader() and sendToFree()
Output shape:
🔍 PKEdge Morning Scan — Mon, Mar 9, 2026
_5 markets flagged from top 200 by volume_
──────────────────────
1. *Will the Fed cut rates at the March 2026 meeting?*
🔥 HIGH Crowd: YES 23.1% | 24h Vol: $142K | Score: 7
👀 Volume spike: 4.2x average daily volume — unusual activity
⏰ Resolves in 3.2 days
...
Purpose: Full analysis of a single market. Claude reasons over crowd probability vs. real-world evidence, assesses fair value, and outputs a structured Crowd vs. Reality report.
Step-by-step:
Parse the market question from the user input
Call searchMarkets(query) from fetch.js to find the matching Polymarket market
Fetch enriched market data:
fetchPriceHistory(market.id, '1d') — get price history with daily candles (note: '1d' sets candle granularity, not lookback window; the API returns available history for the market)fetchBookDepth(market.clobTokenIds[0]) — get order book depth (YES token)Call analyzeMarket(market, bookDepth) from analyze.js
Web search × 3 to gather evidence:
"[market question]" news [current month year][core topic] forecast prediction [current year][core topic] expert analysis probabilityEstimate fair value:
Call computeConviction(crowdPct, fairPct) from analyze.js
Call formatDeepDive(analysis, conviction, evidenceLines) from formatter.js
Deliver via sendToTrader() (Deep Dive is Trader-only)
Output shape:
🧠 PKEdge Deep Dive
_Mar 9, 2026_
──────────────────────
*Will the Fed cut rates at the March 2026 meeting?*
CROWD PRICE
YES: 23.1% | NO: 76.9%
MARKET DATA
⏰ Resolves in 3.2 days
💰 All-time: $2.1M | 24h: $142K
👀 Spread: 1.2¢ (bid 0.229 / ask 0.241)
✅ Order book: DEEP ($340K within 10¢)
EVIDENCE
✅ Fed funds futures pricing ~18% probability of March cut as of today
✅ Powell speech last week signaled patience — no urgency to cut
✅ February CPI came in at 2.9%, above 2% target
✅ No emergency FOMC meeting called — standard meeting format
✅ Metaculus consensus: 15-22% YES
──────────────────────
PKEDGE ASSESSMENT
🔥 Conviction: HIGH
Direction: NO underpriced
Delta: 18 percentage points from crowd
_Crowd is 18 pts away from fair value — strong signal_
`Not financial advice. DYOR. Prediction markets carry risk.`
Purpose: Monitor top-50 Polymarket traders by all-time profit for new positions. Detect consensus (3+ whales entering the same market) and fire real-time alerts.
Runs twice daily:
Step-by-step:
Call fetchLeaderboard(50) from fetch.js
Extract all wallet addresses and call fetchMultiWalletPositions(addresses)
Call buildWhaleReport(leaderboard, walletPositions, windowHours) from analyze.js
48 as windowHours — covers overnight + weekend24 as windowHours — covers the trading dayCall formatWhaleWatch(report) from formatter.js
Deliver via sendToTrader()
For any consensus markets not yet alerted today:
formatWhaleAlert(consensusMarket, latestPosition) from formatter.jsOutput shape:
🐋 PKEdge Whale Watch — Mon, Mar 9, 2026
_Top 50 traders scanned | Last 24h_
──────────────────────
🔥 CONSENSUS DETECTED (1 market)
1. *Will the Fed cut rates at the March 2026 meeting?*
🐋x4 whales | 💰$48K combined | Direction: *NO*
_PredictWiz, 0x4f2a…1b3c, MarketMaker99 +1 more_
──────────────────────
NEW POSITIONS (6 total)
🐋 *PredictWiz* → NO
_Will the Fed cut rates at the March 2026 meeting?_
$22K @ 77¢ | 2h ago
...
Purpose: Detect fresh wallets placing unusually large positions — a classic signal of informed trading. Insiders often create new wallets specifically to avoid leaderboard detection. Two or more fresh wallets entering the same market within 6 hours is treated as a coordinated signal.
Fresh wallet definition:
Alert tiers:
$5K single position = 👀 WATCH (held for digest)
$25K single position = ⚠️ ALERT (held for digest)
$50K single position = 🚨 IMMEDIATE (fires real-time, does not wait for digest)
Runs twice daily:
Step-by-step:
Call fetchActiveMarkets() — sort by 24h volume, take top 30 as scan targets
Call fetchLeaderboard(50) — build a Set of known addresses to exclude
For each top market, call fetchRecentTrades(market.clobTokenIds[0], windowHours) from fetch.js
For each unknown address with a qualifying trade, call fetchWalletProfile(address) from fetch.js
Call buildInsiderReport(freshSignals, windowHours) from analyze.js
Call formatInsiderWatch(report) from formatter.js
Deliver via sendToTrader()
For IMMEDIATE-tier (>$50K) or COORDINATED signals not yet alerted today:
formatInsiderAlert(signal, isCoordinated) from formatter.jsOutput shape — daily digest:
🕵️ PKEdge Insider Watch — Mon, Mar 9, 2026
_Unknown wallets scanned | Last 24h_
──────────────────────
🚨 COORDINATED SIGNAL (1 market)
*Will the Fed cut rates at the March 2026 meeting?*
🆕x2 fresh wallets | 💰$61K combined | Direction: *NO*
_First two entered within 2h of each other_
Wallet: 0x7c3b…9a12 — Age: 4 days | 3 trades | $38K → NO
Wallet: 0x2d1f…4e87 — Age: 11 days | 7 trades | $23K → NO
──────────────────────
WATCH LIST (3 signals)
👀 *Fresh wallet — 0x9f4a…2c31*
_Will Trump win the 2026 midterms?_
$8K → YES @ 41¢ | 6h ago
Age: 18 days | 12 trades lifetime
`Not financial advice. DYOR. Fresh wallet signals are circumstantial.`
Output shape — real-time alert:
🚨 PKEdge Insider Alert
_Fresh wallet just dropped big money_
*Will the Fed cut rates at the March 2026 meeting?*
Direction: NO | Size: $38K @ 77¢
Wallet: `0x7c3b…9a12`
Age: 4 days | 3 trades lifetime
`Not financial advice. DYOR. Circumstantial signal only.`
| Endpoint | Purpose |
|---|---|
GET https://gamma-api.polymarket.com/markets?active=true&limit=200 | Market discovery |
GET https://gamma-api.polymarket.com/markets?slug={slug} | Single market by slug |
GET https://gamma-api.polymarket.com/prices-history?market={id}&interval=1d | Price history |
GET https://clob.polymarket.com/book?token_id={tokenId} | Order book |
GET https://clob.polymarket.com/midpoint?token_id={tokenId} | Midpoint price |
GET https://clob.polymarket.com/bbo?token_id={tokenId} | Best bid/offer |
GET https://clob.polymarket.com/trades?token_id={tokenId}&limit=500 | Recent market trades (Insider Watch) |
GET https://data-api.polymarket.com/v1/leaderboard?timePeriod=ALL&orderBy=PNL&limit=50 | Top traders |
GET https://data-api.polymarket.com/positions?user={address} | Wallet positions |
GET https://data-api.polymarket.com/trades?user={address}&limit=500 | Wallet trade history + profile |
PKEDGE_TELEGRAM_TOKEN_FREE=
PKEDGE_TELEGRAM_CHAT_FREE=
PKEDGE_TELEGRAM_TOKEN_TRADER=
PKEDGE_TELEGRAM_CHAT_TRADER=
No market data API keys needed. Polymarket APIs are fully public.
| Tier | Price | What They Get |
|---|---|---|
| FREE EDGE | $0 | 1 market preview from daily SCAN |
| WATCHER | $9/mo | Full 5-market SCAN digest, @PKEdgeBot basic (3 lookups/day) |
| TRADER | $29/mo | Unlimited DEEP DIVE, WHALE WATCH, INSIDER WATCH, all real-time alerts |
| QUANT | $99/mo | Raw scoring API, Discord quant channel, historical accuracy log |
SCAN Score Flags:
| Flag | Points | Trigger |
|---|---|---|
| VOLUME_SPIKE | 3 | 24h volume >3× average daily |
| VOLUME_SURGE | 2 | >25% of all-time volume traded in last 24h |
| RESOLVING_SOON | 2 | Resolves within 7 days |
| SPREAD_ANOMALY | 1 | YES + NO gap >6¢ |
| EXTREME_LOW / HIGH | 1 | Price ≤10% or ≥90% on high volume |
Score thresholds: 2 = WATCH | 4 = ELEVATED | 6+ = HIGH
Conviction thresholds: <7 pts = LOW | 7-14 pts = MEDIUM | 15+ pts = HIGH
Insider Signal Score:
| Factor | Points |
|---|---|
| Position > $5K | 1 |
| Position > $25K | 3 |
| Position > $50K | 3 |
| Wallet age < 7 days | 3 |
| Wallet age 7–14 days | 2 |
| Wallet age 15–30 days | 1 |
| Trade count < 5 | 2 |
| Trade count 5–10 | 1 |
| Coordinated (2+ fresh wallets same market within 6h) | +5 bonus |
Insider alert thresholds: 3 = WATCH | 6 = ALERT | 9+ = COORDINATED / IMMEDIATE
Not financial advice. DYOR. Prediction markets carry risk.