controller_id linking it to the agent that created it.
Why Executors?
Executors are the heart of the Trading Agent design. Agents only act through executors, which provides:| Benefit | Description |
|---|---|
| Standardization | Same interface across 50+ exchanges |
| Error Handling | Clear errors instead of cryptic API responses |
| Isolation | Each agent only sees its own executors via controller_id |
| Frequency Separation | Agent reasons at mid-frequency; executor operates at high frequency |
| Position Handover | keep_position=true retains inventory for the next tick |
Executor Types
From simplest to most complex:| Executor | Description | Builds On |
|---|---|---|
| Order Executor | Places and executes a single order | - |
| Position Executor | Order + TP/SL/trailing stop/time limit management | Order |
| Grid Executor | Multiple Position Executors across a price range | Position |
| DCA Executor | Multiple orders at different price levels | Order |
| TWAP Executor | Orders spread over time | Order |
| XEMM Executor | Cross-exchange market making | Order |
| Arbitrage Executor | Cross-market arbitrage | Order |
| LP Executor | Concentrated liquidity provision | - |
The Core Three
Order Executor is the simplest—it places an order using one of four execution strategies (LIMIT, LIMIT_MAKER, MARKET, LIMIT_CHASER) and terminates when filled. Position Executor builds on Order Executor by adding position management: after the entry order fills, it monitors the position and exits at take profit, stop loss, trailing stop, or time limit. Grid Executor is like running multiple Position Executors simultaneously across a price range, with each level having its own entry and take profit orders.Lifecycle
All executors follow a standard lifecycle:| Close Type | Description |
|---|---|
TAKE_PROFIT | Price reached profit target |
STOP_LOSS | Price reached loss limit |
TIME_LIMIT | Maximum duration exceeded |
TRAILING_STOP | Trailing stop triggered |
EARLY_STOP | Manually stopped |
COMPLETED | Finished normally (order filled) |
FAILED | Failed after retries |
Position Handover
When an executor terminates withkeep_position=true:
- Inventory stays in the account, tagged with
controller_id - Agent sees it on the next tick via the positions provider
- Agent can manage it with a new executor (scale out, hedge, exit)
- P&L is not attributed until position is fully closed
Creating Executors
Via MCP Tools
Via API
Standardized Metrics
All executors report:| Metric | Description |
|---|---|
net_pnl_quote | Realized P&L in quote currency |
fees_paid_quote | Trading fees, gas costs |
volume_quote | Total trading volume |
close_type | How executor terminated |
duration_seconds | Time from creation to termination |

