Polymarket × Kalshi Arbitrage Scanner
Pricing
from $0.10 / scan run
Polymarket × Kalshi Arbitrage Scanner
Scans Polymarket and Kalshi, matches equivalent binary markets and surfaces risk-free arbitrage opportunities and price divergences.
Pricing
from $0.10 / scan run
Rating
0.0
(0)
Developer
Franclim Diogo
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Polymarket × Kalshi Arbitrage Scanner — Prediction Market Arbitrage Finder
Scan Polymarket and Kalshi in one run, automatically match equivalent binary (Yes/No) prediction markets across both platforms, and get back two kinds of actionable signals:
- Risk-free arbitrage opportunities — pairs where buying YES on one platform and NO on the other costs less than $1.00 total (Kalshi taker fees included), locking in a guaranteed return no matter the outcome.
- Price divergences — pairs where the implied probability differs by 3% or more between platforms, useful for traders with a directional view or for tracking where the "wisdom of crowds" disagrees with itself.
Run it on a schedule (hourly is recommended) and pipe results to webhooks, spreadsheets, or your own alerting.
Why this Actor?
Cross-platform prediction market arbitrage is real, but the hard part is matching: knowing that Polymarket's "Will the Fed cut rates in September?" and Kalshi's "Fed decision — September: Cut" are the same bet. This Actor takes a deliberately transparent approach: every result row shows you the similarity score, the exact shared terms that drove the match, and a confidence level — so you can verify the match yourself before risking a cent. No black-box embeddings silently pairing markets that resolve on different terms.
How it works
- Fetches the top Polymarket markets by 24h volume (Gamma API), keeping only strictly binary Yes/No markets above your liquidity threshold.
- Fetches all open Kalshi markets with live two-sided quotes (public trade API), excluding multivariate parlay combos.
- Matches each Polymarket market to its best Kalshi counterpart by lexical similarity (Jaccard over normalized title tokens, with a penalty when numeric thresholds/years disagree).
- For each matched pair, computes both hedge strategies —
YES@Polymarket + NO@KalshiandYES@Kalshi + NO@Polymarket— with Kalshi taker fees included, and keeps the cheaper one. - Outputs arbitrage rows (total cost < $1.00) sorted by guaranteed return, and divergence rows (probability gap ≥ 3%) sorted by gap size.
Input
| Field | Default | Description |
|---|---|---|
minSimilarity | "0.6" | Minimum title similarity (0–1) to accept a cross-platform match. Raise to 0.75+ for high-confidence pairs only. |
minPmLiquidity | 500 | Skip Polymarket markets below this liquidity (USD). |
minKalshiVolume24h | 0 | Skip Kalshi markets below this 24h volume. |
pmMarketsToScan | 600 | How many top-volume Polymarket markets to scan (max 2000). |
maxResults | 100 | Cap per category (arbitrage / divergence). |
Output fields
Each dataset row includes:
| Field | Description |
|---|---|
category | arbitrage or divergence |
strategy | e.g. YES@Polymarket + NO@Kalshi — the cheaper hedge |
total_cost | Total cost per $1 payout, Kalshi fee included |
guaranteed_return_pct | (arbitrage only) locked-in return % |
prob_gap_pct | (divergence only) implied-probability gap % |
kalshi_fee | Kalshi taker fee applied to the Kalshi leg |
pm_question, pm_url, pm_yes_price, pm_liquidity, pm_volume_24h, pm_end_date | Polymarket side |
kalshi_title, kalshi_ticker, kalshi_url, kalshi_yes_ask, kalshi_no_ask, kalshi_liquidity, kalshi_volume_24h, kalshi_end_date | Kalshi side |
similarity | Match score (0–1) |
shared_terms | The actual tokens both titles share — inspect these! |
confidence | high (≥ 0.75) or medium |
warning | Reminder to verify both markets resolve on identical terms |
A full run report (counts, parameters, errors, all rows) is also saved to the key-value store as REPORT.
Honest limitations
- Polymarket prices are midpoints. The Gamma API returns outcome prices, not a live order book; treat them as midpoints and expect some slippage on execution.
- Matching is lexical (v1). Jaccard similarity over title tokens catches most equivalent markets but can pair markets that resolve on subtly different terms (different deadlines, different resolution sources). Always read both markets before trading — that's why every row carries
shared_termsand awarning. - True arbs are rare and close fast. A single manual run will usually find zero arbitrage rows. Schedule hourly runs and act on alerts quickly.
- Fees: Kalshi taker fees are included; Polymarket gas/relayer costs and withdrawal frictions are not.
This is a market-scanning tool, not financial advice. Trading prediction markets involves risk, including from mismatched market pairs. Verify everything yourself.
Roadmap
- Semantic entity matching (v2) — LLM/embedding-assisted pairing with entity and date extraction
- More platforms: PredictIt, Limitless
- Webhook alerts for new arbitrage opportunities
- Order-book depth-aware sizing
Pricing
Pay-per-event: a small flat fee per scan run, plus a per-row fee for each opportunity found. You only pay for signal.