analyze_slippage_holdtime.py: die offene Zahl gemessen — M1 ist entschieden

Der M1-Squeeze hing an der Exit-Slippage bei kurzer Haltedauer. Die bisher
zitierten "Median 0,017 / Ø 0,234" waren die Statistik NUR ueber die
Ausreisser — analyze_execution.py zaehlt ausschliesslich Faelle, die
schlechter als der Initial-SL endeten.

Sauber ist E[Slippage] >= P(gap>0) x Ø(gap|gap>0). Unkontaminiert, weil das
Trailing den gap nur negativer machen kann: ein positiver gap ist zwingend
Slippage. Ueber 317 SL-Closes, <30 min:
  alle Stunden   0,0370 $   (0-15 min allein 0,0470)
  nur 10-17 Uhr  0,0124 $   (0-15 min allein 0,0058)

Der Schwanz sitzt ausserhalb von 10-17 — bei kurzen Trades dort 8x kleiner.
Gleiche Ursache wie beim Spread (Buchtiefe), also Mechanismus statt Zufall.

Endvergleich mit dem gemessenen Wert je Fenster:
  M1 alle Stunden  -0,107/-0,161  PF 0,83/0,76   FAELLT HART DURCH
  M1 10-17         +0,354/+0,247  ΣR +150/+121
  M5 alle Stunden  +0,401/+0,261  ΣR +108/+71
  M5 10-17         +0,751/+0,444  ΣR  +68/+45

Der ΣR-Vorsprung von M1 ueber alle Stunden war reines Artefakt der Annahme
"keine Exit-Slippage". Auf demselben Fenster bleibt ein echter Zielkonflikt:
M5 doppelt so gut je Trade, M1 doppelt so gut in der Summe — bei EINEM Slot.

Urteil: nicht umstellen. Der entscheidende Parameter ist nur als Untergrenze
bekannt und M1 hat davon nur ~3x Luft bis zur Kippgrenze (M5 ~7x); die
Stichproben sind duenn; 80 Tage = ein Regime. Die Bedingung fuer ein spaeteres
Ja ist in CLAUDE.md benannt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-06 12:40:15 +02:00
co-authored by Claude Opus 5
parent 92187d7d32
commit 217981ccf5
3 changed files with 199 additions and 16 deletions
+25
View File
@@ -271,6 +271,31 @@ def main():
lauf(K5, H5, L5, C5, lo5, hi5, exit_slip_usd=s_usd),
lauf(K5, H5, L5, C5, lo6, hi6, exit_slip_usd=s_usd))
# ── ENDVERGLEICH mit der GEMESSENEN Slippage ─────────────────────────
# `analyze_slippage_holdtime.py` (06.08., 317 SL-Closes): E[Slippage] als
# Untergrenze, bedingt auf kurze Haltedauern —
# <30 min, ALLE Stunden : 0,0370 $ (015 min allein sogar 0,0470)
# <30 min, NUR 1017 Uhr : 0,0124 $ (der Schwanz sitzt ausserhalb)
# Genau das ist die Zahl, die im ersten Lauf gefehlt hat.
print()
print("=" * 94)
print(" ENDVERGLEICH mit der GEMESSENEN Exit-Slippage (analyze_slippage_holdtime.py)")
print("=" * 94)
print(" Untergrenze E[Slippage] bei kurzer Haltedauer: 0,0370 $ alle Stunden ·")
print(" 0,0124 $ nur 1017 Uhr. Jede Variante bekommt den Wert IHRES Fensters.")
zeig(" M1 A (alle Stunden) · 0,0370 $",
lauf(K1, H1_, L1_, C1_, lo1, hi1, exit_slip_usd=0.0370),
lauf(K1, H1_, L1_, C1_, lo2, hi2, exit_slip_usd=0.0370))
zeig(" M1 C (1017 Uhr) · 0,0124 $",
lauf(K1, H1_, L1_, C1_, lo1, hi1, stunden=_STUNDEN_OK, exit_slip_usd=0.0124),
lauf(K1, H1_, L1_, C1_, lo2, hi2, stunden=_STUNDEN_OK, exit_slip_usd=0.0124))
zeig(" M5-Kontrolle (alle Stunden) · 0,0370 $",
lauf(K5, H5, L5, C5, lo5, hi5, exit_slip_usd=0.0370),
lauf(K5, H5, L5, C5, lo6, hi6, exit_slip_usd=0.0370))
zeig(" M5-Kontrolle (1017 Uhr) · 0,0124 $",
lauf(K5, H5, L5, C5, lo5, hi5, stunden=_STUNDEN_OK, exit_slip_usd=0.0124),
lauf(K5, H5, L5, C5, lo6, hi6, stunden=_STUNDEN_OK, exit_slip_usd=0.0124))
print()
print("=" * 94)
print(" NACHBAR-PARAMETER (Box / k) — kippt das Vorzeichen?")