Reference · How the interpreter works

Your strategy is just a config file.

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.

JSON config your strategy Fetch markets every 5 min Apply entry rules signals → match? Simulated fill at the YES ask Settle at expiry real outcome repeats 24/7
The engine runs this loop every 5 minutes, around the clock — against live markets, with simulated money.
01 / THE CONFIG

Five keys define a strategy.

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.

strategy.jsonCopy
{
  "platforms": ["kalshi", "poly"],
  "categories": ["weather"],
  "entry": { /* signal fields — see /signals */ },
  "exit": { "at": "expiry" },
  "sizing": { "type": "flat", "amount_cents": 500, "max_concurrent": 5 },
  "side": "YES"
}
platformsWhich exchanges to scan — kalshi, poly, or both.
categoriesThe market families to consider — e.g. weather, crypto, macro. This scopes which anchors are even relevant.
entryThe signal fields that must all be true to trade. This is where everything from the signal catalog goes.
exitWhen to close. In v1 this is "at": "expiry" — hold until the market resolves.
sizingStake and risk caps. Flat $5/trade (500 cents) in v1, with max_concurrent open positions.
sideWhich contract to buy when the rule fires — YES or NO.
Everything is flat $5/trade in v1. So when you see "+$6" on a strategy, that's profit on a $5 stake — not $50. Position sizing beyond flat stakes is on the roadmap; for now, returns are honest about the small base.
02 / THE LOOP

What happens every 5 minutes.

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.

Fills are simulated at the YES ask, not the midpoint — so the paper P&L reflects the price you'd really have crossed the spread to get. No optimistic mid-fills.
03 / TWO WAYS TO RUN IT

Backtest is research. The leaderboard is proof.

The same config can run two ways, and the difference is everything:

RESEARCH

Backtest

Replays your config against historical data. Instant, repeatable — but hindsight. Easy to overfit.

never on leaderboard
PROOF · 14 DAYS

Out-of-sample

Runs forward against live data that didn't exist when you wrote the rule. Needs 14 days & ≥30 trades.

earning eligibility
PUBLISHED

Live on leaderboard

Once it clears out-of-sample, it's public — browsers can see the stats and unlock the rules.

live & ranked Watch them live →

Backtesting 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.

04 / ALWAYS ON

Your strategy runs 24/7 — you don't have to.

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.

Want the exhaustive field-by-field reference — every operator, every default, every edge case? That lives in /docs. This page is the friendly tour; /docs is the spec.
05 / OR DON'T START FROM SCRATCH

Fork a proven bot, then let an AI improve it.

Writing the config yourself is one path. The other: fork a bot that already works — one of our house bots, or a promoted leaderboard winner — into your own account, then point an AI at it. Most rewrites won't beat the original, and that's the whole point of the head-to-head backtest: you only apply the version that actually wins.

1
Fork it — free. Copy any of our house bots into your own account. All it takes is a free account (magic link, no card).
2
Improve it with Grok — your first run is on us. Every new account starts with one credit, and a Grok rewrite costs exactly one (win or lose). You see the head-to-head backtest before you apply it.
3
Want Opus 4.8 & Claude 5 too? $5 = 6 credits — one run of each model (Grok 1 · Opus 2 · Claude 5 3), raced head-to-head.
Fork @grok's live bot → Browse winning bots

Now write one.

Pick a topic, stack some signals, and the builder generates this config for you. It's free with an account (no card) — build & save your bot, turn it on, and watch it paper-trade 24/7 on the public leaderboard.