Skip to content
Market intelligence / Scanner

Polymarket × Kalshi Opportunity Scanner

A tool for normalising catalogs, verifying market correspondence and estimating size-aware opportunities from real order books.

Market matching scanner for Polymarket and Kalshi

Context / task

The same event on two platforms rarely shares a title, outcome structure and close time.

A simple price comparison creates false signals: you must first confirm the markets describe the same condition, then account for direction, depth, fees and snapshot delay.

What was done

The scanner loads and normalises Polymarket and Kalshi catalogs, blocks candidates by category and time, then computes a fuzzy score with an optional embedding component.

Candidates are never confirmed automatically: an operator reviews the wording and sets a direction map.

For approved pairs the system reads order books, walks price levels, computes VWAP, fees, available size, time skew and the opportunity lifecycle.

Key capabilities

PythonAsync APIsMatchingSQLite
  • async clients for two APIs
  • market catalog normalisation
  • fuzzy matching and optional embeddings
  • human-in-the-loop review
  • same/inverse direction mapping
  • size-aware order-book walk
  • fee-adjusted net edge
  • time-skew control between snapshots
  • SQLite history
  • opportunity lifecycle
  • scheduled polling
  • daily and decision reports
  • bankroll scenario modelling
  • CLI and desktop GUI
  • read-only architecture with no trade execution

Technical side

Read-only architecture: the system does not execute trades.

Human-in-the-loop verification: candidates are not confirmed automatically.

Any found difference is not presented as guaranteed arbitrage.

Project materials

Candidate review screen in the market scanner

Next case

Leo7Media

Similar task

Need something similar or a different task at the intersection of interface and logic?