Gesamtempfehlung entfernt (User-Entscheidung 2026-08-08)

"Funktioniert so leider nicht, entferne es komplett - wir bauen etwas Neues."

Entfernt: Headline, Konfidenz-Ring, Bias-Nadel, Modul-Chips, Konsens-Zeile,
Block-Gruende. Dazu renderVerdict(), die zugehoerigen 24 CSS-Regeln,
docs/gesamtempfehlung.md und die Snapshot-Felder `verdict` + `block_mix`.

Die Aggregation war reine ANZEIGE - vor dem Loeschen belegt: die Order-Logik
haengt an `wave_signal` bzw. `checklist`, nicht am Verdict (Blinken app.js:821,
Order-Dialog 1312/1366/1391). Orders, Alarme und das gemessene Veto
(-6,60 EUR/Lot) sind unberuehrt.

BEHALTEN (sassen nur in derselben Karte, je eigene Beleglage, User-Entscheidung):
  Zeitebenen-Ampel  #wave-turns  - war aus der Welle-Karte dorthin verschoben
  Erwartete Spanne  #kx-cone     - out-of-sample kalibriert, trifft real ~77 %
  Selbstkalibrierung #kx-selfcal - misst das Wellen-Signal, das bleibt
  HL-Kontext        #hl-note     - lief in renderVerdict mit, schreibt aber in
                                   die Meldungen-Karte
Sie stehen jetzt in der neuen, schlanken Karte "Marktkontext" (#card-kontext).
IDs von vd- auf kx- umbenannt, damit keine tote Nomenklatur zurueckbleibt.

verdict_votes wird WEITER geloggt (User-Entscheidung): `_verdict()` bleibt
bestehen und laeuft 1x/min fuer die Telemetrie sowie fuer den optionalen
MQL5-Konsens-Pfeil. Aus dem 1-s-Snapshot ist es raus - dort waere es Arbeit fuer
eine Anzeige, die es nicht mehr gibt.

Verifiziert: node --check gruen, 34 Tests gruen, 0 verwaiste $("id")-Zugriffe
(die zwei Treffer 'neu'/'x' stehen in Kommentaren), CSS-Klammern ausgeglichen
(287/287), @media und @keyframes intakt. Zeile 1572 (_SQM_VERDICT[d.verdict])
ist der SQUEEZE-MONITOR-Verdict und bleibt.

Asset-Version v=152.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-08 14:12:27 +02:00
co-authored by Claude Opus 5
parent dd7c4e6b15
commit 30c8616280
5 changed files with 98 additions and 385 deletions
-68
View File
@@ -1,68 +0,0 @@
# Gesamtempfehlung (Verdict-Panel)
Grafischer Empfehlungsbereich ganz oben im Mobile-Dashboard (`web/`), der die
Module zu **einer** Aussage zusammenfasst.
## Wer berechnet was
- **Backend (`core/engine.py``_verdict`)** baut die Aggregation und legt sie
als `verdict` in den Snapshot (`/api/snapshot`, `/ws`). Eine Quelle der
Wahrheit — das Frontend rendert nur.
- **Frontend (`web/app.js``renderVerdict`)** zeichnet Ring, Bias-Balken und
Modul-Chips. Markup in `web/index.html` (`#card-verdict`), Stil in
`web/style.css` (`.vd-*`).
## Logik
**Headline = die validierte Welle** (`wave_signal`) — das einzige Modul mit per
Backtest belegtem Edge. Sie bestimmt LONG/SHORT/WARTEN und die Order-Freigabe.
Die übrigen Module bilden nur einen **gewichteten Konsens** (Anzeige, kein
Eingriff in die Order-Logik).
Votes je Modul: `+1` LONG · `1` SHORT · `0` neutral. Gewichte:
| Modul | Gewicht | Quelle |
|-------|---------|--------|
| Welle | **3,0** | `wave_signal.signal` (validierter Edge) |
| M30 | 1,5 | `wave.htf_trend` (EMA12/50 der M30 — exakt das Signal, das die Welle nutzt) |
| H1 | 1,5 | `wave.h1_trend` (EMA12/50 der H1) |
| KI-Copilot | 1,0 *(nur mit Bias)* | `agent.advisory.bias` — ohne advisory/Bias **Gewicht 0** |
| Elliott/FVG | 1,0 *(nur mit Ziel)* | Richtung zum `elliott.target` — ohne Ziel **Gewicht 0** |
| Squeeze | 2,0 *(nur `active`)* | `wave.squeeze` — armed/keine Kompression **Gewicht 0** |
(TradersUnion wurde 2026-07-06 aus dem Konsens entfernt — nur noch Anzeige.)
```
bias = Σ(gewicht · vote) / Σ(gewicht) → 1 … +1
```
**Stimmberechtigt sind nur Module mit Aussage** (Fix 2026-07-15): Module ohne
anwendbares Signal (Squeeze ohne Ausbruch, Elliott ohne Ziel, KI aus) bekommen
Gewicht 0 und stehen NICHT im Nenner — vorher dämpfte z. B. das fast immer
neutrale Squeeze-Gewicht (2,0) die Nadel dauerhaft um ~×0,8 Richtung Mitte.
„Flach" bei Welle/M30/H1 bleibt dagegen eine ECHTE Neutral-Stimme (mit Gewicht).
`bias` steuert die **Nadel** im Balken (1 = ganz SHORT/links, +1 = ganz
LONG/rechts: `left% = (bias+1)/2·100`). `agree/total` = wie viele der **anderen**
stimmberechtigten Module (ohne die Welle selbst — die zählte sich bis 2026-07-15
mit) die Headline-Richtung teilen. Der **Konfidenz-Ring** zeigt `wave.conf_pct`
als conic-gradient in Richtungsfarbe.
> ⚠ Wichtig: Für M30/H1 werden die **EMA12/50-Signale der Welle** genutzt
> (`htf_trend`/`h1_trend`), NICHT das Regressions-Winkelmaß `market.angles` —
> die beiden können sich widersprechen, das Panel muss zur Empfehlung passen.
## Snapshot-Feld `verdict`
```json
{
"headline": "SHORT", "conf": 90, "bias": -1.0, "agree": 3, "total": 3,
"votes": [{"name": "Welle", "vote": -1, "weight": 3.0, "detail": "SHORT · 90%"}, ]
}
```
## Pflege
Neues Modul ins Panel → Vote/Gewicht in `_verdict` ergänzen; das Frontend rendert
`votes` generisch. Bei JS/CSS-Änderung Asset-Version `v=N` in `index.html`
hochzählen. Siehe `CLAUDE.md`.