Gabriel Kagan

Kalshi Bot — Live Performance

I built a prediction-market trading bot. Here's how it's doing, updated from production.

Loading · — trades · — days live · updated
Cumulative return % since inception
Win rate
All-time peak
highest cumulative return
Max drawdown
peak to trough
Sharpe ratio
annualized, daily returns
Profit factor
gross wins ÷ gross losses
Total trades

How it works

I built this bot to trade short-duration prediction markets on Kalshi — the first CFTC-regulated event-contract exchange in the US. It's been running on a VPS since February 2026, trading real capital 24/7 with a full audit trail.

The edge is simple: Kalshi prices are often wrong by a few cents for a few minutes. I estimate settlement probabilities with an EGARCH volatility model — the standard approach for crypto returns — and compare to the market's implied probability. When the gap beats fees, the bot enters. When it doesn't, the bot sits.

Position sizing is Kelly-fraction, capped so no single trade can blow the account. Execution is maker-first for fee efficiency, escalating to taker when the window's about to close. Every decision is logged.

The hard work isn't the signal — it's the calibration. Making sure a "93%" trade actually wins 93% of the time. I train a Beta calibrator per asset, temperature-scale the output, and backtest every pipeline change against live results. The plot below shows predicted vs realized.

Is the model honest?

Each point is a bucket of trades predicted at a given probability. Points on the diagonal mean the model was right — a bucket predicted at 90% actually won 90% of the time. Off-diagonal = systematic bias. I watch this tightly.

Calibration reliability — predicted vs realized