TB
TradeBot
Terminal
Symbol
Last
Change
Regime
Strategy
AI
Broker
Engine
Market
Today P&L
Positions
Last signal
Account Equity
live broker snapshot
Daily P&L
today
Open Positions
long / short
Current Regime
market regime
Active Strategy
selected strategy
Risk Heat
portfolio exposure

Strategy Competition

Current ranking and selection context

Strategy Direction Raw Regime Perf AI Final
Loading strategy competition…

Data Source Health

Primary / fallback readiness

Loading…

Recent Decision

Latest signal outcome

Awaiting signal…

Intraday Activity

Engine, filters, AI, and execution — live

Loading activity…

Exposure

Live portfolio heat

Long Short
Portfolio Exposure
Daily Loss Limit

Market Chart

Candles, EMA, support/resistance, and AI overlays

Signal Inspector

Current symbol decision

Strategy
Confluence
S/R Room
Session Quality
Target

Decision Waterfall

Approval path

Awaiting signal…

Candidate Scoreboard

Live strategy competition (enabled strategies only)

Strategy Status Type Direction Raw Adj. Final
Loading scoreboard…

Selection Mode

Current engine weighting

Mode Adaptive
Regime Weight 40%
Performance Weight 60%

Consensus

Direction voting

Loading…
Confluence
/ —

Multi-timeframe alignment

S/R Room
/ —

Distance to nearest levels (ATR)

Session
/ —

Time-of-day liquidity quality

AI / Signal Gate
/ —

Composite signal confidence gate

Decision Waterfall local snapshot
Loading…
Unrealized P&L
0 open
Net Realized
0 closed
Win Rate
Portfolio Heat
exposure %

Open Positions

Live exposure

Symbol Side Strategy Size Entry Mark SL TP U.PnL
Loading positions…

Strategy Attribution

Realized P&L by strategy

Loading…

Realized Summary

Closed-trade performance

Loading…

Trade History

Most recent closed trades

Closed Symbol Side Strategy Size Entry Exit R.PnL Broker
Loading trade history…
Models Trained
total models
Avg Accuracy
live weighted
Avg F1
validation
Stale Models
needs retrain

Model Registry

Per-symbol model health

Symbol Algorithm Status Acc F1 Age Drift
Loading model registry…

Top Features

Feature importance for selected symbol

No feature data — train a model first.

Forecast Studio

Multi-horizon directional forecast

No forecast data yet
Models
total on disk
Accepted
live-ready
Stale / Drifted
needs retrain
Rejected
failed validation

Model Registry

Health, economics, and acceptance

SymbolAlgorithmStatus AccF1AgeDrift EV/TradePFAccepted

Model Stability

Retrain consistency

Loading stability data…

Calibration Trust

Reliability diagnostics

Loading calibration data…

Shadow vs Primary

Model promotion center

Loading promotion data…
Recent Decisions
last 14d
Trades Taken
AI approved + executed
Blocked
vetoed by AI or risk
Avg Confidence
max(P↑, P↓) per trace

Decision Trace Log

Full AI reasoning per signal — rows without P(up)/P(down) were blocked before AI evaluation (risk gate)

TimeSymbolRegimeStrategy SignalP(up)P(down)Threshold DecisionReason

Dynamic Threshold

Current threshold policies

Loading threshold data…

Regime Models

Active regime routing

Loading regime data…
Account P&L
lifetime · matches broker
AI-Confirmed PnL
subset where AI signed off
Blocked Saves (est.)
estimate
AI Involvement
trades AI touched

Trade Attribution

AI contribution per trade

TimeSymbolSideStrategy AI ActionPnLCounterfactual (est.)

Attribution Summary

Is AI helping?

Loading attribution data…

Portfolio Risk

Correlation & concentration

Loading risk data…
Active Horizons
producing predictions
Best Horizon (Confidence)
highest confidence now
Feature Health
pipeline status
Degraded Features
missing or stale

Multi-Horizon Forecast

Updated —

Loading forecast data…

Narrative

Plain-English summary + risk warning

No narrative yet.

Forecast Source Comparison

Performance by source type

SymbolHorizonSource AccuracyBrierTrustPredictions

Feature Health

Pipeline status by symbol

Loading feature health…

AI Controls

Operational mode settings

Loading controls…
Shadow Stage
agreement vs divergence
Sizing Stage
scale fidelity + monotonicity
Confidence Stage
threshold gating quality
Full Takeover
all criteria + no degradation

Divergence

Agreement vs divergence rates

How it works

What it measures: every time a strategy signal fires, the live engine and the shadow orchestrator both decide whether to take the trade. This panel counts how often they agree vs disagree.

Data source: orchestrator_divergence_events — one row per signal, written by engine_signals.evaluate at decision time. Scoped to your user_id only.

How to read it:

  • Agreement rate — the orchestrator and live engine took the same side. Promotion requires ≥80%.
  • Divergence rate — they disagreed. Not bad by itself; only matters when paired with cohort PnL.
  • Dangerous divergence — they disagreed on direction OR the live path traded when the orchestrator would have blocked. Promotion requires ≤10%.
  • By-symbol breakdown — useful to find symbols where the two paths systematically disagree.
Loading divergence data...

Confidence Calibration

Bucket performance & monotonicity

How it works

What it measures: the AI model emits a confidence score per prediction (0.50–1.00). This panel groups predictions into 5-percentage-point buckets and checks whether higher-confidence buckets actually win more often.

Data source: confidence_bucket_events — one row per prediction outcome (next-bar direction match), NOT per closed trade. Scoped to your user_id only.

Important caveat: "Win Rate" here = directional prediction accuracy on the next bar, NOT trade PnL win rate. A 95% win rate in the 0.55 bucket means the model called direction correctly 95% of the time, not that you made money on 95% of trades.

How to read it:

  • Monotonicity PASS — higher confidence reliably means higher EV. This is what promotion requires.
  • Monotonicity FAIL — a higher bucket performs worse than a lower one. Either the model's confidence is mis-calibrated, or one of the buckets has too few samples (look at the bucket counts).
  • Recommended threshold — minimum confidence where EV > 0 and PF > 1. Suggests where to set the AI gate cutoff.
Loading calibration data...

Blocked vs Allowed (Realized)

Realized EV, win rate & PF by cohort

How it works

What it measures: the COUNTERFACTUAL value of the orchestrator. For every signal the live engine took, this panel asks "would the orchestrator have blocked this?" and groups the resulting trades by that hypothetical decision.

Data source: divergence events joined to closed trades by symbol + time. PnL comes from the trades table (source of truth). Scoped to your user_id on both sides of the join.

How to read it:

  • BLOCKED cohort — trades the live engine took that the orchestrator would have rejected. A negative total PnL here is GOOD: it means the orchestrator's filter would have saved you those losses.
  • ALLOWED cohort — trades both paths agreed on. These are the orchestrator's "endorsed" trades. Positive PnL means the orchestrator's picks made money.
  • Measurement state PARTIAL — some divergence events couldn't be linked to a closed trade within the matching window. Numbers reflect only what got linked; "unmeasured count" shows the gap.

Caveat: matching uses ±10 min around the trade's open_time, with a fallback to a 6 h window before close_time for broker_backfill rows (which have lost their real open timestamp).

Loading cohort data...

Scale Bucket Outcomes

Realized PnL by orchestrator scale level

How it works

What it measures: when the orchestrator is in sizing-only mode (AI_ORCHESTRATOR_SIZING_ENABLED=true), it scales position size by a multiplier (e.g. 0.8× or 1.2×). This panel checks whether the multiplier correlates with realized PnL.

Data source: engine_execution.get_scale_performance — joins recorded scale decisions with trade outcomes.

How to read it: if higher scales (1.2× ×) systematically out-earn lower scales (0.8×), the orchestrator's confidence-to-size mapping is doing its job. If they're random, sizing is adding noise.

Note: empty when sizing-only mode hasn't been enabled — the engine hasn't recorded any scale decisions yet.

Loading sizing data...

Policy Insights

Block reasons & confidence gating

How it works

What it measures: when the orchestrator rejects a signal, it records a reason. This panel breaks down rejections by reason and tracks the confidence gate's hit rate.

Data source: orchestrator_divergence_events.rejection_reason for blocks; confidence_bucket_events for the gating numbers.

Block reasons:

  • Low confidence — model probability fell below the gate.
  • Risk filter — exposure/correlation limits hit.
  • Direction conflict — orchestrator's direction prediction contradicts the strategy signal.
  • Probability threshold — calibrated probability fell below the per-symbol cutoff.
  • Validation policy — a hard policy rule fired (e.g. blackout windows).

Confidence gating block rate — what fraction of all evaluations got rejected purely for falling below the confidence threshold. A high rate means the threshold is tight; a low rate means most decisions pass through to the strategy layer.

Loading policy data...

Stage Readiness Details

Promotion criteria breakdown

How it works

What it measures: the orchestrator is rolled out in four stages. Each stage has a pass/fail criterion based on the data above. This panel surfaces the exact metric vs threshold for each gate so you can see WHY a stage is failing.

Stages, in order:

  • Shadow — orchestrator runs alongside the live engine but doesn't influence trades. PASS when agreement rate ≥80% AND dangerous divergence ≤10% AND ≥100 evaluations recorded.
  • Sizing — orchestrator scales position size but doesn't change direction. PASS when shadow passed AND scale-fidelity mismatch ≤15% AND calibration monotonicity holds.
  • Confidence — orchestrator's confidence gate can veto live trades. PASS when sizing passed AND there's a recommended threshold AND each bucket has ≥20 samples.
  • Full Takeover — orchestrator replaces the live engine entirely. PASS when confidence passed AND no per-symbol degradation.

Thresholds are configurable via the PROMOTION_* env vars (see config.py) — the defaults are conservative.

Loading readiness details...

Recent Trades

Click a trade to view replay

TimeSymbolSideStrategyEntryExitP&L BrokerReplay
Broker Status
no data
Account Equity
live broker snapshot
Sync State
no data
Auto Fix
no data

Active Trading Pairs

Currently enabled instruments for this account

0 / 2

Loading...

Reconciliation History

Position sync and mismatch audits

Time Symbol Issue Local Broker Action Result
Loading reconciliation history…
Primary Source
no data
Active Sources
no data
Degraded Mode
no data
Circuit Breakers
no data
Loading data sources…

Broker Integration

Select your broker and configure connection

Broker Capabilities

Active Trading Pairs

Select up to 2 instruments to trade

0 / 2

Live Event Stream

Searchable and filterable operational logs

Loading events…

System Status

Component health overview

Alert Summary

Active alerts by severity

Reconciliation

Position sync status

Engine Fleet

Per-user engine state across the system — for multi-tenant troubleshooting.

Active Incidents

Recent critical events and errors

Alert Rules

Configured alert rule definitions

Alert Channels

Delivery channels for alert notifications

Timeseries

Trend charts for the selected domain

Domain Detail

Breakdown for the selected domain

Mismatch Queue

Discrepancies between local and broker state

Reconciliation History

Past reconciliation runs and results

Per-User Reconciliation

UserReconciliationScheduler — multi-user broker reconciliation

Health Checks

Component-level status matrix

Preflight Checks

Startup validation results

Topology

Deployment architecture and roles

Workers

Background processes and scheduled tasks

Security Posture Checklist

Configuration security validation

Credential Rotation

API key and credential freshness

Recent Security Events

Auth failures, admin actions, and anomalies

Backup Status

Current backup system configuration and health

Backup History

Recent backup runs and status

Restore Verification

Automated recovery test results