AAlphaBot
← Blog

Portfolio risk engine vs per-bot exposure

2026-05-06 · ~6 minute read

Most consumer trading platforms let you spin up multiple bots and assign each of them a per-bot risk cap. The interface looks tidy. The math is bad. When the bots happen to be correlated, which they almost always are during volatile windows, the customer is running a portfolio with no portfolio-level risk cap and does not realise it. This post is why we run a single cap across every bot on an account.

What “per-bot risk cap” actually means

On a per-bot model, each bot has a maximum drawdown, a maximum position size, or a maximum daily loss. If three bots each have a 5% drawdown stop on a $10,000 account, the customer often reads that as “5% maximum drawdown.” That is wrong. The actual ceiling is the sum of the three caps if all three drawdown together — potentially 15% — and during a correlated market move that is exactly what happens.

Correlation in crypto is high during the moves that matter

BTC, ETH, and the top altcoin perpetuals tend to move together in volatile windows. A bot trading BTC, a bot trading ETH, and a bot trading SOL look like three independent strategies in quiet markets. In a 5% market-wide candle, they all draw down together because their underlyings did. The diversification the customer thought they had is gone exactly when they needed it.

What a portfolio-level cap looks like, illustrative

# Illustrative — single-cap behaviour during a correlated move
Account equity:                        $10,000
Portfolio max drawdown cap:            5%      ($500)

Bot 1 (BTC perp)   open drawdown:     -$280
Bot 2 (ETH perp)   open drawdown:     -$150
Bot 3 (SOL perp)   open drawdown:     -$ 90
                                      -------
Aggregate drawdown:                   -$520   <- HARD CAP HIT

Risk engine action:
  - flatten the bot with the worst risk-adjusted exposure first
  - pause new entries on remaining bots until equity recovers
  - leave existing winning legs alone if they are inside the cap

The same scenario on a per-bot model would have left all three bots running, because each was inside its own 5% cap. The account-level loss would have continued.

Why per-bot caps survive in the market

They are easier to ship and easier to explain. A risk slider on each bot card looks like a feature. A single account-level risk cap looks like a constraint. The first one feels like control; the second one is what actually controls outcomes. The marketing incentive points the wrong way.

Concrete things a portfolio engine has to do

  1. Compute aggregate exposure across every open position on the account, in account currency, at the same instant. Stale numbers are worse than no number at all.
  2. Compute aggregate drawdown vs the account's peak equity, and compare against a single cap.
  3. Pick a deterministic order in which bots are throttled or paused when the cap is hit, so the customer can predict behaviour. (We unwind worst-risk-adjusted exposure first.)
  4. Refuse to open new positions on any bot when the account is inside a configurable buffer of the cap, even if the individual bot would be allowed to trade.
  5. Log every cap-driven action with a timestamp and reason, so the customer can audit it after the fact. Black-box risk is the worst kind.

What this trades off

The portfolio model has one cost: when one bot is mis-configured or misbehaving, it can starve the other bots of risk budget. The fix is not to remove the cap; it is to give the customer a usable view of which bot is consuming risk and a one-click pause for that bot specifically. Honest UI, single cap.

Per-bot caps are not wrong as a sub-limit on top of the portfolio cap — they are wrong as the only limit. The customer should not be buying tidy UI; they should be buying an account-level guarantee.