Risk Management
Every order passes through 8 sequential risk checks before reaching the broker. Checks are evaluated in order of severity — the first failure stops the pipeline.
The 8 Risk Checks
Section titled “The 8 Risk Checks”1. Kill Switch
Section titled “1. Kill Switch”Blocks ALL trading when active. Triggers: daily loss limit breach or state discrepancy (circuit breaker).
2. Rate Limiting
Section titled “2. Rate Limiting”Three rate limit types:
- Per-second: Max 2 orders/second (fixed)
- Per-minute: Configurable (default: 10)
- Per-symbol cooldown: 5 seconds between orders on the same symbol (fixed)
3. Operating Mode
Section titled “3. Operating Mode”readonly mode blocks all trading operations. paper and live modes pass this check.
4. Symbol Whitelist
Section titled “4. Symbol Whitelist”Only symbols in the symbol catalog can be traded. Rejects unknown or unlisted symbols.
5. Per-Asset-Class Position Size
Section titled “5. Per-Asset-Class Position Size”current position volume + new order volume <= asset class limit
Each asset class has its own maximum position size limit:
| Asset Class | Parameter | Default |
|---|---|---|
| FX (Forex) | maxPositionSizeFx | No limit (optional) |
| Indices | maxPositionSizeIndices | No limit (optional) |
| Other (stock CFDs, crypto CFDs, etc.) | maxPositionSizeOther | No limit (optional) |
| Commodities | maxPositionSizeCommodities | No limit (optional) |
- The symbol’s asset class is determined from the symbol catalog
- Closing/reducing trades (opposite side) always pass this check
- Linked SL/TP orders (STOP/LIMIT placed with a
positionId) always pass this check — they hedge/close an existing position, not build new exposure
6. Maximum Open Positions
Section titled “6. Maximum Open Positions”Total number of open positions across all symbols cannot exceed MAX_OPEN_POSITIONS (default: 20).
- Linked SL/TP orders (placed with a
positionId) always pass this check — they do not open a new position
7. Daily Loss Limit
Section titled “7. Daily Loss Limit”Realized P&L for the day cannot exceed the daily loss limit (default: $2,000).
- Persisted across your session
- Resets at 17:00 New York time (DST-adjusted; 22:00 UTC in winter, 21:00 UTC in summer)
8. Volume Validation
Section titled “8. Volume Validation”- Volume must be greater than zero
- Broker enforces actual minimum trade quantity and volume step per symbol (e.g., XAUUSD requires min 100 lots = 1,000 units). Check cTrader Symbol Info.
Kill Switch
Section titled “Kill Switch”The emergency stop mechanism that blocks ALL trading operations.
Automatic Activation Triggers
Section titled “Automatic Activation Triggers”| Trigger | Condition | Default |
|---|---|---|
| Daily loss limit | Realized daily loss exceeds limit | $2,000 |
| State discrepancy | Material difference between local and broker state (circuit breaker) | Always on |
When Active
Section titled “When Active”- All pending orders are cancelled
- All new orders are rejected with
KILL_SWITCH_ACTIVEerror - Error message includes activation reason and deactivation instructions
Deactivation
Section titled “Deactivation”- Daily loss trigger auto-resets at 17:00 New York time (DST-adjusted)
Rate Limiter Details
Section titled “Rate Limiter Details”| Limit Type | Default | Configurable |
|---|---|---|
| Orders per second | 2 | No (fixed) |
| Orders per minute | 10 | Yes |
| Per-symbol cooldown | 5 seconds | No (fixed) |
When exceeded, the server returns a RATE_LIMITED error with the exact number
of seconds to wait before retrying.
Configuration Reference
Section titled “Configuration Reference”| Limit | Default | Description |
|---|---|---|
| Max position size (FX) | No limit (optional) | Max volume per FX symbol (units) |
| Max position size (Indices) | No limit (optional) | Max volume per index symbol (units) |
| Max position size (Other) | No limit (optional) | Max volume per other symbol (stock CFDs, crypto CFDs, etc.) |
| Max position size (Commodities) | No limit (optional) | Max volume per commodity symbol (units) |
| Max open positions | 20 | Max concurrent positions |
| Daily loss limit | 2,000 | Max daily realized loss ($) |
| Max orders per minute | 10 | Rate limit per minute |
