⚠ INTERNAL — Operator UX mock · Design preview of V2 development path · demo-wired ≠ production-live · back to dev guide
Bot Library/Every bot, in plain English
Polygon · pUSD 10
📓 Developer Guide 📋 Reason Codes 📈 Shadow Mode
JD John Doe · Admin

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 bots

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

always on

Stop everything, now

risk.killswitch
does

Cancels every order you have resting and refuses every new one, across every strategy you are running.

why

When something is going wrong you need one action that definitely works, not seven separate ones you have to remember under pressure.

fires when

You press it. Or an operator presses the platform-wide one.

and then

Everything stops inside two seconds. Your positions are left exactly as they are — it stops trading, it does not sell.

you see

A red bar across the top and every strategy switches to Stopped.

RISK_KILLSWITCH_TRIPPED what you can change →
always on

Are you allowed to place this?

risk.compliancegate
does

Checks where the order is coming from and that your builderCode is attached, before the order leaves the building.

why

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.

fires when

The geo check fails, or the builderCode is missing or has never been set.

and then

The order is refused and never sent. Nothing reaches the venue.

you see

The order row shows rejected, with the reason on the row rather than in a log.

RISK_GEOFENCE_BLOCK what you can change →
always on

Don't trade a market that has stopped

risk.markethaltguard
does

Watches for the venue marking a market halted, resolved or disputed, and pulls you out of that one market.

why

Quoting into a halted market is how you get filled at a price that has stopped meaning anything.

fires when

The venue flags a halt, a resolution, or a dispute.

and then

Your quotes on that market are cancelled. Every other market carries on untouched.

you see

That market goes grey on Trader Home and says why.

RISK_MARKET_HALTED what you can change →

The ones you actually set up

6 bots

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

you set this

Don't trade a price that stopped moving

risk.stalebookguard
does

Watches how long it has been since the price last changed, and pulls your quotes if it has been too long.

why

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.

fires when

No tick for longer than the number of seconds you set. Fifteen is the default.

and then

Quotes are pulled from that market and go straight back up on the next real tick. Usually a few seconds.

you see

A short pause in that market, with the gap and its length listed in the decisions.

RISK_BOOK_STALE_15S what you can change →
you set this

Skip markets too thin to be worth it

risk.marketqualityguard
does

Measures the gap between the best buy and the best sell price, and stands you down from any market where that gap is too wide.

why

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.

fires when

The spread goes wider than your limit — three cents by default — or the depth falls below your floor.

and then

You stop quoting that market only. It starts again by itself when the market tightens up. Nothing to reset.

you see

The market card says stood down and gives the current spread.

RISK_SPREAD_WIDE what you can change →
you set this

The most you can hold at once

risk.exposureguard
does

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

why

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.

fires when

An order would take you past your per-market cap or your per-cluster cap.

and then

That one order is refused. You can always still sell — closing a position is never blocked, by any guard, ever.

you see

A line in the decisions saying you hit your own limit, with the two numbers.

RISK_EXPOSURE_CAP_HIT what you can change →
you set this

When you stop for the day

risk.drawdownguard
does

Keeps a running total of the day and stops you opening anything new once you are down by more than you said you would accept.

why

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.

fires when

Today's loss crosses the number you set.

and then

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.

you see

A banner saying you have stopped for the day, and the number that did it.

RISK_DRAWDOWN_TRIGGERED what you can change →
you set this

Offer to buy and to sell, and earn the gap

strat.maker_tight
does

Posts a buy just below the going price and a sell just above it, on both sides at once, and keeps them there.

why

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.

fires when

Continuously, on every market you selected, re-pricing about every ten seconds.

and then

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.

you see

Fills arriving in ones and twos all day, each a small amount.

STRAT_MAKER_QUOTE_INSIDE what you can change →
you set this

Where and how the order gets sent

exec.smartrouter
does

Picks which venue to send each order to, and whether to send it in one piece or break it up.

why

The same order can cost meaningfully different amounts depending on where it goes. This is free money that requires no opinion about the market.

fires when

Every single order, before it leaves.

and then

One order becomes one or more instructions to specific venues. You told it whether you care more about speed or about price.

you see

A venue name against each fill, and the slippage number in the footer.

EXEC_ROUTE_CTFV2_ACCEPTED what you can change →

Written down, not running yet

7 bots

Specified, 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.

not built yet

Notices when news lands

disc.headline_scanner
does

Reads the news wires and flags any market where a headline has just landed that mentions it.

why

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.

fires when

A matched headline appears against a market you hold or quote.

and then

Raises a signal. It does not trade — other bots decide what to do with it.

you see

Nothing yet. Specified, not running.

DISC_HEADLINE_MATCH what you can change →
not built yet

Decides when a market has actually finished

disc.outcome_resolver
does

Works out whether a market has genuinely resolved, and to which outcome, from more than one source.

why

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.

fires when

A resolution is proposed on-chain or announced by the venue.

and then

Confirms or disputes it, and releases the position for settlement.

you see

Nothing yet. Specified, not running.

DISC_RESOLUTION_CONFIRMED what you can change →
not built yet

Turns the wider picture into one number

intel.macro_sentiment
does

Takes rates, inflation prints and equity moves and reduces them to a single score per group of markets.

why

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.

fires when

Recomputed on every scheduled data release.

and then

Publishes a score. Strategies may use it; none are required to.

you see

Nothing yet. Specified, not running.

INTEL_MACRO_SCORE what you can change →
not built yet

Bets against a sharp move

strat.fade_meanrev
does

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

why

Sharp moves in thin prediction markets are frequently one large order rather than new information. Those come back. Real news does not.

fires when

A price moves more than a set amount inside a set window.

and then

Opens against the move, with a fixed time limit and a fixed loss limit.

you see

Nothing yet. Specified, not running.

STRAT_FADE_ENTRY what you can change →
not built yet

Takes the price now, pays for the privilege

exec.taker_aggressive
does

Crosses the spread and fills immediately instead of waiting to be hit.

why

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.

fires when

A strategy explicitly asks for immediate execution.

and then

Fills now, at a worse price than resting would have got.

you see

Nothing yet. Specified, not running.

EXEC_TAKER_FILLED what you can change →
not built yet

Records who signed what

sec.signing_audit
does

Writes an immutable record of every order signature — which key, which wallet, which strategy, which second.

why

You are non-custodial. The only defence against a dispute about an order you did not place is a record you cannot have edited.

fires when

Every signature, without exception.

and then

Appends to an append-only log. Nothing can remove an entry.

you see

Nothing yet. Specified, not running.

SEC_SIGNATURE_RECORDED what you can change →
not built yet

Checks a strategy before it is allowed to run

gov.strategy_lint
does

Runs a strategy bundle against the platform rules and refuses to promote it if it breaks one.

why

Guards only work if every strategy actually has them. This is the thing that checks.

fires when

Every promotion attempt, at every rung of the ladder.

and then

Passes it up a rung, or refuses with the specific rule it broke.

you see

Nothing yet. Specified, not running.

GOV_LINT_FAILED what you can change →
for developers

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.

← Where each bot sits on the ladder A running strategy → Words we use →
Polytraders Operator UX Mock · INTERNAL · demo-wired ≠ production-live · how this works · words we use · the plan · reason codes · shadow-mode pipeline
⚙ Page Configuration
Current page settings
Loading configuration…