# DRAFT · WEEKLY-PROFIT-KPI-DASHBOARD Status: planned (P2) Quelle: Operator-Backlog-Bullet „13 Operator-Metriken als Dashboard-Plan" Scope: Plan-Entwurf, kein Code. --- ## 1. Kontext Operator braucht einen Wochen-Blick auf Performance / Risk / Stability. Heute existieren nur Einzel-Resources (TradeLog-Liste, PositionSnapshot) und das tägliche `daily_performance.csv`. Eine konsolidierte Wochen-Sicht fehlt. PLAN_T1_ROADMAP_2_WEEKS legt das Profit-Ziel auf realistisch 2-4%/Woche mit Aspiration 10%. Ohne dashboard ist Operator gezwungen, Zahlen manuell zu joinen. --- ## 2. Die 13 KPIs (Vorschlag, Operator-Confirm-Pflicht) | # | KPI | Quelle | Formel | Target | |---|---|---|---|---| | 1 | Wochen-PnL absolut (USDT) | trade_logs | SUM(pnl) WHERE closed_at in [w_start, w_end] | > 0 | | 2 | Wochen-PnL relativ (%) | (1) / starting_capital_w_start | | 2-4% | | 3 | Anzahl Trades | trade_logs | COUNT | observability | | 4 | Win-Rate (%) | trade_logs | COUNT(pnl>0) / COUNT | > 50% | | 5 | Avg Win / Avg Loss (USDT) | trade_logs | AVG(pnl WHERE pnl>0) / AVG(pnl WHERE pnl<0) | > 1.5 | | 6 | Max Drawdown (USDT) | live_portfolio history + closed_trades | high-water-mark Equity − Trough | < 5% | | 7 | Trades mit DCA-Rescue (count + %) | dca_log historical + trade_logs.metadata | COUNT(WHERE dca_count>0) | < 30% | | 8 | SL-Exit-Rate (%) | trade_logs | COUNT(reason LIKE '%stop%') / COUNT | < 50% | | 9 | TP-Exit-Rate (%) | trade_logs | COUNT(reason LIKE '%profit%') | observability | | 10 | Sell-Failure-Rate (insufficient_funds) | bot_stdout.log derived + (zukünftig) bot_statuses | COUNT failed-sells / COUNT sell-attempts | < 1% (P0-A) | | 11 | Avg Position-Age bis Close (h) | trade_logs.opened_at − closed_at | AVG | informational | | 12 | Bot-Uptime (%) | bot_watchdog logs / bot_statuses | 1 − (downtime / 168h) | > 99% | | 13 | T2 / T3 Aktivität | trade_logs.strategy_group | COUNT WHERE NOT 't1_core' | 0 (T2/T3 disabled) | --- ## 3. Page-Skizze ``` +---------------------------------------------------------------+ | Wochen-KPIs · KW 20 (2026-05-12 → 2026-05-18) | | | | Mode-Banner: EXCHANGE_TESTNET | | | | +------------+ +------------+ +------------+ +------------+ | | | PnL % | | Win-Rate | | DD max | | Sell-Fail | | | | -1.2% | | 33% | | -3.4% | | 12.5% ⚠️ | | | | Target 2-4%| | Target 50% | | Target <5% | | Target <1% | | | +------------+ +------------+ +------------+ +------------+ | | | | Detail-Tabelle: alle 13 KPIs mit week-over-week-Delta | | | | Bottom: Liste der Trades dieser Woche | +---------------------------------------------------------------+ ``` --- ## 4. Boundaries - **0× neue DB-Tabellen.** Alles aus existierenden Quellen (trade_logs, position_snapshots, bot_statuses, live_portfolio.json). - **0× Backfill-Migration.** KPIs sind Time-Window-Aggregates auf bestehenden Daten. - **0× Bot-Touch.** - **0× Mainnet.** - KPI #10 (Sell-Failure-Rate) ist die Operator-eigene Frühwarnung für P0-A-Wiederholung. Implementierungsweg: - kurzfristig: aus bot_statuses (sobald `_track_sell_failure` einen Status emittiert) — siehe P0-B - alternative: Log-Parser-Cron mit Output in eigene Tabelle (eigener Plan, eigener Cutover) --- ## 5. Phasen-Vorschlag | Phase | Inhalt | Operator-GO | |---|---|---| | W-A | Filament-Page Skelett + KPI 1-5 (alle aus trade_logs) | nein, GUI-only | | W-B | KPI 6 Max Drawdown (live_portfolio history) | nein | | W-C | KPI 7-9 Reason-Buckets, KPI 11 Age | nein | | W-D | KPI 10 Sell-Failure-Rate (depends on bot_statuses emit) | ja, hängt an P0-B | | W-E | KPI 12-13, Operator-Verify | nein | --- ## 6. STOP Kein Code vor Operator-GO.