Live trading enable
Promotes the engine from dry_run=true to dry_run=false at runtime via the runtime_settings table. All four gates must be green before the Promote button enables.
- ✗IBKR gateway connectedno recent BROKER_HEARTBEAT in audit_log
- ✓Kill switch disengagedno kill switch events on record
- ✓Daily loss limit not breachedtoday's realized: $0.00 (limit −$50)
- ✗Backtest passed (BACKTEST_PASS audit row in last 24h)Run a backtest with positive expectancy on /backtest in the last 24h to satisfy this gate.
Current engine state: unknown
How this works
- Promote writes
{value: false}toruntime_settings.dry_run_overrideand aLIVE_ENABLErow toaudit_log. - The engine reads that row at the start of every heartbeat (~60 s cadence), overlays it on
cfg.broker.dry_run, and emitsDRY_RUN_FLIPPEDthe first cycle the value changes. - Subsequent
place_order()calls hit IBKR for real. The PaperAccountGuard still blocks any non-paper account_id, so a misconfigured live account cannot accidentally place orders.