Polymarket vs Kalshi Disagreement Monitor
Pricing
from $1.40 / 1,000 research signals
Polymarket vs Kalshi Disagreement Monitor
Detect explainable cross-market and related-market probability inconsistencies as research signals, with persistent monitoring and alerts.
Pricing
from $1.40 / 1,000 research signals
Rating
0.0
(0)
Developer
Fetch Finch
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share
Polymarket vs Kalshi Prediction Market Monitor
Compare public Polymarket and Kalshi markets and detect meaningful probability disagreements. The Actor finds likely equivalent contracts, checks related threshold and deadline markets for logical inconsistencies, and returns structured research signals with links and supporting evidence.
Use it for prediction market research, market monitoring, data analysis, dashboards, scheduled reports, and webhook alerts. No exchange account, wallet, or API key is required.
What you get
- Cross-platform comparisons between Polymarket and Kalshi
- Related-market checks within and across venues
- Confidence scores and match evidence for every inferred relationship
- Direct links to both market pages
- Bid, ask, probability, volume, liquidity, and close-time context when available
- Quote spreads and the exact pricing method used for each signal
- Persistent signal lifecycle tracking for scheduled monitors
- Optional Slack, Discord, Make, Zapier, or generic webhook alerts
- Optional public order book depth analysis for equivalent markets
All results are research signals. The Actor does not place trades or provide financial advice.
Signals
Equivalent-market disagreement
Finds likely equivalent Polymarket and Kalshi propositions whose YES probabilities differ by more than your selected threshold.
Example:
- Polymarket probability: 42%
- Kalshi probability: 51%
- Reported disagreement: 9 percentage points
Automatic matching checks subject similarity, title similarity, numeric thresholds, direction, observation type, year, and close-time compatibility before creating a relationship. Path-dependent contracts such as "reach during the day" are not treated as equivalent to point-in-time observations.
Quote quality controls
The Actor does not treat every midpoint as meaningful. A signal qualifies in one of two ways:
executable_quote_gap: the relevant best bid is separated from the opposing best ask by at least your signal thresholdquality_filtered_midpoint: both bid/ask spreads passmaxQuoteSpreadPctPoints, then the midpoint difference passes your signal threshold
Markets with missing or excessively wide quotes are suppressed unless their public quotes are genuinely separated. Every result includes the spread on each market, the midpoint gap, the executable gap when available, and the method used.
Threshold monotonicity violation
Checks markets where one event is a stricter version of another.
For example, the probability of Bitcoin exceeding $150,000 by a given deadline should not be higher than the probability of Bitcoin exceeding $100,000 by the same deadline.
Expected constraint:
P(stricter threshold) <= P(easier threshold)
Threshold ladders are checked between adjacent strikes. This detects monotonicity breaks without returning many redundant combinations from the same ladder.
Deadline monotonicity violation
Checks markets where the same event has an earlier and a later deadline.
For example, the probability of an event occurring by June should not be higher than the probability of that event occurring by December, assuming compatible rules.
Expected constraint:
P(earlier deadline) <= P(later deadline)
Quick start
For a focused snapshot, enter topics and choose the relationship checks you want to run:
{"mode": "snapshot","topics": ["Bitcoin", "Federal Reserve", "election"],"signalTypes": ["equivalent", "threshold_subset", "deadline_subset"],"minDisagreementPctPoints": 5,"minViolationPctPoints": 3,"minMatchConfidence": 0.82,"maxQuoteSpreadPctPoints": 15,"maxMarketsPerVenue": 2000,"maxSignals": 100,"excludeSports": true,"excludeKalshiMultivariate": true}
Leave topics empty to scan the bounded market universe returned by both venues.
Snapshot and monitor modes
Snapshot mode
Snapshot mode returns all current signals that meet your thresholds. Use it for one-time research, dataset generation, manual review, or periodic full reports.
Monitor mode
Monitor mode remembers previous observations and returns lifecycle changes instead of repeating unchanged signals.
Lifecycle values include:
opened: a new signal passed the persistence requirementwidened: the disagreement increased materiallynarrowed: the disagreement decreased materially but remains activeresolved: the signal disappeared or fell below the configured threshold
For reliable recurring monitoring, run the Actor from an Apify Schedule with the same input and state store.
{"mode": "monitor","topics": ["Federal Reserve"],"minimumPersistenceRuns": 2,"materialChangePctPoints": 1,"alertOnFirstRun": false,"stateStoreName": "prediction-market-disagreement-state"}
The first monitor run creates a quiet baseline by default. Set alertOnFirstRun to true if you want current signals emitted immediately.
Alerts
Add one or more HTTPS webhook URLs to receive aggregated lifecycle updates after each monitor run.
Supported formats:
- Slack incoming webhooks
- Discord webhooks
- Generic JSON webhooks
- Make and Zapier webhook endpoints
{"mode": "monitor","webhookUrls": ["https://your-endpoint.example/hook"],"webhookFormat": "auto","failOnWebhookError": false}
The auto format recognizes Slack and Discord webhook hosts. Other destinations receive structured JSON. Alert URLs and custom headers are treated as secrets and are not included in output records.
Webhook destinations must use HTTPS. Local and private-network destinations are rejected, and redirects are disabled.
Output
The default Dataset contains one record per current signal in snapshot mode or per lifecycle update in monitor mode.
Each record includes:
- Signal type and stable signal ID
- Lifecycle status
- Severity score
- Disagreement or violation magnitude in percentage points
- Expected probability constraint
- Relationship confidence and matching evidence
- Quote method, spreads, midpoint gap, and executable quote gap
- Both market questions, IDs, URLs, prices, and metadata
- Research caveats
- Optional order book analysis
Example:
{"recordType": "signal","signalId": "equivalent-8bda0bcd16d583f2","signalType": "equivalent_disagreement","lifecycleStatus": "current","severity": 72.4,"magnitudePctPoints": 9,"message": "Polymarket and Kalshi quality-filtered quote midpoints differ by 9.00 percentage points on likely equivalent propositions.","quoteEvidence": {"method": "quality_filtered_midpoint","leftSpreadPctPoints": 2,"rightSpreadPctPoints": 3,"maximumAllowedSpreadPctPoints": 15,"midpointGapPctPoints": 9,"executableGapPctPoints": 4},"relationship": {"type": "equivalent","confidence": 0.94,"source": "automatic","evidence": {"reasonCodes": ["cross_venue","shared_subject","matching_year","compatible_close_time"]}},"leftMarket": {"venue": "polymarket","question": "Example market question","probability": 0.42},"rightMarket": {"venue": "kalshi","question": "Example market question","probability": 0.51},"researchCaveats": ["Public quotes are non-atomic snapshots and can change between venue requests."]}
The default key-value store also contains:
SUMMARY: source counts, filtering diagnostics, relationship totals, signal totals, state details, and redacted alert delivery resultsRELATIONSHIPS: the complete relationship audit, including matched relationships that did not produce a signal
Explicit relationships
Automatic matching is intentionally conservative. If you already know which markets should be compared, provide exact Polymarket IDs, condition IDs, slugs, or Kalshi tickers.
{"explicitRelationships": [{"leftVenue": "polymarket","leftId": "POLYMARKET_ID_OR_SLUG","rightVenue": "kalshi","rightId": "KALSHI_MARKET_TICKER","type": "equivalent","note": "Manually reviewed pair"}]}
For threshold_subset and deadline_subset, the left proposition must imply the right proposition. The expected constraint is P(left) <= P(right).
Use excludedRelationshipIds to suppress a known incorrect automatic relationship. Stable relationship IDs are available in the Dataset and RELATIONSHIPS output.
Optional order book analysis
Set executionContracts above zero to add depth-aware research for equivalent-market signals.
The Actor fetches public YES and NO order books, walks available asks for an equal contract quantity, checks both opposing outcome combinations, and includes estimated fees.
Relevant fields are deliberately labeled as conditional, including netPnlIfRulesEquivalentUsd. This analysis does not guarantee execution or establish that two rulebooks are economically identical.
Filtering and coverage
topicsapplies a local text filter after markets are fetched.maxMarketsPerVenuelimits the number of active markets requested from each venue.maxQuoteSpreadPctPointsprevents wide-spread midpoint artifacts from becoming signals.- Sports markets are excluded by default because live-game and cancellation rules require specialized comparison logic.
- Kalshi multivariate combinations are excluded by default.
- Only binary YES and NO Polymarket markets enter automatic relationship discovery.
- Polymarket and Kalshi report volume in different units, so volume values should not be directly compared across venues.
Increasing the market limit improves coverage but may increase run time and resource use.
Common use cases
- Prediction market research dashboards
- Polymarket and Kalshi odds comparison
- Scheduled disagreement monitoring
- Market data quality checks
- Academic and quantitative research
- Newsroom and forecasting workflows
- Alerting on unusual probability changes
- Building reviewed relationship datasets
Data sources and access
The Actor uses public read-only endpoints from:
- Polymarket Gamma API for market discovery and metadata
- Polymarket CLOB API for optional order books
- Kalshi Trade API v2 for markets and optional order books
No trading credentials, wallet details, exchange API keys, email addresses, or passwords are requested. The Actor does not access trading accounts or place orders.
Important limitations
Prediction market titles can hide material differences in resolution sources, observation times, boundary handling, cancellation, postponement, disputes, and settlement timing. Automatic relationships are screening candidates and should be reviewed using both linked rule pages.
Public API snapshots are not simultaneous. Prices, spreads, and depth can change between requests. Geographic availability and legal restrictions vary by user and venue.
This Actor is an independent research tool. It is not affiliated with Polymarket or Kalshi. Its outputs are not financial, investment, legal, or trading advice.