Short answer: not yet · not well · and probably not in the shape you're imagining. Here's the operator-honest read on what exists, what's buildable, and what the SideGuy framework runs instead.
The conventional backtest pattern assumes long-running markets with deep liquidity and predictable closing mechanics — equities, futures, FX. Prediction markets violate all three.
Most Kalshi event contracts resolve in hours to days. Polymarket sports markets resolve in single game windows. Year-over-year historical data doesn't exist for the bulk of markets because the markets themselves only existed for a few days. A traditional backtest expecting decades of price action has nothing to chew on.
An equities backtester can assume your $10,000 order fills at the printed price because the underlying market handles millions of dollars per minute. A Polymarket sports prop at $1,200 of total liquidity cannot honestly fill a $5,000 simulated order. Backtests that ignore this systematically overstate strategy returns.
The strategies that produce real returns in prediction markets are not the strategies that backtest well:
All four depend on operator judgment exercised in real time. None backtest cleanly because the action that creates edge happens AFTER the entry · not at the entry.
Four narrower projects an operator can ship with Python + the APIs:
| Tool | What it does | Effort |
|---|---|---|
| Closing-line-value tracker | Pull every settled Kalshi + Polymarket market you bet, compare entry price vs final settle, compute CLV by strategy class | ~1 week |
| Cross-platform arb scanner | Match same events across Kalshi + Polymarket + Underdog, alert when implied probabilities diverge beyond a threshold | ~2 weeks |
| Paper-trade engine | Consume live API data, simulate entries/exits per strategy spec, log P&L without real capital · honest about fill assumptions | ~2-3 weeks |
| Doctrine-tagged rep log | Every position logged with platform/stake/strategy-tag/settle-outcome · the SideGuy "bets-in-the-repo" pattern | ~1 day |
The last is the most operator-honest. Backtesting backwards on data you didn't generate from your own strategy execution is most often a self-deception. Logging forward on positions you DID take is real signal.
Instead of trying to backtest a strategy on synthetic historical data, SideGuy operates a continuous-learning substrate:
intelligence/bets/state.json with platform, stake, doctrine tags, correlation noteslog.jsonl (append-only) with result + net P&L + twofor payoff modeThis is the release-carve operating system in production. The "release" is the locked-rail bet (Underdog parlay, Kalshi single, Polymarket entry). The "carve" is the real-time modulation (Polymarket inverse hedges, partial exits, asymmetric sizing).
Full doctrine: /sideguy-betting-lab.html — the public Betting Lab framework page.
If you Googled "is there a platform that can automatically backtest strategies on Kalshi and Polymarket?" — the answer is no production-grade unified one exists, the structural reasons above explain why, and the operator-honest move is to build the doctrine-tagged rep log forward instead of trying to backtest backward.
SideGuy runs this approach openly. The state file is in the repo · the doctrine library is public · the carving math is documented. If this matches what you were searching for, text PJ — we may be on the same operator wavelength.
The SideGuy Betting Lab is the public doctrine page · 12 layers of structure, from bracket / middle / gap through the release-carve operating system that replaces backtesting.
Read the SideGuy Betting Lab© 2026 SideGuy Solutions · Encinitas, CA · Text PJ 858-461-8054