Five bots with five stop-losses is not a risk limit
You have several things running — a ladder on ETH, a grid on SOL, something signal-driven on BTC. Individually they are all sized sensibly. What you want is a statement about the whole account.
Never let me be down more than 3% on the day, across everything. Never let total exposure exceed 2× equity. Never let more than 40% of that exposure sit in things that move together. If any of those breaks, stop opening anything new — and tell me immediately.
Why this is hard on a bot platform
Because each bot has its own stop-loss, and a collection of stop-losses is not a risk limit.
A per-bot stop knows one position: its own. It cannot see the other four. So the number you actually care about — how much am I down today, across everything — is not computed anywhere on the platform. You compute it yourself, by opening five screens and adding up.
- Correlation is invisible.
- Long ETH, long SOL and long a basket of alts is one bet wearing three hats. Every individual position is within its limit, and together they are a single concentrated position. No per-bot setting can see this, because correlation is a property of the portfolio, not of a position.
- Limits react instead of preventing.
- A stop-loss triggers after the loss. Something that stops you opening the trade that would breach a limit has to sit between the strategy and the exchange — and on a bot platform, nothing does.
- The kill switch is you.
- When something goes genuinely wrong — a venue outage, a flash move, a strategy behaving unexpectedly — the platform’s answer is that you go and stop five bots by hand, one at a time, while it is happening.
The graph
Risk is not a setting. It is a node every order passes through.
- It sits in the path, not beside it.
- An order that would breach a limit is refused before it leaves. That is the difference between a limit and a report.
- It aggregates.
- Exposure is summed across every running graph, so the number is the real one, not a per-bot fragment.
- It runs server-side.
- The guard is enforced where the orders are sent, not in a browser tab that has to be open. A limit that depends on your laptop being awake is not a limit.
- Breaching is a state, not just an event.
- When the daily ceiling is hit, the graph stops opening new positions and says so — it does not merely log a line you find later. Existing positions are handled by whatever you drew: flatten, hold, or unwind on a schedule.
- It tells you.
- An outbound webhook node on the breach edge puts it in Discord or on your phone the moment it happens.
The same guards, and why they sit in the order path rather than beside it, are covered on risk.
What you see while it runs
The live numbers are on the guard, next to their ceilings — down 1.4% of a 3% allowance, 1.6× of a 2× cap. Not a figure you assemble from five screens.
When an order is refused you see which limit refused it and by how much. When a strategy quietly stops trading, the reason is on a node rather than being something you have to infer from an empty fill list.
Variations on the same shape
- Per-strategy sub-limits.
- A guard on one graph, nested under the account guard. Both apply; the tighter one wins.
- Time-based caps.
- No new positions in the hour around a scheduled macro release.
- Venue-level limits.
- A separate exposure ceiling per exchange, so one venue's outage cannot take the whole account with it.
- Loss-streak throttling.
- Halve position size after two consecutive losses, restore it after a win — a counter feeding the sizer.
- A manual kill switch.
- One control that halts every graph at once, rather than five bots stopped one at a time.