M15-Karte misst sich selbst + Ausfuehrungsqualitaet sichtbar (v=157)

Nach Web-Recherche umgesetzt, Punkte 2 und 3 der Wahl.

SELBSTMESSUNG (neue Tabelle m15_states): die Karte hatte KEINE Rueckkopplung -
geprueft, es gab kein Logging. Das war die auffaelligste Luecke: jeder Ausfall,
der in diesem Projekt je aufgedeckt wurde, kam aus einer Rueckkopplung
(pbreak_predictions entlarvte den Modellausfall LIVE, was kein Backtest konnte;
der B4-Monitor die Squeeze-Drift). Die Karte haette monatelang falsch stehen
koennen.
Neu: eine Zeile je ZUSTANDSWECHSEL, nach 30/60 min gegen candles_m1
ausgewertet, Ergebnis als Zeile 6 in der Karte. Gewertet wird die LESART, nicht
der Status, und nur die gerichtete (45-55 % zaehlt nicht mit). Gegen 50 % lesen.
Nur bei Wechsel, nie je Tick - sonst dieselbe Cluster-Verzerrung, die am 07.08.
elf widerlegte Hypothesen ausgeloest hat. Live verifiziert: 1 Zeile trotz
laufendem Sekundentakt.

AUSFUEHRUNGSQUALITAET (Zeile 7): analyze_squeeze_entry_gap.py existiert seit dem
05.08. und misst die TCA-Kennzahl (Arrival-Price-Slippage) - niemand hat je
hineingesehen. Dabei war das der einzige Erfolgsmassstab des Stop-Order-Umbaus
und zugleich der groesste je gemessene Hebel (+0,32 R). Jetzt steht der
Zaehlstand in der Karte: 3 von 12 Bot-Trades seit dem Umbau.

NICHT gebaut: der Kegel mit Adaptive Conformal Inference. Er ist mit
76,7/76,6/75,3 % gegen 80 % Nennwert dokumentiert zu eng, und ACI waere die
Standardmethode (adjustiert online, garantiert Konvergenz auch unter Drift).
Bleibt offen.

BEIM BAU EIN NAMEERROR IM 1-SEKUNDEN-PFAD, VOM LINTER GEFANGEN: der erste
Entwurf berechnete _m15 in _run_analysis und benutzte es in snapshot(); dort
gibt es weder market noch wave_snap. py_compile sieht das NICHT, ruff F821
meldete 4 Befunde. Genau die Fehlerklasse, fuer die der Linter am 07.08.
eingebaut wurde - und der erste echte Fang. Zweiter Fehler beim Verschieben:
der Block landete mitten in einem mehrzeiligen Aufruf. Beide behoben.

DB-Backup: oil_widget_history.db.bak-2026-08-08-m15states

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-08 23:38:56 +02:00
co-authored by Claude Opus 5
parent 5ddbe07066
commit 86c432f791
5 changed files with 341 additions and 6 deletions
+30
View File
@@ -252,6 +252,36 @@ function renderM15(s) {
? `⑤ gegen das Signal: ${g.n} Trades, ${f(g.pnl_lot, 2)} € je Lot`
: "⑤ Veto: noch zu wenige Trades";
// ── ⑥ Selbstmessung: die Karte zeigt ihre EIGENE Trefferquote ────────
// ⚠ Gegen 50 % lesen. Gemessen wird die BEDINGTE Lesart am Level, nicht
// eine freie Prognose — die ist gemessen unmöglich (AUC 0,52 in-sample).
const tk = s.m15_track || {};
const tEl = $("m15-track");
if (tk.n >= 20 && tk.wr30 != null) {
tEl.className = "m15-item " + (tk.wr30 >= 55 ? "ok" : tk.wr30 <= 45 ? "warn" : "");
tEl.textContent = `⑥ eigene Trefferquote (${tk.n} Zustände): ${tk.wr30} % auf 30`
+ (tk.wr60 != null ? ` · ${tk.wr60} % auf 60` : "")
+ ` · Ø ${tk.avg30 == null ? "—" : (tk.avg30 >= 0 ? "+" : "") + f(tk.avg30, 3)}×ATR`;
} else {
tEl.className = "m15-item";
tEl.textContent = `⑥ eigene Trefferquote: sammelt noch`
+ (tk.n ? ` (${tk.n} von 20 ausgewertet)` : "")
+ (tk.offen ? ` · ${tk.offen} offen` : "");
}
// ── ⑦ Ausführungsqualität — der einzige gemessen grosse Hebel ────────
const eg = s.entry_gap || {};
const eEl = $("m15-exec");
if (eg.n_seit_umbau != null) {
const genug = eg.n_seit_umbau >= (eg.soll || 12);
eEl.className = "m15-item " + (genug ? "ok" : "");
eEl.textContent = `⑦ Ausführung: ${eg.n_seit_umbau} Bot-Trades seit dem `
+ `Stop-Order-Umbau (Prüfung ab ${eg.soll || 12})`;
} else {
eEl.className = "m15-item";
eEl.textContent = "⑦ Ausführung —";
}
// ── Status: die Kette wird der Reihe nach ausgewertet ────────────────
// ⚠ Das Banner nennt AUSDRUECKLICH keine Richtung. Es sagt, ob die
// BEDINGUNGEN fuer eine Order am Level stehen — und was verboten ist.