← All projects

July 8, 2026

Polymarket whale tracker

A live dashboard that follows the 50 most profitable Polymarket traders into sports markets resolving in the next 24 hours, and scores each position for conviction.

PolymarketPythonFlaskLive data

Prediction markets publish every wallet’s positions. That means you can watch what the best traders are actually doing with their money, not what they say. This dashboard turns that firehose into a short list: sports positions from proven winners that resolve within a day, ranked by how much conviction is behind them.

Finding the whales

ingest_top_wallets.py queries the Polymarket Analytics API across 10 categories (politics, crypto, sports, economics, tech and more). It collects the top 100 traders in each, deduplicates by wallet address, sums profit across categories, and keeps the top 50 by total profit. Re-running it refreshes the list as rankings shift.

Live positions

A background thread polls the Polymarket Data API for every tracked wallet every two minutes. Each position is classified by sport from the market title and event slug, including esports like Valorant, CS2, League of Legends and Dota. The dashboard then filters down to:

  • sports markets only,
  • positions resolving within 24 hours, and
  • prices inside a sane odds range (nothing shorter than −250).

Conviction scoring

A $5,000 position means something very different from a wallet that usually bets $50 than from one that usually bets $50,000. So every position gets a 0–100 conviction score, a weighted blend of five signals:

Signal Weight What it measures
Size vs. wallet 25% Percentile of this bet among the wallet’s own positions
Size vs. category 20% Same, but only within that sport
Category skill 25% The wallet’s win rate in this category, shrunk toward 50% when the sample is small
Concentration 15% Share of the wallet’s portfolio riding on this position
Sharp consensus 15% How many other tracked whales hold the same side
skill = 50 + (clamp(50 + 2·(win% − 50)) − 50) · min(1, √markets / 10)

The square-root confidence term stops a wallet that’s 3-for-3 in a sport from looking like a genius.

Turning signals into cards

Positions on the same market and side are collapsed into one card, so five whales on the same team show up as one stronger signal rather than five rows. Cards are deduplicated by market and colored on a conviction ramp. Each one carries a suggested tail stake, a fraction of a base unit scaled by conviction. A drawer shows every wallet behind the position with its size, P&L and skill.

Stack

  • Python + Flask serving a single-page dashboard and JSON endpoints (/api/positions, /api/wallets)
  • In-memory position universe: no database; conviction is computed fresh on each refresh
  • Public APIs only: Polymarket Analytics for rankings, the Polymarket Data API for positions, no keys required
  • Deploys to Render from a render.yaml