From Paper to Real Money: Why the Executor Is a Separate Service
The engine thinks. The executor acts. Keeping those two apart is the difference between a research prototype and something you'd trust near a real exchange.
Two Very Different Jobs
Reasoning and execution have opposite failure modes. Reasoning is slow, deliberate, and benefits from context. Execution is fast, unforgiving, and benefits from discipline.
Semantic Signal splits them cleanly: the main engine produces atomic JSON decisions β symbol, side, size, stop-loss, take-profit, reasoning. The llm_trader_executor service handles everything on the exchange side: CCXT order placement, leverage, OCO stop-losses, and a dead-letter queue for orders that can't be reconciled.
The Guard Chain
Every signal passes a pre-execution guard chain, in order:
- Symbol whitelist β the bot only trades instruments it's configured for;
- Maximum position size β portfolio-percentage sizing with fallback sizes of 1% / 2% / 3% of capital for LOW / MEDIUM / HIGH conviction;
- Cooldown window β prevents overtrading;
- R:R gate β take-profit targets minimum 1.5 R:R at structure;
- ATR-scaled stops β stop-loss distance scales with volatility, not a fixed percentage.
If governance or risk validation can't decide safely, the system fails closed β no order, no exceptions. Soft exits trigger at candle close; hard exits check against live ticker prices at 15-minute intervals.
Honest Accounting
Every order outcome is journaled and reconciled against the exchange β not taken on trust from the API response. Orders that can't be confirmed go to a dead-letter queue instead of disappearing. Friction from position-size clamping is measured and reported rather than silently ignored.
The dashboard doesn't hide ambiguity: if a state can't be determined, it says so. No fake green checkmarks.
Paper First. Real Money Only When the Pipeline Proves Itself
Right now the system trades simulated capital by default. Real exchange execution is being built as this dedicated executor service β the same guard chain, the same journaling, the same fail-closed behavior β and capital stays simulated until the pipeline proves itself over a sustained period.
That's a deliberate product decision, not a limitation to hide: demo and live are different worlds, and the system earns live trading the way it earns everything else β by demonstrating it can survive its own history.
Track the executor's progress β the dashboard shows live position state and the audit trail behind every decision.
π Live Dashboardπ GitHub Repository