Verdict: M30/H1 bekommen Gewicht 0 ohne Aussage (Bias-Fix Teil 3)

Anlass war die User-Frage "H1 aus der Gesamtempfehlung entfernen, da wir
jetzt mit M30 arbeiten?". Antwort NEIN, aber die Frage hat einen echten
Defekt freigelegt.

Zur Praemisse: auf M30 umgestellt wurde die S/R-LEVEL-QUELLE, nicht die
Zeitebenen-Logik. H1 war nie Basis-TF (tf_max=M30), sondern immer Kontext.

Zur vermuteten Doppelzaehlung - gemessen an verdict_votes (n=7.074):
bei gerichteter Welle stimmt M30 nur zu 14,9 % mit ihr ueberein, H1 zu
47 %, M30 und H1 untereinander nur zu 33,8 %. Keine redundanten Stimmen
(Reversals heben den M30-Filter bewusst auf, und M30 ist meist gar nicht
gerichtet). H1 fliesst zwar auch als Konfluenz-Bonus in die Konfidenz -
aber in eine ANDERE Kennzahl (Ring vs. Nadel), nicht zweimal in dieselbe.

DER ECHTE DEFEKT: add("M30", ...) und add("H1", ...) hatten Gewicht 1,5
UNBEDINGT, auch bei Stimme 0. Damit derselbe Fehler wie beim Wellen-Modul
(Bias-Fix Teil 2 vom 30.07.), hier uebersehen. Eine 0-Stimme heisst
"EMA-Abstand im Totband" = keine Aussage, nicht "neutral" - mit vollem
Gewicht im Nenner zog sie die Bias-Nadel dauerhaft zur Mitte.

Gemessen an 7.074 Verdicts: M30 ist in 57,9 % der Faelle ohne Aussage
(H1 nur 1,8 %). Oe-Bias-Betrag 0,371 -> 0,441, Median-Verstaerkung 1,30x,
in 33,3 % der Zeilen deutlich staerkere Nadel.

Fix: 1.5 if vote != 0 else 0.0 fuer beide. `others` filtert bereits auf
weight>0, die "x/y einig"-Zaehlung zieht damit automatisch mit.

Live verifiziert: M30 "flach" -> Gewicht 0,00, bias -1,5/4,5 = -0,333
statt -1,5/6,0 = -0,250 (genau die gemessene 1,33x-Verstaerkung),
agree 3/5 statt 3/6.

REINE ANZEIGE - die Order-Logik haengt an der Wellen-Headline, nicht am
Bias.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-07-31 13:43:38 +02:00
co-authored by Claude Opus 5
parent fe5c2aae0a
commit 23c68e8837
2 changed files with 39 additions and 8 deletions
+23 -5
View File
@@ -1365,14 +1365,32 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
2 einigen Modulen). Jetzt Referenz = Wellen-Richtung, ersatzweise die **Bias-
Richtung** (real: „2/3"). Beides REINE ANZEIGE — Order-Logik unberührt. Mit 6
synthetischen Szenarien verifiziert (alle einig · Rest dagegen · alles neutral ·
WARTEN+alle SHORT · Welle+Squeeze).**Offen (dokumentiert, nicht geändert):**
(a) **Doppelzählung** — die Welle nutzt M30 als Gegen-Trend-Filter und H1 als
Konfluenz-Bonus; beide zählen zusätzlich als eigene Stimmen (je 1,5), dieselbe
Information also zweimal. (b) **Drei divergierende Level-Quellen** seit der
WARTEN+alle SHORT · Welle+Squeeze).
⚠ **Bias-Fix DRITTER TEIL 2026-07-31 (Anlass: User-Frage „H1 aus der Gesamt-
empfehlung entfernen, da wir jetzt mit M30 arbeiten?"):** Antwort **NEIN** — die
Prämisse vermischt zwei Dinge (auf M30 umgestellt wurde die **S/R-Level-Quelle**,
nicht die Zeitebenen-Logik; H1 war nie Basis-TF, `tf_max=M30`). Und die vermutete
**Doppelzählung ist gemessen schwach** (`verdict_votes`, n=7.074): bei gerichteter
Welle stimmt **M30 nur zu 14,9 %** mit ihr überein, H1 zu 47 %, M30 und H1
untereinander nur zu **33,8 %** — keine redundanten Stimmen (Reversals heben den
M30-Filter bewusst auf, und M30 ist meist gar nicht gerichtet). H1 fließt zwar auch
als Konfluenz-Bonus in die Konfidenz — aber in eine ANDERE Kennzahl (Konfidenz-Ring
vs. Bias-Nadel), nicht zweimal in dieselbe.
**DER ECHTE DEFEKT lag woanders und ist behoben:** `add("M30", …)`/`add("H1", …)`
hatten **Gewicht 1,5 UNBEDINGT** — auch bei Stimme 0. Derselbe Fehler wie beim
Wellen-Modul (Teil 2), hier übersehen. Eine 0-Stimme heißt „EMA-Abstand im Totband"
= **keine Aussage**, nicht „neutral". Gemessen: **M30 ist in 57,9 % der Fälle ohne
Aussage** (H1 nur 1,8 %) → Ø-Bias-Betrag **0,371 → 0,441**, Median-Verstärkung
**1,30×**, in **33,3 %** der Zeilen deutlich stärkere Nadel. Jetzt
`1.5 if vote != 0 else 0.0`; `others` filtert bereits auf `weight>0`, die
„x/y einig"-Zählung zieht mit. Live verifiziert: M30 „flach" → Gewicht 0,00,
bias 1,5/4,5 = **0,333** statt 1,5/6,0 = 0,250. REINE ANZEIGE.
**Offen (dokumentiert, nicht geändert):**
(a) **Drei divergierende Level-Quellen** seit der
M30-Umstellung: `_draw_levels` (M30 → Chart/S/R-Close), `pb_levels` (M5 → Entry-
Raum-Gate), `_sr_levels` (Misch-Set → Wellen-Konfidenz); real wichen die Supports
um 0,65 $ ab. Bewusst so (jedes Gate ist auf seine Quelle kalibriert), aber eine
Stolperfalle. (c) `tu` wird noch als Parameter durchgereicht, seit 2026-07-06 ungenutzt.
Stolperfalle. (b) `tu` wird noch als Parameter durchgereicht, seit 2026-07-06 ungenutzt.
Formel/Details: `docs/gesamtempfehlung.md`.
Headline = **validierte Welle** (steuert Order) + **Zeitebene** (`verdict.tf`,
z. B. „▲ LONG · M5" — TF, für die die Empfehlung gilt); Rest = nur Konsens-Anzeige.
+16 -3
View File
@@ -2237,11 +2237,24 @@ class TradingEngine:
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
# 2/3) M30 / H1 — die EMA-Signale, die die Welle tatsächlich nutzt.
# ⚠ Gewicht 0 OHNE Aussage (Fix 2026-07-31) — dieselbe Regel wie bei Welle,
# Squeeze, Elliott und KI; bei der Verdict-Überarbeitung am 30.07. hier
# übersehen. Eine 0-Stimme bedeutet „EMA-Abstand im Totband" = keine Aussage,
# nicht „neutral" — mit vollem Gewicht im Nenner zog sie die Bias-Nadel
# dauerhaft zur Mitte.
# GEMESSEN an 7.074 geloggten Verdicts (`verdict_votes`): **M30 ist in 57,9 %
# der Fälle ohne Aussage** (H1 nur in 1,8 %) → Ø-Bias-Betrag 0,371 → **0,441**,
# Median-Verstärkung **1,30×**, in **33,3 %** der Zeilen deutlich stärkere Nadel.
# ⚠ Anlass war die User-Frage „H1 aus der Gesamtempfehlung entfernen?". Die
# Antwort ist NEIN — die vermutete Doppelzählung ist gemessen schwach (bei
# gerichteter Welle stimmt M30 nur zu 14,9 % mit ihr überein, H1 zu 47 %; M30
# und H1 untereinander nur zu 33,8 %). Der eigentliche Defekt war dieser hier.
# REINE ANZEIGE — die Order-Logik hängt an der Wellen-Headline, nicht am Bias.
m30 = int((wave_snap or {}).get("htf_trend", 0) or 0)
h1 = int((wave_snap or {}).get("h1_trend", 0) or 0)
add("M30", m30, 1.5, word(m30))
add("H1", h1, 1.5, word(h1))
add("M30", m30, 1.5 if m30 != 0 else 0.0, word(m30))
add("H1", h1, 1.5 if h1 != 0 else 0.0, word(h1))
# 4) TradersUnion ENTFERNT aus dem Verdict-Konsens (User-Vorgabe 2026-07-06):
# lagt + nicht backtestbar + Standard-Indikator-Konfluenz = kein Edge. Bleibt