Verdict-Review: Bias-Daempfung durch stumme Welle + agree-Anzeige gefixt

Review der Gesamtempfehlungslogik auf Wunsch des Users ("ueberpruefe die
gesamtempfehlungslogik komplett mit den neuen indikatoren von heute").

Befund 1 (gravierend): Die Regel "Modul ohne Aussage -> Gewicht 0" (2026-07-15
fuer Squeeze/Elliott/KI eingefuehrt) galt NICHT fuer die Welle selbst. Sie stand
mit w=3.0 permanent im Nenner, auch bei WARTEN. Gemessen sind ~91% der letzten
2000 Empfehlungen WARTEN -> die Bias-Nadel war fast immer kuenstlich zur Mitte
gezogen. Realer Fall: bias +0.312 statt +0.625 (Faktor 2).
Fix: weight=0 bei WARTEN.

Befund 2: `agree` nutzte immer die Wellen-Richtung als Referenz -> bei WARTEN
zwangsläufig "0/N", obwohl sich die anderen Module einig waren (real "0/4" bei
2 einigen Modulen). Fix: Referenz = Wellen-Richtung, ersatzweise Bias-Richtung
(real jetzt "2/3").

Beides REINE ANZEIGE, Order-Logik unberuehrt. Mit 6 synthetischen Szenarien
verifiziert + live geprueft.

Nicht geaendert, nur dokumentiert:
- Doppelzaehlung M30/H1 (stecken bereits im Wave-Signal als Filter/Konfluenz)
- Drei divergierende Level-Quellen seit der M30-Umstellung (Supports wichen um
  0.65$ ab) -- bewusst, jedes Gate ist auf seine Quelle kalibriert
- toter tu-Parameter

Neue Indikatoren von heute korrekt NICHT im Verdict: Liquiditaets-Waende
(Uebertragbarkeit ungemessen), Liquiditaetszonen + Volume Profile (verworfen),
Chartmuster (nicht reif).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-07-30 19:04:22 +02:00
co-authored by Claude Opus 4.8
parent b23a3d4e5c
commit 3a7bd044c0
2 changed files with 35 additions and 4 deletions
+14 -3
View File
@@ -2082,10 +2082,16 @@ class TradingEngine:
votes.append({"name": name, "vote": int(vote),
"weight": weight, "detail": detail})
# 1) Welle — primär (validierter Edge)
# 1) Welle — primär (validierter Edge). ⚠ Bei WARTEN hat sie KEINE Aussage
# → Gewicht 0 (Fix 2026-07-30). Vorher stand w=3,0 permanent im Nenner und
# zog die Bias-Nadel dauerhaft zur Mitte — derselbe Logikfehler, der am
# 2026-07-15 beim Squeeze behoben wurde, hier übersehen. Das wog schwer:
# gemessen sind ~91 % der letzten 2000 Empfehlungen WARTEN, die Nadel war
# also fast immer künstlich gedämpft (real: bias 0,312 statt 0,500).
wsig = (wave_signal or {}).get("signal")
wv = 1 if wsig == "LONG" else -1 if wsig == "SHORT" else 0
add("Welle", wv, 3.0, f"{wsig or ''} · {(wave_signal or {}).get('conf_pct', 0)}%")
add("Welle", wv, 3.0 if wv != 0 else 0.0,
f"{wsig or ''} · {(wave_signal or {}).get('conf_pct', 0)}%")
# 2/3) M30 / H1 — die EMA-Signale, die die Welle tatsächlich nutzt
m30 = int((wave_snap or {}).get("htf_trend", 0) or 0)
@@ -2131,7 +2137,12 @@ class TradingEngine:
wsum = sum(v["weight"] for v in votes) or 1.0
bias = sum(v["weight"] * v["vote"] for v in votes) / wsum
others = [v for v in votes if v["name"] != "Welle" and v["weight"] > 0]
agree = sum(1 for v in others if wv != 0 and v["vote"] == wv)
# Referenzrichtung für „agree": normal die Welle. Sagt sie WARTEN (91 % der
# Zeit), gibt es keine Wellen-Richtung — dann zählt die Übereinstimmung mit
# der BIAS-Richtung (Fix 2026-07-30). Vorher stand dort immer „0/N", obwohl
# sich die anderen Module durchaus einig waren.
ref = wv if wv != 0 else (1 if bias > 0 else -1 if bias < 0 else 0)
agree = sum(1 for v in others if ref != 0 and v["vote"] == ref)
return {
"headline": wsig, "conf": (wave_signal or {}).get("conf_pct", 0),
"tf": (wave_snap or {}).get("tf"), # Zeitebene, für die die Empfehlung gilt