Every bot, in plain English
Sixteen bots are named across this mock. This page says what each one does, why it exists, when it fires and what actually happens when it does. Same five questions, same order, every bot, no exceptions.
The rule this page enforces
A bot that cannot be described in five short sentences is a bot nobody can supervise. So every bot answers the same five questions, in the same order, in the same voice:
does — what it does · why — the failure it prevents or the money it makes · fires when — a condition you could check yourself · and then — what actually happens · you see — what appears on screen.
The fourth one is the one everybody forgets. “A guard fired” is not information. “That one order was refused and you can still sell” is.
Always on — you cannot switch these off
3 botsThese run under every strategy on the platform whether you asked for them or not. There is no setting anywhere that turns them off, including for us. They are the reason you can start something and walk away from it.
Stop everything, now
risk.killswitchCancels every order you have resting and refuses every new one, across every strategy you are running.
When something is going wrong you need one action that definitely works, not seven separate ones you have to remember under pressure.
You press it. Or an operator presses the platform-wide one.
Everything stops inside two seconds. Your positions are left exactly as they are — it stops trading, it does not sell.
A red bar across the top and every strategy switches to Stopped.
Are you allowed to place this?
risk.compliancegateChecks where the order is coming from and that your builderCode is attached, before the order leaves the building.
An order placed from the wrong jurisdiction is a legal problem, and one placed without a builderCode is unpaid revenue. Neither can be fixed after the fact.
The geo check fails, or the builderCode is missing or has never been set.
The order is refused and never sent. Nothing reaches the venue.
The order row shows rejected, with the reason on the row rather than in a log.
Don't trade a market that has stopped
risk.markethaltguardWatches for the venue marking a market halted, resolved or disputed, and pulls you out of that one market.
Quoting into a halted market is how you get filled at a price that has stopped meaning anything.
The venue flags a halt, a resolution, or a dispute.
Your quotes on that market are cancelled. Every other market carries on untouched.
That market goes grey on Trader Home and says why.
The ones you actually set up
6 botsThese are the decisions you make when you build a strategy. Each asks a question in English and you answer with a slider or a switch. You never type a parameter name and you never see one.
Don't trade a price that stopped moving
risk.stalebookguardWatches how long it has been since the price last changed, and pulls your quotes if it has been too long.
A feed that has gone quiet looks exactly like a calm market on screen, and is actually no market at all. This is the difference.
No tick for longer than the number of seconds you set. Fifteen is the default.
Quotes are pulled from that market and go straight back up on the next real tick. Usually a few seconds.
A short pause in that market, with the gap and its length listed in the decisions.
Skip markets too thin to be worth it
risk.marketqualityguardMeasures the gap between the best buy and the best sell price, and stands you down from any market where that gap is too wide.
A wide gap means nobody is really trading. You can leave an order there all day, get filled once, and it will be by somebody who knows something you don't.
The spread goes wider than your limit — three cents by default — or the depth falls below your floor.
You stop quoting that market only. It starts again by itself when the market tightens up. Nothing to reset.
The market card says stood down and gives the current spread.
The most you can hold at once
risk.exposureguardAdds up what you are holding and refuses any order that would push you past your limit — per market, and across a whole group of related markets.
The single most common way to lose badly is not a bad trade, it is the same bad trade forty times. This is the thing that counts.
An order would take you past your per-market cap or your per-cluster cap.
That one order is refused. You can always still sell — closing a position is never blocked, by any guard, ever.
A line in the decisions saying you hit your own limit, with the two numbers.
When you stop for the day
risk.drawdownguardKeeps a running total of the day and stops you opening anything new once you are down by more than you said you would accept.
Nobody makes good decisions on a bad day. You pick the number in the morning, when you are calm, and it holds you to it in the afternoon, when you are not.
Today's loss crosses the number you set.
No new positions for the rest of the day. Existing ones stay open unless you asked it to close them too. It resets at midnight UTC.
A banner saying you have stopped for the day, and the number that did it.
Offer to buy and to sell, and earn the gap
strat.maker_tightPosts a buy just below the going price and a sell just above it, on both sides at once, and keeps them there.
You are not predicting anything. You are being the person other people trade against, and taking a small fee each time. The gap is the fee.
Continuously, on every market you selected, re-pricing about every ten seconds.
Two resting orders per market. When one gets hit you are holding something, and it keeps working to sell it back on the other side.
Fills arriving in ones and twos all day, each a small amount.
Where and how the order gets sent
exec.smartrouterPicks which venue to send each order to, and whether to send it in one piece or break it up.
The same order can cost meaningfully different amounts depending on where it goes. This is free money that requires no opinion about the market.
Every single order, before it leaves.
One order becomes one or more instructions to specific venues. You told it whether you care more about speed or about price.
A venue name against each fill, and the slippage number in the footer.
Written down, not running yet
7 botsSpecified, reviewed, frozen. Not wired to anything. They are on this page because hiding the roadmap from people building on top of you is a strange way to run a platform.
Notices when news lands
disc.headline_scannerReads the news wires and flags any market where a headline has just landed that mentions it.
A price that moves because of news is a different animal to one that drifts. Most bad market-making days start with a headline you did not see.
A matched headline appears against a market you hold or quote.
Raises a signal. It does not trade — other bots decide what to do with it.
Nothing yet. Specified, not running.
Decides when a market has actually finished
disc.outcome_resolverWorks out whether a market has genuinely resolved, and to which outcome, from more than one source.
The moment of resolution is when the money moves and when disputes happen. Getting it from a single source is how you end up on the wrong side of one.
A resolution is proposed on-chain or announced by the venue.
Confirms or disputes it, and releases the position for settlement.
Nothing yet. Specified, not running.
Turns the wider picture into one number
intel.macro_sentimentTakes rates, inflation prints and equity moves and reduces them to a single score per group of markets.
Election and rates markets do not move independently of the world. One number that other bots can read beats every bot reading the news itself.
Recomputed on every scheduled data release.
Publishes a score. Strategies may use it; none are required to.
Nothing yet. Specified, not running.
Bets against a sharp move
strat.fade_meanrevWhen a price jumps hard and fast, takes the other side, on the view that it has overshot and will come part of the way back.
Sharp moves in thin prediction markets are frequently one large order rather than new information. Those come back. Real news does not.
A price moves more than a set amount inside a set window.
Opens against the move, with a fixed time limit and a fixed loss limit.
Nothing yet. Specified, not running.
Takes the price now, pays for the privilege
exec.taker_aggressiveCrosses the spread and fills immediately instead of waiting to be hit.
Sometimes being in the position matters more than the two cents. This is the bot for those times, and it should be a deliberate choice.
A strategy explicitly asks for immediate execution.
Fills now, at a worse price than resting would have got.
Nothing yet. Specified, not running.
Records who signed what
sec.signing_auditWrites an immutable record of every order signature — which key, which wallet, which strategy, which second.
You are non-custodial. The only defence against a dispute about an order you did not place is a record you cannot have edited.
Every signature, without exception.
Appends to an append-only log. Nothing can remove an entry.
Nothing yet. Specified, not running.
Checks a strategy before it is allowed to run
gov.strategy_lintRuns a strategy bundle against the platform rules and refuses to promote it if it breaks one.
Guards only work if every strategy actually has them. This is the thing that checks.
Every promotion attempt, at every rung of the ladder.
Passes it up a rung, or refuses with the specific rule it broke.
Nothing yet. Specified, not running.
Every card on this page is generated from one record in BOTS. The same record supplies the one-liner under each card on the ladder, the guard descriptions on a running strategy, and the label in the builder. There is no second copy deck and therefore no way for them to disagree.
All five fields are required. A bot with a missing then fails the build rather than rendering an empty row — the field everybody forgets is the field that is hardest to make optional.
The owner field drives the badge, the border colour and the grouping, and it is derived, not authored: a bot appears under “always on” if and only if it is in the platform policy set, which is the same list the engine loads at start-up.