We built and ran Polyflux — a real-time, wallet-level data layer for Polymarket — and traded the markets with it. The paid service has shut down. The experience, the research and the full on-chain history are still here.
Hands-on, end to end: from the node to the order book to the P&L.
Our own Polygon full node (Bor + Heimdall) and a mempool pipeline that streamed every Polymarket trade, deposit, withdrawal and oracle event to customers roughly 1.5 seconds before it confirmed on-chain.
A real-time WebSocket API and Python SDK, a Trades Inspector that reveals every wallet behind a market, wallet tracking with Telegram and Discord alerts, a disputed-markets monitor, and a wallet profiler.
Built tooling to flag wallets that look like they trade on information before it is public: timing against news and resolution, position size relative to history, wallet age and funding patterns. Wallet-level data makes this possible; aggregate feeds do not.
Designed and ran a trading model for Polymarket's 5-minute crypto up/down markets: fast-resolving, high-frequency contracts where order flow, pricing lag and execution speed matter more than opinion.
We used the same wallet-level order flow to trade Polymarket — profitably, across a range of markets. We know the microstructure, the resolution edge cases and the behaviour of the big wallets from the inside.
Wallet-level studies, strategy write-ups and market analyses on the blog — wallet types, whale behaviour, copy-trading, forgotten wallets, panic-seller dynamics, UMA disputes. All still online.
We published the complete on-chain history of Polymarket as a frozen archive on Hugging Face: every fill, split, merge and redemption from the first CLOB trade on 21 November 2022 to 26 October 2026, with no gaps. Decoded from our own Polygon node and cross-checked day by day against independent indexers.
Built for research: time-series, wallet behaviour, market microstructure, resolution analysis. Use it, cite it, build on it.
View on Hugging Face# pip install polars huggingface_hub import polars as pl # One day of fills — every row is one wallet's side of an on-chain event df = pl.read_parquet( "hf://datasets/ieshuaganocry/polymarket-onchain-trades/data/year=2025/day_2025-11-04.parquet" ) # Taker rows only, so volume isn't double-counted takers = df.filter(pl.col("wallet_role") == "taker") print(takers.select((pl.col("size") * pl.col("price")).sum()))
If you're building on Polymarket, researching prediction markets, or want a second pair of eyes from people who ran the data and traded on it, get in touch. No pitch, just a conversation.
hello@polyflux.ioOur articles on wallet behaviour, strategies and Polymarket's market structure are still published on the blog.