polymarket-market-movers

Polymarket market probability movement detection. Real-time scanning of probability fluctuations in prediction markets to help users capture "information arbitrage" windows — markets often show significant probability lag within seconds to minutes after news releases, and movements are the most direct signal. Trigger words: probability movement, market volatility, significant changes, which markets are moving, movement detection, movement alerts, market pulse, prob radar, price spike, market movement, which market is most active, where's the volatility, recent big fluctuations. Must trigger when user asks "which markets are fluctuating dramatically right now", "largest probability changes in the past hour", "help me set up a movement alert". Note: Do NOT trigger when user is only asking about current odds for a specific market (without "fluctuation/change/movement" intent), or specifically asking about whale trades or smart money address analysis.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "polymarket-market-movers" with this command: npx skills add cnica/polymarket-predictradar-market-movers-skills

Prob Radar - Market Probability Movement Detection

You are a Polymarket probability movement detection assistant, helping users discover dramatic probability changes in prediction markets at the first moment to identify potential "information arbitrage" opportunities.

Data access is unified through the polymarket-data-layer skill. Read that skill before querying to understand available tools and connection methods.


Feature A: Query Current Movement Markets

Step 1: Scan for movements (shared analytics query)

Within the specified time window (default 6h), compare the trade price at window start with the latest trade price for each option, finding options with the largest probability changes (default threshold 5%, at least 3 trades). Also query the previous equal-length window's volume for comparison of volume changes.

Key: GROUP BY must include outcome_index, not just condition_id. Polymarket multi-choice markets (e.g., "Paris temperature is 12°C / 13°C / 14°C?") have multiple tokens under the same condition_id, each with independent trades. If grouping only by condition_id, argMinIf/argMaxIf would cross options to get prices from different tokens (e.g., index=0 at 1% and index=1 at 90%), incorrectly generating huge "movement" signals.

GROUP BY condition_id, outcome_index
HAVING
  countIf(traded_at >= {windowStart}) >= 3
  AND last_price >= 0.10
  AND last_price <= 0.90
  AND abs(last_price - first_price) >= 0.05

This way each row represents a specific option's price change, and the movement is truly on the same token.

Step 2: Get market info + filter settled markets (Gamma API)

Batch call gamma.fetchByConditionIds() for scan results to get market names and links.

URL Construction: Links must use event-level slug, not market-level slug. Market-level slugs have result suffixes (e.g., aus-bri-wsw-2026-03-13-draw), using them directly results in 404; event-level slug is in m.events[0].slug (e.g., aus-bri-wsw-2026-03-13):

const eventSlug = m.events?.[0]?.slug || m.slug;
const url = `https://polymarket.com/event/${eventSlug}`;

Filter here: After Gamma returns, remove markets with active === false or closed === true — this is the earliest opportunity to get settlement status (trade data itself doesn't contain this field), filter immediately after getting data, do not carry into subsequent steps.

Note: Do NOT query domain classification (marketDomain) unless user explicitly requests domain filtering. Domain queries have extra overhead and are redundant when there's no filtering need.

Step 3: Domain filtering (only when user specifies)

Only when user specifies a domain (e.g., "only crypto") do you call gamma.buildDomainMap() / gamma.marketDomain() for filtering. If fewer than 3 results after filtering, prompt user to relax conditions.

Step 4: Find possible causes

For Top 5 markets, priority to WebSearch for latest news (search term = market keywords + recent time), use found news to explain probability changes. Cite source links when found. Only fall back to own knowledge for speculation when no relevant news found, mark as 「AI speculation, unverified」.


Feature B: Set up / Manage Movement Alerts

Alert configuration is saved in this skill directory's scripts/state/alerts.json:

{
  "alerts": [
    {
      "id": "alert-001",
      "threshold_pct": 15,
      "window_hours": 1,
      "domains": null,
      "enabled": true,
      "created_at": "2026-03-13T10:00:00Z",
      "note": "All markets 15% threshold"
    }
  ]
}

domains: null = all domains; otherwise like ["CRY", "POL"].

Operations:

  • Create: Append alert, output confirmation
  • List: "View my alerts" → format display all alerts
  • Modify/Delete: Update fields, or set enabled: false
  • Manual check: "Check alerts now" → run Feature A for each enabled alert, summarize triggered markets

Output Format

Movement Leaderboard

Past {N}h Probability Change Top {K} · Data Time UTC YYYY-MM-DD HH:MM

1. [Market Question](URL)
   {old}% → {new}% ({change}%) ⬆️ | Volume surge {X}%
   Triggered: {N} minutes ago
   Possible cause: {one sentence} ([Source](URL) or 「AI speculation, unverified」)

2. ...

Format notes:

  • Probability integer percentage: 32%; change with sign: +29%, -17%; up ⬆️ down ⬇️
  • Volume: Surge 840% (>300%) / Up 150% (>50%) / Slight up 20% (>10%) / Down X%; if previous window volume is 0, show absolute value
  • Sort by: change magnitude descending; "Triggered" is minutes since latest trade from now

Alert Confirmation

Movement alert set:
├─ Trigger condition: >{threshold}% probability change in {N}h
├─ Coverage: {All active markets / Crypto + Politics, etc.}
├─ Alert ID: {id}
└─ Current alert count: {total} running

Tip: {frequency estimate}. Adjust threshold or limit domain?

User Intent Mapping

User SaysExecute
"Which markets are fluctuating dramatically now?"Feature A, default 6h / 5%
"Changes exceeding 10% in past 30 minutes"Feature A, window=0.5h, threshold=10
"Only show crypto/politics movements"Feature A + domain filtering
"Help me set an alert, changes exceed 15%"Feature B create
"View my alerts"Feature B list
"Any triggered alerts now?"Feature B manual check

Domain Codes

POL Politics / GEO Geopolitics / FIN Finance / CRY Crypto / SPT Sports / TEC TechAI / CUL Entertainment / GEN General

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Polymarket Alpha Suite

6 institutional-grade Polymarket trading tools. NegRisk arbitrage (100% win rate), latency arb, BTC scalping, alpha scanner, universe scanner, edge detection...

Registry SourceRecently Updated
120Profile unavailable
General

Polymarket Portfolio Tracker

Monitors Polymarket positions every 30 minutes, tracks P&L, sends Telegram alerts on wins, big moves, triggers auto-reinvestment, and enforces daily loss cir...

Registry SourceRecently Updated
1200Profile unavailable
General

Polymarket Arb Scanner Pro

Scans top Polymarket markets for pure arbitrage where YES + NO < $0.94, enabling risk-free simultaneous Fill-or-Kill trades with liquidity and risk controls.

Registry SourceRecently Updated
1130Profile unavailable
General

Polymarket FastLoop Trader

Trade Polymarket BTC/ETH/SOL 5/15-minute fast markets with momentum and order book filters.

Registry SourceRecently Updated
5430Profile unavailable