Case study

Kalshi Automated Trading System

A weekend that turned into two trading bots sharing one execution engine. One chased whale consensus, one traded crypto binaries, and together they traded live across 820+ markets. I ran it for about a month, then switched it off.

820+ markets traded live. 12,775 markets backtested, 93.5% win rate, 0% Monte Carlo risk of ruin.

The thesis

Prediction markets price events by aggregating opinions, but the opinions are not equal. A handful of accounts on Kalshi consistently moved markets when they traded. If those accounts agreed on a direction, following them should be profitable, because their information was better than the crowd average. The question was whether that signal was strong enough to survive fees and slippage, and whether I could detect it fast enough to act on it.

What it did

How it was built

Python throughout, with WebSocket streams feeding live prices to both strategies and one execution layer underneath them, so sizing and fills behaved identically whichever bot fired.

I did not trust it, which turned out to be the useful instinct. Before any real money went in I backtested the whale strategy across 12,775 markets and ran a 10,000-path Monte Carlo, less to prove it worked than to find out how it would die. Then I built the parts that stop it: fractional Kelly sizing so no single position could matter too much, circuit breakers on the strategy level, and a kill switch at 40% drawdown. In its first week live it turned $20 into $500, on stakes deliberately small enough that a bad week would have cost me nothing.

The last piece was a Telegram bot, and it is the part I would build first next time. Every fill, every whale signal, every breaker trip arrived on my phone, and one message killed everything. It ran in Docker on GCP, which meant I was never at the machine when it mattered. Being able to stop it from a train was the difference between something I could leave running and something I could not.

Python, WebSockets, Docker, GCP.

No longer running, April 2026.

Back