Research Platform · Paper only

Is Risk-Free Profit Possible in New Prediction Market Platforms?

I built a cross-venue research system to test apparent arbitrage between Kalshi and Polymarket, then used the evidence to reject the strategy rather than force a positive result.

Try the live arbitrage demo →

The question

Prediction markets are a new, often highly volatile, and fast-growing financial instrument. This project asks a simple question: could a solo trader capitalize on that volatility by capturing price mismatches across the two biggest prediction-market exchanges?

Fees, latency, liquidity, resolution conditions, and operational risk are all in play, and the project weighs the question against every one of those constraints. The answer resolves to one word: no. Pure arbitrage—even with low-latency wireless proxy servers stationed miles from the exchanges’ own servers—is not possible.

What I built

A fully operational prediction-market arbitrage bot, built to execute trades and live-test in real time—since retired to a research-only platform.

  • Concurrent Kalshi and Polymarket order-book capture over REST and WebSocket feeds.
  • RSA-PSS signed Kalshi authentication and a kill-switch-gated order path, retired to read-only, paper-only operation for research.
  • Contract-equivalence review, quote normalization, freshness and skew gates, and depth-aware price calculations.
  • Fee, VWAP, slippage, collateral-carry, and failed-leg modeling so a displayed spread is not treated as profit.
  • A FastAPI monitoring surface and a regression suite covering the data path, UI routes, and fail-closed controls.
The result was a no-go.

The final 24-hour-plus live soak captured 2,959,486 order-book rows across 26 approved cross-market pairs, with both legs of every trade staying within 52.3 ms of each other on average. Even at that level of precision, no approved pair cleared a one-cent profit once real fees and order-book depth were factored in.

The long story

This bot started as a do-first, think-later project. The first step was scraping every public resource I could find of people attempting something similar and pulling out anything useful, which turned out to be not much.

From there, the work turned into research: learning exactly how Kalshi and Polymarket actually operate, down to their fee structures, their APIs, rate limits, and settlement mechanics.

Only after that did the real problem show up: finding contracts on the two venues that were actually equivalent. Plenty of pairs looked extremely similar on the surface, but their fine-print resolution conditions differed in ways that could leave a trader—me—holding two losing positions instead of one arbitrage. Getting this right mattered more than anything else in the project, so pair selection ran through both an AI-assisted screen and a manual, human review of the actual contract language. Out of hundreds of candidate pairs, 26 high-value, exact matches survived that process and were cleared for testing.

Testing almost lied to me. An early run looked genuinely profitable, until I traced it back to a bid/ask normalization defect that was quietly inflating the spread. I fixed the live data path, built an idempotent backfill to correct the rows it had already touched, and added regression coverage so the same bug couldn’t come back unnoticed. Once the fix was in, the attractive result disappeared—which was the correct outcome. The project was never supposed to find a number I liked; it was supposed to find the true one.

That bug is a fair summary of the whole project. The exciting result was wrong, and the boring, correct one was no. I’d rather build something that tells me the truth than something that tells me what I want to hear—the bot didn’t survive contact with real fees, latency, and fine print, but the platform underneath it did, and that’s the part worth carrying forward.

Skills along the way

  • Backend and data-pipeline design under timing and market-structure constraints.
  • Turning financial assumptions into explicit, testable gates.
  • Safety engineering: read-only credentials, fail-closed controls, and paper-only execution.
  • Using negative evidence to make a decision instead of tuning until a strategy looks successful.

What’s next

With this initial platform we can expand to:

  • Prediction-market attention tracker + AI confidence
  • Mean reversion
  • Statistical arbitrage

What’s next, expanded

Prediction-market attention tracker + AI confidence. This one breaks from everything above it: not arbitrage, and not market-neutral. It tracks where attention, volume, and new information are shifting within a single market, scores the strength of that signal with an AI-generated confidence rating, and takes a directional position on one side of the contract. That means real, unhedged risk instead of a locked-in spread—the opposite trade-off from the rest of this project, and worth exploring precisely because of that difference.

Mean reversion. Pure arbitrage needs both legs to fill at once, which is exactly what turned out not to be viable. Mean reversion doesn’t share that requirement—it bets on a single contract’s price snapping back toward a fair-value estimate after it drifts too far, reusing the same order-book capture and quote-normalization pipeline already built, just pointed at one venue at a time.

Statistical arbitrage. Instead of only trading contracts that are supposed to be identical, a statistical approach looks for correlated markets whose prices tend to move together and trades the relationship rather than a single mismatch. It’s a natural extension of the fee, slippage, and depth models this platform already has—they just get pointed at relationships instead of a single spread.

Longer term, none of this has to stay limited to Kalshi and Polymarket. Newer prediction-market platforms are launching with their own market makers, liquidity, and volatility profiles—a wider and more varied basket of venues than the two this project tested. The same infrastructure—concurrent capture, contract-equivalence review, fee and depth modeling—is built to point at whichever venues are worth questioning next.

Learn about it hands-on

You don’t have to take my word for any of this. There’s a lightweight version of the arbitrage bot running live on this site, and you’re welcome to poke at it yourself.

A few honest caveats first: the pairs in this demo haven’t been through the same resolution-condition review as the 26 pairs in the real research run, so treat them as illustrative, not verified equivalents. It’s also read-only—no orders, no credentials, nothing that touches money—and it samples on a simple polling interval instead of the low-latency, always-on capture the full system used, so it can’t scan and react anywhere near as fast. What it does give you is the real thing in miniature: live public order books from Kalshi and Polymarket, updating in real time, fully testable, right in your browser.

Try the live arbitrage demo →