Gate 3 mit Richtungs-Lesart - bedingt auf das Level, keine freie Prognose (v=156)

User-Frage: kann die Karte eine Wahrscheinlichkeit fuer steigenden oder
fallenden Kurs rechnen?

FREI: nein, und das ist gemessen. analyze_reversal.py hat genau das gebaut
(logistische Regression, 8 kausale Merkmale, 5 Ereignis-Definitionen):
AUC 0,499-0,509 out-of-sample und IN-SAMPLE nur 0,52. Die zweite Zahl ist die
entscheidende - das Modell erklaert nicht einmal seine eigenen Trainingsdaten.
Kein Overfitting, sondern keine Information vorhanden. Dazu Live-Richtung
48-51 % ueber 1.071 Episoden, Meta-Labeling AUC 0,508/0,479.

BEDINGT: ja, und die Zahl ist schon da. P(break) fragt nicht "wohin geht der
Kurs", sondern "haelt DIESE Struktur" - bedingt auf ein reales Objekt mit
Orders dahinter, AUC 0,65 out-of-sample.

Gate 3 formuliert das jetzt aus:
  Widerstand 77.784 (1,27xATR)  -> 56 % Abprall, eher abwaerts
  Support    77.098 (0,90xATR)  -> 65 % Abprall, eher aufwaerts

45-55 % bekommt BEWUSST keine Richtung - dort ist die Zahl ein Muenzwurf, und
daraus einen Pfeil zu machen waere derselbe Fehler, den die MQL5-Pfeile schon
einmal vermieden haben. Tooltip nennt die Beleglage und die aktuelle
Fehlkalibrierung (~7 Pp zu niedrig).

Logik mit 6 Faellen geprueft (Widerstand/Support x hoch/niedrig/Muenzwurf).

Nebenbefund: node --check hat einen Syntaxfehler gefangen - ein gerades " als
schliessendes deutsches Anfuehrungszeichen beendete den String. Genau die in
CLAUDE.md dokumentierte Falle; die heute eingebaute Pruefung hat sie sofort
gemeldet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-08 23:27:40 +02:00
co-authored by Claude Opus 5
parent 0c81c4e651
commit 5ddbe07066
2 changed files with 29 additions and 4 deletions
+27 -2
View File
@@ -193,10 +193,35 @@ function renderM15(s) {
const nah = z.filter(x => x.gap_atr15 != null && x.gap_atr15 <= 0.5);
const zOk = nah.length > 0;
$("m15-zone").className = "m15-item " + (z.length ? (zOk ? "ok" : "warn") : "");
// ⚠⚠ RICHTUNGS-LESART, aber BEDINGT auf das Level. Eine FREIE Prognose ist
// gemessen unmoeglich (`analyze_reversal.py`: AUC 0,4990,509 oos und
// **in-sample nur 0,52** — die Merkmale enthalten keine Richtungsinformation;
// Live-Richtung 4851 % ueber 1.071 Episoden). P(break) fragt dagegen nicht
// „wohin geht der Kurs", sondern „haelt DIESE Struktur?" — bedingt auf ein
// reales Objekt mit Orders dahinter, AUC 0,65 oos.
// ⚠ 4555 % bekommt BEWUSST keine Richtung: dort ist die Zahl ein Muenzwurf,
// und daraus einen Pfeil zu machen waere genau der Fehler, den die
// MQL5-Pfeile schon einmal vermieden haben.
const lesart = (x) => {
const p = x.p_break, res = x.seite === "res";
if (p == null) return "";
if (p >= 45 && p <= 55) return " → unentschieden";
const bricht = p > 55;
// Widerstand gebrochen = aufwaerts · Widerstand haelt = abwaerts
const auf = res ? bricht : !bricht;
const q = bricht ? `${p} % Bruch` : `${100 - p} % Abprall`;
return `${q}, eher ${auf ? "aufwärts ▲" : "abwärts ▼"}`;
};
$("m15-zone").textContent = z.length
? "③ " + z.map(x => `${x.seite === "res" ? "Widerstand" : "Support"} ${f(x.level, 3)}`
+ ` (${f(x.gap_atr15)}×ATR, Bruch ${x.p_break} %)`).join(" · ")
? "③ " + z.map(x => `${x.seite === "res" ? "Widerstand" : "Support"} `
+ `${f(x.level, 3)} (${f(x.gap_atr15)}×ATR)${lesart(x)}`).join(" · ")
: "③ kein Level in Sicht";
$("m15-zone").title = "Richtungs-Lesart BEDINGT auf das Level, keine freie "
+ "Prognose: eine solche ist gemessen unmöglich (AUC 0,50 out-of-sample und "
+ "nur 0,52 in-sample — es steckt keine Richtungsinformation in den Daten). "
+ "P(break) fragt stattdessen „hält diese Struktur?“ und ist out-of-sample "
+ "kalibriert (AUC 0,65). ⚠ Live derzeit rund 7 Pp zu niedrig — die Abprall-"
+ "Quote ist also eher noch etwas optimistisch. 4555 % bleibt ohne Richtung.";
// ── Reichweite (Kegel) — sagt WIE WEIT, nicht wohin ──────────────────
// ⚠ REINE GEOMETRIE: passt das Gegenlevel (= das Ziel) noch in das 80-%-Band