ict-trader · Edge-gate № 1 · Ворота 0a
Край НЕ доказан у голого механизма — но хоронить методологию рано
Тест селективности (setup_score) технически не был включён — решающая «ручка отбора» не активирована.
2026-06-17 · 188 сделок · 5 символов (BTC/ETH/SOL/BNB/XRP) · 156k баров 15m · 2022–2026 · net после издержек Bybit · состязательно проверено 4 аудитами
gross (до издержек, k=0) — t-статистика
−0.043R
Gross-ожидание неотличимо от нуля — сигнала во входе нет ещё до комиссий
t=−0.34. Механизм sweep→MSS попадает в цель не лучше случайного входа до любых комиссий. Издержки не «создают» минус — они делают видимым то, что края уже не было.
WR: 25.0%
188 сделок
look_ahead: False
stop 141 / target 47
Net после издержек — вердикт
−67R
Net-ожидание −0.356R/сделку, t=−2.60 — значимый минус. Ворота 0a НЕ пройдены.
fees: 0.312R/сделку = главный убийца. Funding +0.0008R — ничтожен. Декомпозиция: gross −0.043 − fees 0.312 − funding 0.0008 = net −0.356R. WR=25% — математический break-even при RR=3. 0 из 5 символов в верхнем 5% хвосте против random-входа.
Основные метрики
| Метрика | Значение | Что значит |
| gross_exp (k=0) |
−0.043R |
t=−0.34 → статистически неотличим от нуля |
| net_exp (после издержек) |
−0.356R |
t=−2.60 → значимый минус |
| fees_avg |
0.312R |
главный «убийца», не funding |
| funding_avg |
+0.0008R |
ничтожен, не фактор |
| total net |
−67R |
за весь период |
| net WR |
25.0% |
break-even при RR=3 → отбор входа = монетка |
| exits |
stop 141 / target 47 |
структура «узкий стоп + цель 3R» работает как задумано |
| look_ahead_flag |
False везде |
WR 19–29% реалистичен, история не подкручена |
По символам
| Символ | n | gross | net | percentile | pass 0a |
| BTC |
45 |
+0.111 |
−0.300 |
81.8% |
❌ |
| ETH |
38 |
+0.008 |
−0.455 |
67.0% |
❌ |
| BNB |
58 |
−0.075 |
−0.331 |
48.4% |
❌ |
| SOL |
16 |
−0.032 |
−0.138 |
53.2% |
❌ |
| XRP |
31 |
−0.277 |
−0.476 |
25.6% |
❌ |
0 из 5 символов в верхнем 5% хвосте против random-входа.
Cost-sensitivity (net при ×k издержек)
| k | net_exp | Интерпретация |
| 0 | −0.043R | gross — уже минус без комиссий |
| 0.5 | −0.200R | половинная комиссия |
| 1 | −0.356R | реальные Bybit комиссии |
| 2 | −0.669R | двойная комиссия |
По режиму: bull n=96 → −0.396R · bear n=92 → −0.315R. Минус в обоих — это не «не тот рынок».
Почему так — что именно показал тест
- Сигнала во входе нет даже бесплатно. При k=0 gross_exp = −0.043R, t=−0.34. Механизм sweep→MSS попадает в цель не лучше случайного входа ещё до любых комиссий.
- WR ровно 25% = математический break-even при цели 3R. Стратегия выбирает момент входа не точнее подбрасывания монетки.
- Издержки добивают, и это честно. fees 0.312R/сделку — не баг модели (fee-rates = стандартные Bybit 0.055%/0.02%, формула проверена). Механическое следствие узких стопов: чем ближе стоп, тем больше комиссия в долях риска.
- ≈random. Контроль (random-baseline) гоняет тот же код симуляции с тем же риском, RR и издержками — обе стороны едят одинаковые комиссии. Percentile меряет чисто качество входа. Стратегия его не бьёт.
Робастен ли отрицательный вывод
Да, для голого механизма — робастен. Все 4 аудита единогласно: negative_is_artifact = false.
- Costing-реализм — честный и cost-нейтрален к гейту (обе ветки едят одинаково). При k=0 края уже нет. Менять costing незачем.
- Fill-пессимизм — три механизма (pessimistic-intrabar, await-retrace fill, windowed setups) проверены. Два из трёх смещают результат в пользу стратегии, не против. Ложного минуса нет.
- Baseline-статистика — контроль справедлив, даже слегка консервативен против стратегии. Percentile корректен.
Steelman: что реально упущено (2 фактических факта в коде)
1. Селективности не было вообще. setup_score захардкожен = 60 для каждого сетапа; setup_confluence_score() = NotImplementedError. Тестировались все сетапы подряд без фильтра. Спека (р. 4.3) называет монотонность «выше score → выше R» потенциальным краем в одной ручке — и этот тест не запущен.
2. Есть прокси-сигнал, убитый издержками. Бакеты по тайтовости стопа: Q1 (самые узкие стопы, n=47) даёт target-rate 38% (≫ 25% break-even) и gross +0.487R — направленный сигнал есть. Но fees там 0.745R на микро-стопе → net −0.261R. В подмножестве с выгодной геометрией механизм бьёт случайность по gross.
Граница вывода
«Нет края у голого sweep→MSS с фикс-3R и микро-стопом» — можно утверждать с высокой уверенностью (gross t=−0.34).
«Нет края у методологии ICT» — нельзя: решающий по собственной спеке тест (score-бакеты) не запускался.
Рекомендация по архитектуре v2
Ворота №1 (ступень 0a) НЕ пройдены → по своей же спеке проект не идёт в агрессив/разгон/мульти-профиль/live. Mandate держит edge_validated = false и отказывает AGGRESSIVE (р. 4.5).
- Реализовать setup_confluence_score (engine.py:121, р. 4.3) — сила displacement (body/ATR), вес снятого уровня (equal_HL=3 vs old_swing=2), наличие FVG, RR. Разбить 188 сделок по бакетам 60–70/70–80/80–90/90+. Если верхний бакет даёт gross заметно >0 и net-percentile ≥95 vs random — край есть, его прятало отсутствие отбора. Flip-условие №1.
- Свернуть издержку микро-стопа. Поднять min_stop_atr (config 0.5) и/или ввести минимальную абсолютную стоп-дистанцию. 7 сделок с fees_R>1R съели 18.8R = 28% всего убытка. Перепрогнать Q1-подобную подвыборку: если gross-сигнал Q1 (+0.487R, target 38%) выживает в net на нормальной стоп-геометрии — край маскировался костингом.
- RR-sweep + лог MFE/MAE. Прогнать RR ∈ {1.5, 2, 2.5} на тех же входах. Если на RR=2 target-rate уверенно >33% с положительным net-percentile — фикс-3R был неоптимален, не механизм.
- Починить вход «в нож». 29/188 стопов срабатывают на той же свече, что и fill (bars_held=0). Добавить подтверждение (close обратно в зону / 1 бар после ретрейса) или premium/discount-фильтр (р. 4.4).
- Только после №1 и №2 — ступень 0b (MCPT) как независимое подтверждение на лучшем кандидате.
Если после №1 и №2 верхний score-бакет на нормальной стоп-геометрии всё равно даёт gross t≈0 и net-percentile <95 — край можно хоронить с высокой уверенностью. До этого — хоронить методологию ICT рано.
Честные оговорки — что НЕ протестировано
- Ступень 0b (MCPT / block-permutation) — не прогнан. Независимый тест на край в последовательности истории.
- Ступень 1 (walk-forward OOS / CPCV) — не прогнан. Не проверено, держится ли что-либо вне in-sample.
- Ступень 2 (deflated Sharpe + PBO) — не прогнан.
- Селективность (setup_confluence_score) — NotImplementedError, не активна. Это и есть «ручка края» по собственной спеке.
- Не активны: premium/discount-фильтр, HTF-bias, regime-фильтр как master-switch, SMT, монитор R1–R13 (стоит фикс-3R TP), RR-калибровка.
- Мощность тонкая: n=16–58/символ. 95%-CI gross [−0.30; +0.21] — не исключает малого реального края (~+0.2R). «Край не обнаружен», а не «доказано отсутствует».
- В записях нет MFE/MAE — нельзя оценить оптимальный RR без перепрогона.
- Окно-приближение в генераторе сетапов (windowed) — даёт +25% over-detection, направление безопасное (не теряет сделки).