No code runs on your behalf. A strategy is a small JSON object; our engine reads it every 5 minutes and decides whether to simulate a trade. Here's the whole pipeline.
Whether you use the visual builder or write it by hand, every strategy compiles to the same shape. Five top-level keys: where to look, what to look for, when to exit, how much to stake, and which side to take.
{ "platforms": ["kalshi", "poly"], "categories": ["weather"], "entry": { /* signal fields — see /signals */ }, "exit": { "at": "expiry" }, "sizing": { "type": "flat", "amount_cents": 500, "max_concurrent": 5 }, "side": "YES" }
The engine wakes up, pulls the current state of every market on your chosen platforms & categories, and checks each one against your entry rules. A market that passes every signal becomes a candidate.
For each candidate, the engine simulates a buy at the current YES ask — the real, live price, including the spread you'd actually pay. It logs the hypothetical fill, then waits. When the market resolves, it settles the position at the real outcome ($1 or $0) and books the paper P&L.
The same config can run two ways, and the difference is everything:
Replays your config against historical data. Instant, repeatable — but hindsight. Easy to overfit.
never on leaderboardRuns forward against live data that didn't exist when you wrote the rule. Needs 14 days & ≥30 trades.
earning eligibilityOnce it clears out-of-sample, it's public — browsers can see the stats and unlock the rules.
live & rankedBacktesting is for iterating fast on an idea; the forward window is what earns trust. We keep them strictly separate — a backtest never appears on the leaderboard, because hindsight isn't evidence.
Once published, the engine keeps running your config every 5 minutes against live markets, whether you're watching or asleep. It logs every simulated trade to your dashboard. After 14 days and at least 30 trades, the strategy becomes leaderboard-eligible and can start earning unlock revenue.
Pick a topic, stack some signals, and the builder generates this config for you.