"S/R-Close kappt die Squeeze-Laeufer" = widerlegt (backtest_squeeze_srclose2.py)

Meine eigene Hypothese vom selben Tag -- gemessen falsch, und zwar doppelt.

(1) BACKTEST (80k M5, 2 Halbjahre, Einstiege ueber den geteilten
squeeze_scan.scan(on_entry=...), ruhende Order am Level mit Fill bei Beruehrung,
kanonischer Exit, Echtkosten, ein Slot; identische Entry-Liste ueber alle
Varianten, variiert wird NUR der Exit):

  A) ohne S/R-Close      H1 -0,151 / PF 0,72   H2 -0,079 / PF 0,86
  B) mit p<0,35 (LIVE)   H1 -0,119 / PF 0,76   H2 -0,049 / PF 0,91   D +0,032/+0,030
  B) mit p<0,45          H1 -0,088             H2 -0,046             D +0,063/+0,033

Der S/R-Close ist in BEIDEN Haelften besser als ohne -- die vorab fixierte Regel
sagt: anlassen. Und die von mir vorgeschlagene "Abhilfe" (Close erst ab
Mindestgewinn) macht H1 schlechter (D -0,006 / -0,011).

(2) LIVE, 11 Squeeze-Trades ab 01.08.:
  sl        5 Trades  -198,17 EUR
  sr_close  4 Trades   +15,98 EUR   <- der verdaechtigte Exit hat BEIGETRAGEN
  manual    2 Trades    +8,73 EUR
Der groesste Gewinner (+77,34) kam ebenfalls ueber sl, also ueber das Trailing.
Die Groesse steckt allein auf der Verlustseite: -175,21 EUR bei 2,91 Lots =
0,695 $ = der planmaessige 2xATR-Stop. Der Hebel zeigt auf SIZING, nicht Exit.

GRENZE, nicht ueberspielt: die ABSOLUTEN Werte reproduzieren den dokumentierten
Kontrollwert NICHT (backtest_squeeze_touchfill.py: +0,124/+0,292 bei 1.092/1.807
Trades gegen -0,151/-0,079 bei 273/422). Belastbar ist allein der RELATIVE
Vergleich; "der Squeeze ist negativ" ist hier NICHT belegt.

Zwei eigene Fehler dokumentiert, weil es Fehlerklassen sind:
- erster Lauf nahm den Modul-Default ATRMIN_STD=0,12 statt des Live-Werts 0,06
  -> H1 127 gegen H2 483 Einstiege, voellig andere Population. Dieselbe Klasse
  wie das fehlende set_entry_room(0.6): ein aufgerufenes Gate ist nicht dasselbe
  wie ein aktives Gate.
- erster Entwurf haengte den Close an stop_when (prueft den BAR-CLOSE gegen ein
  0,018-$-Fenster) -> feuerte fast nie. Live prueft den laufenden Kurs im
  Sekundentakt; das Analogon ist die Bar-SPANNE.

Nichts am Live-System geaendert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-13 16:33:11 +02:00
co-authored by Claude Opus 5
parent 03329c44b5
commit 1e8d700f46
2 changed files with 379 additions and 0 deletions
+64
View File
@@ -5553,6 +5553,70 @@ läuft die B5-Regel **nie ab**, der schlechteste Zustand. `auto_sr_close=True`,
Circuit-Breaker **aus** (`limit_pct=0`), Sizing 95 % Margin, Balance 1.279 €.
Bei Ø-Verlust 94 € sind das **7,4 % des Kontos je Verlusttrade**.
### ✅⚠ „DER S/R-CLOSE KAPPT DIE SQUEEZE-LÄUFER" = WIDERLEGT (`backtest_squeeze_srclose2.py`, 2026-08-13)
Meine eigene Hypothese vom selben Tag (drei von sieben Pending-Trades per
`sr_close` bei +0,26 / +2,88 / +0,28 € beendet) — **gemessen falsch, und zwar
doppelt.**
**(1) BACKTEST** (80k M5, 2 Halbjahre, Einstiege über den GETEILTEN
`squeeze_scan.scan(on_entry=…)`, ruhende Order am Level mit Fill bei Berührung,
kanonischer Exit, Echtkosten, EIN Slot; identische Entry-Liste über alle
Varianten, variiert wird NUR der Exit):
| Variante | H1 ØR / PF | H2 ØR / PF | Δ gegen ohne |
|---|---|---|---|
| **A) ohne S/R-Close** | 0,151 / 0,72 | 0,079 / 0,86 | — |
| **B) mit, p<0,35 (LIVE)** | **0,119 / 0,76** | **0,049 / 0,91** | **+0,032 / +0,030** |
| B) p<0,45 | 0,088 / 0,82 | 0,046 / 0,92 | +0,063 / +0,033 |
| B) p<0,55 | 0,086 / 0,82 | 0,038 / 0,93 | +0,065 / +0,041 |
**Der S/R-Close ist in BEIDEN Hälften BESSER als ohne** — die vorab fixierte
Regel sagt damit: **anlassen.** ⚠ Und die von mir vorgeschlagene „Abhilfe"
(Close erst ab Mindestgewinn) macht H1 **schlechter**0,006 / 0,011 bei
0,5 bzw. 1,0×ATR) — der Eingriff hätte geschadet.
**(2) LIVE, 11 Squeeze-Trades ab 01.08. — die Zerlegung ist eindeutig:**
| Schließgrund | n | Σ | Ø |
|---|---|---|---|
| **`sl`** (Stop/Trailing) | 5 | **198,17 €** | 39,63 |
| `sr_close` | 4 | **+15,98 €** | +4,00 |
| `manual` | 2 | +8,73 € | +4,37 |
⚠⚠ **Der verdächtigte Exit hat +15,98 € BEIGETRAGEN, nicht gekostet.** Und der
größte Gewinner des Zeitraums (+77,34 €) kam ebenfalls über `sl` — also über das
**Trailing**, nicht trotz ihm.
⚠ Die Größe steckt allein auf der Verlustseite: **175,21 € bei 2,91 Lots** =
0,695 $ Bewegung — das ist der **planmäßige 2×ATR-Stop** bei dem ATR jenes
Moments, kein Ausreißer und kein Exit-Defekt. Ø-Verlust 94,15 € auf 1.279 €
Konto = **7,4 % je Verlusttrade**.
**Damit zeigt der Hebel auf SIZING, nicht auf den Exit** — genau dorthin, wo
CLAUDE.md ihn ohnehin verortet („Der Hebel ist Sizing, nicht der Exit").
⚠⚠ **GRENZE, die nicht überspielt werden darf: die ABSOLUTEN Werte reproduzieren
den dokumentierten Kontrollwert NICHT.** `backtest_squeeze_touchfill.py` liefert
für denselben nominellen Aufbau **+0,124/+0,292** bei 1.092/1.807 Trades, hier
sind es 0,151/0,079 bei 273/422. Die Referenz hat also **mehr Trades als ich
Einstiege habe** — ihre Auswahl ist lockerer (Fenster/Cooldown/Slot-Behandlung).
**Deshalb ist der Befund „der Squeeze ist negativ" hier NICHT belegt**; belastbar
ist allein der **relative** Vergleich, weil alle Varianten auf derselben
Entry-Liste laufen und sich nur im Exit unterscheiden. Wer die Absolutwerte
braucht, muss zuerst die Kontrolle reproduzieren (die Projekt-Regel, die
`backtest_verworfene_v2.py` vorbildlich befolgt).
⚠⚠ **EIGENER FEHLER auf dem Weg, dokumentiert weil es eine Fehlerklasse ist:**
der erste Lauf nahm den Modul-Default `squeeze_scan.ATRMIN_STD = 0,12`, während
live und die Referenz **0,06** nutzen (der Floor wurde gemessen gesenkt). Folge:
**H1 127 gegen H2 483 Einstiege** — der hohe Floor filtert die Niedrig-Vola-
Hälfte weg und erzeugt eine ganz andere Population. Aufgefallen nur durch die
Schieflage der Entry-Zahlen. Dieselbe Klasse wie das fehlende
`set_entry_room(0.6)` am 05.08.: **ein aufgerufenes Gate ist nicht dasselbe wie
ein aktives Gate; beim Wiederverwenden eines Kerns gehört die Live-KONFIGURATION
mitkopiert.** ⚠ Die Schlussfolgerung war in beiden Läufen dieselbe.
⚠ Zweiter eigener Fehler: der erste Entwurf hängte den S/R-Close an den
`stop_when`-Haken, der zum **Bar-Close** prüft — bei einem „am Level"-Fenster von
0,15×ATR ≈ 0,018 $ feuerte er fast nie (Δ ≈ 0,000), während er live 9497 % aller
Berührungen schliesst. Live prüft den **laufenden** Kurs im Sekundentakt; das
Analogon ist die **Bar-Spanne**. Danach feuert er in 2123 % der Trades (live
4 von 11 = 36 %, bei n=11 kein Widerspruch).
### ✅ S/R-AUTO-CLOSE WIEDER AN (User-Entscheidung 2026-08-11)
Frage war: „sollten wir Trades bei einem S/R-Bounce automatisch schliessen?"