Modul-Audit: 5 Inkonsistenzen behoben + Secret-Luecke in .gitignore geschlossen

Systematische Pruefung aller Verdict-Module gegen die Regel "keine Aussage
-> Gewicht 0", dazu Config-, Frontend- und Level-Quellen.

(1) KI-COPILOT - der groesste Rest des Musters. Ein explizites "NEUTRAL"
zaehlte als echte Stimme mit Gewicht 1,0. Gemessen (verdict_votes, n=7.084):
das ist in 93,1 % der Faelle der Zustand (Elliott: 1,3 %) - also der
Normalzustand des Copiloten, kein abgewogenes Urteil. Damit hatte
ausgerechnet das Modul mit der schwaechsten Beleglage
(analyze_verdict_calibration.py: nicht robust praediktiv) den GROESSTEN
daempfenden Einfluss auf die Bias-Nadel.

(2) ELLIOTT analog: Gewicht nur bei gerichtetem Ziel.

Kumulierte Wirkung aller Gewichts-Fixes des Tages:
    Oe|bias|  0,370 -> 0,441 -> 0,569  (= 1,54x), betrifft 79,5 % der Zeilen
Live verifiziert: KI "NEUTRAL" -> Gewicht 0,00, bias 2,5/4,5 = 0,556
statt 2,5/5,5 = 0,455.

(3) STALE [zones] SPEISTEN DIE WELLEN-KONFIDENZ - entfernt. _sr_levels zog
beide Kanten jeder [zones]-Zone als S/R-Linien heran: 16 Kanten aus einem
~10 $ TIEFEREN Regime (72,90-77,00 bei Kurs 85,3). Aus dem Chart waren sie
am 14.07. schon entfernt worden, WEIL sie stale sind - in die Konfidenz
liefen sie weiter. Realer Audit-Fall: market.sr hatte gar keine
Widerstaende (M15-Cluster sind in frischen Trends oft leer) -> der
"naechste Widerstand" kam aus der fvg-Zone bei 88,00 (2,66 $ weg), der
echte lag bei 85,315 (0,03 $ weg). Der Abzug "dicht unter Widerstand"
(-12) greift nur innerhalb 0,5xATR und feuerte deshalb NIE.

(4) TOTE CONFIG entfernt: [trading] trail_timeframe (nirgends gelesen, Name
suggeriert faelschlich die Trailing-TF) und die komplette [setups]-Sektion
(11 Schluessel).

(5) raise StopIteration als Sprung in einem breiten except durch ein if
ersetzt - funktionierte, waere aber fragil sobald dort Logging dazukommt.

SICHERHEIT: beim Anlegen des Config-Backups fiel auf, dass .gitignore nur
"oil_widget_config.ini" abdeckt, NICHT "...ini.bak-<datum>". Das Backup lag
ungeschuetzt als untracked im Repo und enthaelt dieselben Live-Keys.
Muster ergaenzt. Gegenprobe: die .example-Datei enthaelt 10 secret-artige
Felder, davon 0 identisch mit der echten ini - alles Platzhalter.

Sauber geblieben: Frontend<->Backend (0 verwaiste Element-IDs), alle
uebrigen Verdict-Gewichte, alle anderen Config-Schluessel.

OFFEN (messpflichtig): die Wellen-Konfidenz aus _draw_levels speisen statt
aus dem Misch-Set - wuerde den -12-Abzug tatsaechlich ausloesen, also die
Konfidenz senken und das 55%-Gate verschieben.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-07-31 15:26:15 +02:00
co-authored by Claude Opus 5
parent 23c68e8837
commit 367d70eb7a
3 changed files with 99 additions and 30 deletions
+35
View File
@@ -1385,7 +1385,42 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
`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.
**MODUL-AUDIT 2026-07-31 (User: „überprüfe alle Module auf Inkonsistenzen"):**
systematisch alle Verdict-Module gegen die Regel „keine Aussage → Gewicht 0"
geprüft, dazu Config-, Frontend- und Level-Quellen. **5 Befunde, alle behoben:**
**(1) KI-Copilot — der größte Rest des Musters.** Ein explizites „NEUTRAL" zählte
als echte Stimme mit Gewicht 1,0. Gemessen (`verdict_votes`, n=7.084): das ist
**in 93,1 % der Fälle** der Zustand (Elliott: 1,3 %) — also der Normalzustand des
Copiloten, kein abgewogenes Urteil. Damit hatte ausgerechnet das Modul mit der
schwächsten Beleglage (`analyze_verdict_calibration.py`: nicht robust prädiktiv)
den GRÖSSTEN dämpfenden Einfluss. Jetzt `1.0 if av != 0 else 0.0`.
**(2) Elliott** analog: Gewicht nur bei gerichtetem Ziel (1,3 % der Zeilen).
**Kumulierte Wirkung aller Gewichts-Fixes des Tages: Ø|bias| 0,370 → 0,441 →
**0,569** (= 1,54×), betrifft 79,5 % der Zeilen.** Live verifiziert: KI „NEUTRAL"
→ Gewicht 0,00, bias 2,5/4,5 = **0,556** statt 2,5/5,5 = 0,455.
**(3) Stale `[zones]` speisten die Wellen-Konfidenz — entfernt.** `_sr_levels` zog
beide Kanten jeder `[zones]`-Zone als S/R-Linien heran: **16 Kanten aus einem ~10 $
TIEFEREN Regime** (72,9077,00 bei Kurs 85,3). Aus dem CHART waren sie am 14.07.
schon entfernt worden, WEIL sie stale sind — in die Konfidenz liefen sie weiter.
Realer Audit-Fall: `market.sr` hatte GAR KEINE Widerstände (M15-Cluster sind in
frischen Trends oft leer) → der „nächste Widerstand" kam aus der `fvg`-Zone bei
**88,00** (2,66 $ weg), der echte lag bei **85,315** (0,03 $ weg). Der Abzug „dicht
unter Widerstand" (12) greift nur innerhalb 0,5×ATR und feuerte deshalb **nie**.
Entfernen ist keine Strategieänderung, sondern das Streichen von Fremdregime-Daten;
`parse_zones` bleibt in `config.py`, die ini-Sektion bleibt (reaktivierbar).
**(4) Tote Config entfernt** (Backup `oil_widget_config.ini.bak-2026-07-31`):
`[trading] trail_timeframe = M1` (nirgends gelesen, Name suggeriert fälschlich, er
steuere die Trailing-TF) und die komplette **`[setups]`-Sektion** (11 Schlüssel,
vollständig tot).
**(5) `raise StopIteration`** als Sprung innerhalb eines breiten `except Exception`
(Trade-Marker-Export) durch ein `if` ersetzt — funktionierte, wäre aber fragil,
sobald dort jemand Logging ergänzt (Phantom-Fehler im ~5-s-Takt).
**Sauber:** Frontend↔Backend (0 verwaiste Element-IDs), alle übrigen
Verdict-Gewichte, alle anderen Config-Schlüssel.
**Offen (dokumentiert, nicht geändert):**
(0) **Wellen-Konfidenz aus `_draw_levels` speisen** statt aus dem Misch-Set — würde
den 12-Abzug tatsächlich auslösen, also Konfidenz senken und das 55%-Gate
verschieben. **Strategieänderung → messpflichtig.**
(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