{{ toast.message }}
Dashboard
Auto-refresh: 60sTotal AUM
{{ formatUSD(dashData.total_aum) }}
Clients
{{ dashData.clients_active || 0 }}
/ {{ dashData.clients_paused || 0 }} paused
/ {{ dashData.clients_error }} err
Today's PnL
{{ formatUSD(dashData.today_pnl) }}
{{ formatPct(dashData.today_pnl_pct) }}
Active Strategies
{{ strategyCards.length }}
Strategies
{{ strategyDisplayName(s.strategy) }}
Target
{{ formatPct(s.target_exposure) }}
TS
{{ s.trend_score != null ? s.trend_score.toFixed(1) : '--' }}
Price
{{ formatUSD(s.price, 0) }}
Avg Heat
{{ s.avg_heat != null ? s.avg_heat.toFixed(2) : '--' }}
Clients
{{ s.client_count || 0 }}
AUM
{{ formatUSD(s.aum, 0) }}
Client Overview
| Client | Exchange | Allocation | Balance | Exposure | Heat | DD | 24h PnL | Status |
|---|---|---|---|---|---|---|---|---|
| {{ c.name }} | {{ exchangeBadge(c.exchange) }} {{ c.exchange }} |
{{ strat.toUpperCase() }} {{ pct }}%
|
{{ formatUSD(c.balance) }} | {{ formatPct(c.exposure) }} | {{ formatPct(c.drawdown) }} | {{ formatUSD(c.pnl_24h) }} | {{ c.status }} | |
| No clients configured | ||||||||
Clients
| Name {{ sortIcon('name') }} | Exchange {{ sortIcon('exchange') }} | Allocation | Balance {{ sortIcon('balance') }} | Fee % {{ sortIcon('fee_pct') }} | PnL | Status {{ sortIcon('status') }} | Actions |
|---|---|---|---|---|---|---|---|
| SIGNAL {{ c.name }} | {{ exchangeBadge(c.exchange) }} {{ c.exchange }} |
{{ strat.toUpperCase() }} {{ pct }}%
|
{{ formatUSD(c.balance) }} | {{ c.fee_pct }}% | {{ formatPct(c.pnl_total) }} | {{ c.status }} | |
| No clients. Click "+ Add Client" to get started. | |||||||
{{ selectedClient.name || 'Client' }}
{{ exchangeBadge(selectedClient.exchange) }} {{ selectedClient.exchange }}
{{ selectedClient.status }}
Balance
{{ formatUSD(selectedClient.portfolio_value ?? selectedClient.balance) }}
Initial
{{ formatUSD(selectedClient.initial_balance) }}
PnL
{{ formatPct(selectedClient.pnl_total_pct) }}
Peak / HWM
{{ formatUSD(selectedClient.peak ?? selectedClient.hwm) }}
Drawdown
{{ formatPct(selectedClient.drawdown) }}
Heat
{{ selectedClient.heat != null ? Number(selectedClient.heat).toFixed(3) : '--' }}
Exposure
{{ formatPct(selectedClient.effective_exposure ?? selectedClient.exposure) }}
Fee
{{ selectedClient.fee_pct || 0 }}% perf + {{ selectedClient.management_fee_pct || 0 }}% mgmt
Allocation Breakdown
{{ strategyDisplayName(sd.strategy) }}
Heat: {{ sd.heat != null ? sd.heat.toFixed(3) : '--' }}
Exposure: {{ formatPct(sd.exposure) }}
TS: {{ sd.trend_score != null ? sd.trend_score.toFixed(1) : '--' }}
Price: {{ formatUSD(sd.price, 0) }}
PnL: {{ formatPct(sd.pnl) }}
Cash Flows
| Date | Type | Amount | Notes |
|---|---|---|---|
| {{ formatDate(cf.timestamp) }} | {{ cf.flow_type.toUpperCase() }} | {{ formatUSD(cf.amount) }} | {{ cf.notes || '' }} |
No deposits or withdrawals recorded
Portfolio Value
Trade History
| Time | Side | Size | Price | Exposure After |
|---|---|---|---|---|
| {{ formatDate(t.timestamp) }} | {{ t.side.toUpperCase() }} | {{ t.size }} | {{ formatUSD(t.price) }} | {{ formatPct(t.exposure_after) }} |
| No trades recorded | ||||
Monthly Performance
| Month | Start | End | PnL | Return | Max DD |
|---|---|---|---|---|---|
| {{ m.month }} | {{ formatUSD(m.start_value) }} | {{ formatUSD(m.end_value) }} | {{ formatUSD(m.pnl) }} | {{ formatPct(m.return_pct) }} | {{ formatPct(m.max_dd) }} |
| No monthly data | |||||
Strategies
No strategy data available. Engine may not be running.
{{ strategyDisplayName(sd.strategy) }}
{{ formatUSD(sd.asset_price, sd.asset_price > 100 ? 0 : 2) }}
Target Exposure
{{ sd.target != null ? sd.target.toFixed(0) + '%' : '--' }}
Trend Score
{{ sd.trend_score != null ? sd.trend_score.toFixed(1) : '--' }}
Signal Time
{{ sd.signal_hour || '--' }}
Calculation Pipeline
{{ step.step }}
{{ step.value }}
{{ step.desc }}
Heat System
DD Soft
{{ (sd.heat_params.dd_soft * 100).toFixed(1) }}%
DD Hard
{{ (sd.heat_params.dd_hard * 100).toFixed(1) }}%
Taper
{{ sd.heat_params.taper }}
Floor
{{ sd.heat_params.floor }}
Recovery TS>80
{{ sd.heat_params.rec_80 }}
Recovery TS>70
+{{ sd.heat_params.rec_70 }}
Recovery TS>60
+{{ sd.heat_params.rec_60 }}
Bull Floor
TS>{{ sd.bull_floor.ts_threshold }} = {{ sd.bull_floor.min_exposure }}%
Master Portfolio ($10k Virtual)
Equity
{{ formatUSD(sd.master.equity) }}
PnL
{{ sd.master.pnl_pct != null ? sd.master.pnl_pct.toFixed(1) + '%' : '--' }}
Drawdown
{{ sd.master.drawdown != null ? sd.master.drawdown.toFixed(1) + '%' : '--' }}
Heat
{{ sd.master.heat != null ? sd.master.heat.toFixed(3) : '--' }}
Effective Exp
{{ sd.master.effective_pct != null ? sd.master.effective_pct.toFixed(0) + '%' : '--' }}
Target
{{ sd.master.daily_target_pct != null ? sd.master.daily_target_pct.toFixed(0) + '%' : '--' }}
Sharpe
{{ sd.master.sharpe != null ? sd.master.sharpe.toFixed(2) : '--' }}
Sortino
{{ sd.master.sortino != null ? sd.master.sortino.toFixed(2) : '--' }}
Calmar
{{ sd.master.calmar != null ? sd.master.calmar.toFixed(2) : '--' }}
CAGR
{{ sd.master.cagr != null ? sd.master.cagr.toFixed(1) + '%' : '--' }}
Peak
{{ formatUSD(sd.master.peak) }}
Updated
{{ sd.master.last_update ? sd.master.last_update.substring(0, 16) : '--' }}
Monthly PnL
{{ month }}
{{ pnl > 0 ? '+' : '' }}{{ pnl.toFixed(1) }}%
Recent Master Trades
{{ t.time ? t.time.substring(5, 16) : '' }}
{{ t.from_pct.toFixed(0) }}% → {{ t.to_pct.toFixed(0) }}%
{{ t.reason }}
H: {{ t.heat.toFixed(2) }}
Exposure History (30d)
Indicator Layers
| # | Indicator | Group | Value | Effect |
|---|---|---|---|---|
| {{ idx + 1 }} | {{ l.name }} | {{ l.group }} | {{ formatLayerValue(l.value) }} | {{ l.effect }} |
Operations
Engine {{ opsData.engine_running ? 'Running' : 'Stopped' }}
{{ strategyDisplayName(key) }}
{{ sig.target != null ? sig.target.toFixed(0) + '%' : '--' }}
TS {{ sig.trend_score != null ? sig.trend_score.toFixed(1) : '--' }}
{{ formatUSD(sig.asset_price, 0) }}
Client Verification
{{ opsData.timestamp }}
✓
⚠
{{ c.name }}
{{ c.status }}
{{ exchangeBadge(c.exchange) }} {{ c.exchange }}
Balance
{{ formatUSD(c.portfolio_value) }}
Peak
{{ formatUSD(c.peak) }}
DD
{{ c.drawdown != null ? c.drawdown.toFixed(2) + '%' : '--' }}
24h PnL
{{ c.pnl_24h != null ? '$' + c.pnl_24h.toFixed(2) : '--' }}
Total PnL
{{ c.pnl_total != null ? '$' + c.pnl_total.toFixed(2) : '--' }}
Net Flows
{{ c.net_flows !== 0 ? formatUSD(c.net_flows) : '--' }}
Trades Today
{{ c.trades_today || 0 }}
Last Trade
{{ c.last_trade_side }} {{ c.last_trade_symbol }} {{ formatDate(c.last_trade_time) }}
None
{{ strategyDisplayName(sc.strategy) }}
{{ sc.allocation_pct }}%
Target: {{ sc.target_exposure != null ? sc.target_exposure.toFixed(0) + '%' : 'N/A' }}
Eff: {{ sc.effective_exposure != null ? sc.effective_exposure.toFixed(0) + '%' : '--' }}
Heat: {{ sc.heat != null ? sc.heat.toFixed(3) : '--' }}
DD: {{ sc.sub_dd != null ? sc.sub_dd.toFixed(1) + '%' : '--' }}
TS: {{ sc.trend_score != null ? sc.trend_score.toFixed(1) : '--' }}
No signal
{{ issue }}
No clients configured
Reports
Monthly Report
| Client | Start Value | End Value | PnL | Return | Max DD | Trades | Fee % | Fee Amt |
|---|---|---|---|---|---|---|---|---|
| {{ r.name }} | {{ formatUSD(r.start_value) }} | {{ formatUSD(r.end_value) }} | {{ formatUSD(r.pnl) }} | {{ formatPct(r.return_pct) }} | {{ formatPct(r.max_dd) }} | {{ r.trades }} | {{ r.fee_pct }}% | {{ formatUSD(r.fee_amount) }} |
| No report data. Select a period and click "Load Report". | ||||||||
| TOTAL | {{ formatUSD(reportTotals.start_value) }} | {{ formatUSD(reportTotals.end_value) }} | {{ formatUSD(reportTotals.pnl) }} | {{ formatPct(reportTotals.return_pct) }} | {{ reportTotals.trades }} | {{ formatUSD(reportTotals.fee_amount) }} | ||
Commission Summary
| Client | Profit | Fee % | Commission |
|---|---|---|---|
| {{ c.name }} | {{ formatUSD(c.profit) }} | {{ c.fee_pct }}% | {{ formatUSD(c.commission) }} |
| TOTAL | {{ formatUSD(commissionTotal) }} |