Стратегии
BTC Пробой после поглощения стены ликвидности — лонг-шорт; торговля продолжения движения при поглощении стены заявок LARGE и пробое цены, сигнал по дельте глубины стакана (стакан, удержание около 1 ч, 3 параметра)
Итог: Отменено
BtcLiquidityWallConsumptionBreakoutLS
По-настоящему новое семейство сигналов (дисбаланс глубины книги лимитных заявок) — не клон OHLCV
Гипотеза
LONG-SHORT, направленная стратегия по одному инструменту на BTCUSDT.BINANCE (бессрочный контракт USD-M), основанная на ORDER_BOOK_DELTAS (полная глубина стакана), — это источник данных, который не использовался ни в одном из моих предыдущих 25+ предложений и относится к принципиально иному FAMILY сигналов, чем шаблоны импульса и тренда на OHLCV с результатом 0/213 (L56), а также уже подготовленные выпуклые и премиальные стратегии. PREMISE (описанный архетип микроструктуры): крупный лимитный ордер на покупку или……Показать большеСвернуть
LONG-SHORT, направленная стратегия по одному инструменту на BTCUSDT.BINANCE (бессрочный контракт USD-M), основанная на ORDER_BOOK_DELTAS (полная глубина стакана), — это источник данных, который не использовался ни в одном из моих предыдущих 25+ предложений и относится к принципиально иному FAMILY сигналов, чем шаблоны импульса и тренда на OHLCV с результатом 0/213 (L56), а также уже подготовленные выпуклые и премиальные стратегии. PREMISE (описанный архетип микроструктуры): крупный лимитный ордер на покупку или продажу объёмом LARGE в стакане — «стена ликвидности» — временно служит ценовым барьером; когда его CONSUMED (агрессивный поток сделок поглощает стену, а дельта стакана показывает исчезновение этого объёма), барьер исчезает, и цена обычно CONTINUE в направлении пробоя, поскольку накопленный поток высвобождается и срабатывают стоп-ордера. Стратегия выявляет крупные стены по совокупной глубине стакана, ждёт их поглощения с пробоем цены и затем входит в направлении пробоя на короткий период удержания. Она торгует только действительно ONLY стенами LARGE (с высоким порогом объёма), чтобы последующее движение было достаточно большим для покрытия комиссий — это противоположность высокочастотной скальпинг-стратегии по стакану. NOT клоном импульсной стратегии с подтверждением факторов OHLCV (L56 — сигнал основан на глубине стакана, а не на скользящих средних цены), NOT стратегией возврата к среднему (L53 — сделки открываются WITH пробоя), NOT пробоем после сжатия (L54 — сигналом служит поглощение стены в стакане, а не резкий скачок после сжатия волатильности), NOT фильтром на основе потока NON-PRICE (L46 — стакан отражает цену и микроструктуру, а не потоки OI, финансирования и агрессивных сделок; кроме того, это сам сигнал PRIMARY, а не фильтр движения цены за бар), NOT потоком ликвидаций (L58 — стратегия использует стакан, который в каталоге обозначен как order_book_deltas), NOT опционами/COIN-M/кэрри/базисом (L50/L51/L57). На BTC (самом глубоком и ликвидном стакане, где стены имеют значение и данные наиболее плотные). Заполняет недостаточно представленный короткий горизонт (8.9% против 10%) и направление лонг-шорт (13.5%). Параметры 3 (порог объёма стены, подтверждение пробоя, цель выхода и стоп). HONEST оговорка: результаты бэктеста микроструктурных стратегий чувствительны к реалистичности (допущениям о исполнении ордеров и реконструкции стакана), а стратегии с коротким горизонтом подвержены риску fee_edge — оба аспекта раскрыты и должны быть подтверждены в песочнице. Профиль риска: около 1% капитала под риском на сделку при фиксированном стопе чуть внутри уровня поглощённой стены; размер позиции ограничен 20% капитала с учётом плеча; предел плеча 2x (считывается self.config.leverage).
ROOT CAUSE OF THE 1-TRADE SANDBOX FOUND, AND IT IS A PIPELINE GAP, NOT THE STRATEGY. src/agents/pipeline_processor.py::_collect_supplementary_data возвращает ровно 11 дополнительных ключей (funding_rates, ликвидации, open_interest, верхние/глобальные/позиционные коэффициенты, taker_ratio, метрики, hl_funding_rates, deribit_dvol, deribit_funding) — book_depth среди них является NOT, хотя supp_collector.SUPP_KEYS это поддерживает, а supp_loaders.load_book_depth строит его из 529МБ реальных parquet-файлов bookDepth.……Показать большеСвернуть
ROOT CAUSE OF THE 1-TRADE SANDBOX FOUND, AND IT IS A PIPELINE GAP, NOT THE STRATEGY. src/agents/pipeline_processor.py::_collect_supplementary_data возвращает ровно 11 дополнительных ключей (funding_rates, ликвидации, open_interest, верхние/глобальные/позиционные коэффициенты, taker_ratio, метрики, hl_funding_rates, deribit_dvol, deribit_funding) — book_depth среди них является NOT, хотя supp_collector.SUPP_KEYS это поддерживает, а supp_loaders.load_book_depth строит его из 529МБ реальных parquet-файлов bookDepth. Поэтому фильтр Layer 3 по real_used не находит book_depth, и merged_supp использует запасной вариант synthetic_scenarios._gen_synthetic_book_depth: серию RANDOM с возвратом к среднему и дисбалансом, не коррелирующую с реальной траекторией цены. Мой вход требует одновременного выполнения условий: экстремальный z-показатель AND (обвал >=50%) AND (цена пробивает экстремум за 12 свечей); на случайной серии дисбаланса такое сочетание срабатывает случайно примерно раз в год — именно такую 1 сделку сообщила песочница против 65/год на серии REAL. На полном этапе бэктеста этого пробела нет: данные загружаются через supp_collector, поэтому только песочница не видит этот поток. Предлагаемое однострочное исправление конвейера для сопровождающего: добавить "book_depth": load_book_depth(supplementary_dir, symbol) в возвращаемый словарь. До этого ни одна стратегия на основе book_depth не сможет дать содержательный результат песочницы Layer-3, что бы ни делал её код. WHAT Я CHANGED ANYWAY, чтобы устранить претензию к измеримости на реальном потоке данных: ориентир стены теперь — знаковая PEAK величина obi_z за последние 3 свечей, а не только за одну предыдущую, поскольку поглощение стены часто занимает две или три минутные свечи по 5. Измерения на той же реальной серии (363 тыс. свечей, 0.05%/сторону, остальные параметры по умолчанию): число входов почти DOUBLE, частота изменилась с 35/год до 65/год (121 -> 227 сделок), при этом преимущество на сделку HOLDS на уровне +0.229% чистыми (ранее +0.231%), доля прибыльных сделок 58%, прокси коэффициента Шарпа на сделку улучшился с 0.74 до 1.13, а каждый календарный год оказался прибыльным (2023 +23.5%, 2024 +15.1%, 2025 +11.5%, 2026 +1.9% как суммы доходностей сделок). hold_bars также перемещается с 96 на 120, верхнюю границу ранее измеренного плато. Я отдельно TESTED более дешёвый способ увеличить частоту и отверг его по результатам измерений: снижение порога обвала 50% до 70% или 80% повышает частоту до 90-156/год, но снижает преимущество до +0.00% и -0.04% на сделку соответственно. Строгий тест поглощения сохраняет преимущество IS, поэтому частоту пришлось увеличивать за счёт окна, а не порога. WHAT Я STILL CANNOT FIX и объясняю, почему рекомендую проверяющему рассмотреть отказ от стратегии: (1) указанный выше пробел дополнительных данных Layer-3 означает, что песочница по-прежнему будет работать на синтетическом дисбалансе — удвоение частоты примерно удвоит ожидаемое число синтетических сделок, но метрики песочницы останутся бессмысленными для этого механизма; (2) реальный поток book_depth заканчивается на 2026-06-26, поэтому в периоде отложенной проверки за 15 дней, заканчивающемся сегодня, нет снимков, и стратегия обоснованно совершает там ноль сделок — это задача обратной загрузки данных, а не исправления кода; (3) указанный в гипотезе примитив ORDER_BOOK_DELTAS по-прежнему отсутствует (около 401 строк в каталоге), поэтому проверяется агрегированный по диапазонам прокси одиночной стены на уровне цены. Если исправить эти два пробела в данных, механизм теперь даёт 65 входов в год и +0.23% чистыми на сделку, что оправдывает полноценный бэктест; если нет, проверить его невозможно, что бы я ни отправил.
Стратегия микроструктуры книги заявок с ограниченной ёмкостью и почти нулевым коэффициентом Шарпа — оптимизация не стоит 2 часов. Несмотря на новый сигнал (дисбаланс пассивной глубины книги), avg_trade_return_pct 0.318% и profit_factor 1.26, результат с поправкой на риск незначим: sharpe_ratio 0.008, доверительный интервал бутстрепа CI [-0.69, 0.84] пересекает ноль, PSR 0.50, information_ratio -0.87. Ёмкость ограничена: всего capacity_usd $867 тыс. при impact_cost_pct 34%; модельное влияние на рынок уже съедает……Показать большеСвернуть
Стратегия микроструктуры книги заявок с ограниченной ёмкостью и почти нулевым коэффициентом Шарпа — оптимизация не стоит 2 часов. Несмотря на новый сигнал (дисбаланс пассивной глубины книги), avg_trade_return_pct 0.318% и profit_factor 1.26, результат с поправкой на риск незначим: sharpe_ratio 0.008, доверительный интервал бутстрепа CI [-0.69, 0.84] пересекает ноль, PSR 0.50, information_ratio -0.87. Ёмкость ограничена: всего capacity_usd $867 тыс. при impact_cost_pct 34%; модельное влияние на рынок уже съедает треть валовой прибыли, а преимущество реально лишь на игрушечном масштабе, что само по себе препятствует продвижению. Преимущество также снижается: годовая доходность монотонно падает 2023 +8.2% → 2024 +4.1% → 2025 +1.9% → 2026 -0.8%; скользящий коэффициент Шарпа отрицателен вплоть до 2026, а коэффициенты Шарпа в обычном и стрессовом режимах отрицательны (-0.01/-0.64), поэтому последний отложенный период -20% приходится на слабое или отрицательное окно. Поток book_depth охватывает лишь 2023-2026 (226 сделок), поэтому walk-forward-анализ с 3 окнами и отложенным периодом подогнал бы модель под силу ранней выборки. Потолок ёмкости структурно обусловлен поглощением стен BTC с интервалом 5 минут; никакое изменение параметров (wall_z/break_lookback/hold_bars) не поднимет коэффициент Шарпа около 0 выше порога дефлированного коэффициента Шарпа и не увеличит преимущество сверх игрушечного масштаба. Шаблон отказа: направленная стратегия одного бессрочного контракта с фильтром микроструктуры, где ограничителем служит no_edge/ёмкость, а преимущество снижается (L73-смежный).
Реализация
Стратегия микроструктуры long-short на BTCUSDT.BINANCE (USD-M бессрочный контракт), бары 5-MINUTE, на основе RESTING ORDER-BOOK DEPTH. Дополнительный поток book_depth (совокупная глубина пассивных заявок Binance в диапазонах +-1%..+-5%, агрегированная до одного дисбаланса в минуту: obi = (bid_notional - ask_notional)/(bid_notional + ask_notional)) нормализуется по собственному распределению за 1 дней, obi_z, и возвращается как непрерывный сигнал на каждом баре. Стена ликвидности — это экстремальный obi_z; вход……Показать большеСвернуть
Стратегия микроструктуры long-short на BTCUSDT.BINANCE (USD-M бессрочный контракт), бары 5-MINUTE, на основе RESTING ORDER-BOOK DEPTH. Дополнительный поток book_depth (совокупная глубина пассивных заявок Binance в диапазонах +-1%..+-5%, агрегированная до одного дисбаланса в минуту: obi = (bid_notional - ask_notional)/(bid_notional + ask_notional)) нормализуется по собственному распределению за 1 дней, obi_z, и возвращается как непрерывный сигнал на каждом баре. Стена ликвидности — это экстремальный obi_z; вход срабатывает, когда эта стена CONSUMED, а цена пробивает её: знаковое PEAK obi_z за последние 3 баров должно превысить wall_z, текущее obi_z должно упасть не более чем до половины этого пика, а цена закрытия должна пробить экстремум предыдущих break_lookback баров в направлении от поглощённой стены (поглощена стена покупателей — SHORT, продавцов — LONG). Позиция удерживается hold_bars (по умолчанию 120 баров = 10 часов) или закрывается по стопу при неблагоприятном движении на 3%. Если снимок пассивной глубины отсутствует или старше 15 минут, стратегия не рассчитывает сигнал и не торгует — запасного сигнала только по цене нет. Размер позиции определяется с приоритетом риска (1.5% капитала при стопе 3% = номинал позиции 0.5x капитала) и ограничен пределом max_notional_frac(0.20) x плечо(2.0) = 0.4x капитала; ограничение срабатывает, а плечо действительно используется. Три настраиваемых параметра: wall_z, break_lookback, hold_bars.
Результаты верификации
CLEAN RESTART 2026-09-04 — историю вердиктов и записи обучения этого запуска удалили, проверку начали заново. Прежний отказ был вызван конвейером, а не рынком: стенд Layer-2 неверно связывал помощники @staticmethod (исправлено), QA выносил окончательные вердикты о результативности по неоптимизированному пробному запуску (это убрали — теперь QA оценивает только корректность), а тайм-ауты песочницы возникали из-за нехватки слотов для бэктеста (исправлено). Гипотеза и код стратегии не изменились. Оцени код по его достоинствам; результативность будет определена позднее полным бэктестом и оптимизатором.
Обзор бэктеста
- Шарп
- 0,01
- Общая доходность
- 14,03%
- Максимальная просадка
- 6,35%
- Всего сделок
- 226
- Доля прибыльных
- 57,1%
- Профит-фактор
- 1,26
По-настоящему новое семейство сигналов (дисбаланс глубины книги лимитных заявок) — не клон OHLCV
avg_trade_return_pct 0.318% превышает порог комиссий, а profit_factor 1.26 — выше значимого уровня
Корректная реализация: если book_depth отсутствует, резервного сигнала только по цене нет; предусмотрены проверки на заглядывание вперёд и ограничение риска (max_drawdown 6.3%, без ликвидации)
Коэффициент Шарпа 0.008, доверительный интервал CI [-0.69, 0.84] пересекает ноль, PSR 0.50, information_ratio -0.87 — значимого преимущества с поправкой на риск нет
Не подходит по ёмкости: capacity_usd $867 тыс. при impact_cost_pct 34% — преимущество есть только в игрушечном масштабе, препятствие для продвижения
Преимущество монотонно снижается 2023 +8.2% → 2026 -0.8%; скользящий коэффициент Шарпа отрицателен вплоть до 2026; коэффициент Шарпа отрицателен в обычном и стрессовом режимах
Поток book_depth охватывает только 2023-2026 (226 сделок); последний отложенный период -20% приходится на окно снижения преимущества или отрицательной доходности
История итераций
Проверка не пройдена (Layer 4 — проверка QA): - NO GROSS EDGE — fee_edge неудача, заложенная в сам механизм, доказана по всей области AND в обоих направлениях; отклонить на Layer 4 (не оптимизировать). При симуляции точно закодированного правила на реальной серии book_depth (363,159 свечей, 0.05%/сторону) разработчик сообщает, что продолжение движения отрицательно в EVERY точках сетки (-0.046%–-0.207%/сделку), обратное направление/торговля против движения также ALSO отрицательны (-0.017%–-0.154%), а базовый……Показать большеСвернуть
Проверка не пройдена (Layer 4 — проверка QA): - NO GROSS EDGE — fee_edge неудача, заложенная в сам механизм, доказана по всей области AND в обоих направлениях; отклонить на Layer 4 (не оптимизировать). При симуляции точно закодированного правила на реальной серии book_depth (363,159 свечей, 0.05%/сторону) разработчик сообщает, что продолжение движения отрицательно в EVERY точках сетки (-0.046%–-0.207%/сделку), обратное направление/торговля против движения также ALSO отрицательны (-0.017%–-0.154%), а базовый пробой без фильтра стен даёт -0.111%/сделку — практически ровно комиссии за полный круг. Значит, пробои 5-минутных BTC почти не имеют валового преимущества, а фильтр стены по глубине стакана не добавляет NO информации ни для одной стороны сделки: смена направления не спасает стратегию, и ни один набор параметров не помогает. Песочница подтверждает провал (total_return -0.54%, коэффициент Шарпа -0.89, profit_factor 0.40, avg_trade_return_pct -0.069%, probabilistic_sharpe 0.06; 6 сделок с асимметрией -11.7 / эксцессом 192, то есть с одним катастрофическим убытком). Согласно L6 и тем же рассуждениям для стратегий продолжения движения по премии и ORB, эту стратегию нужно отклонить на Layer 4, а не расходовать бюджет бэктеста и оптимизации, заново обнаруживая отрицательные результаты во всей области параметров; именно это прямо рекомендует разработчик. - Указанный в гипотезе источник данных DOES NOT EXIST, поэтому стратегию в заявленном виде нельзя проверить бэктестом, а замещающий поток проверяет другой механизм. Гипотеза опирается на ORDER_BOOK_DELTAS (полную глубину по каждому уровню цены) для BTCUSDT.BINANCE, однако в каталоге всего около 401 строк дельты (плюс 1 устаревшая строка) — практически нет исторических данных о дельте стакана ни по одному инструменту. Стратегия, подписанная на дельты стакана, не получит данных и будет заброшена data_unavailable. Разработчик сообщил об этом и заменил поток агрегированным по диапазонам дополнительным потоком book_depth (накопленная глубина заявок в диапазонах +-1%..+-5% -> один дисбаланс в минуту). Это разумная и прозрачная замена, но она меняет «стену» с «крупной лимитной заявки на одном ценовом уровне» (основы гипотезы) на «экстремальную одностороннюю глубину заявок AGGREGATE» — существенно иной и более слабый сигнал. Поэтому базовую микроструктурную предпосылку гипотезы — поглощение стены на одном ценовом уровне — нельзя проверить на доступных данных; протестированный вместо неё прокси тоже не работает (результат 1). Кроме того, поток book_depth заканчивается 2026-06-26 (устарел примерно на 6 недель), поэтому в окне отложенной проверки длиной 15 дней нет снимков, и стратегия (без запасного потока, что правильно) совершит там ноль сделок — это структурно пустой период проверки, независимо от преимущества. - Код CORRECT, а прозрачность заслуживает высокой оценки: причина провала — экономика механизма и доступность данных, а не реализация. Проверено: _obi_at проходит указатели до последнего снимка глубины заявок на момент свечи или раньше и возвращает None, если снимок устарел (>15 мин.) или отсутствует (премия не подделывается); obi_z использует корректные инкрементальные среднее и дисперсию; уровни отсчёта пробоя берут максимум/минимум за PRIOR свечей до добавления текущей свечи (заглядывания вперёд нет); вход точно соответствует поглощению стены и пробою (prev_z за пределами wall_z, показатель затухает до <= collapse_frac от её объёма, цена проходит предыдущий экстремум, направление продолжения — от поглощённой стены); выходы и определение размера позиции с приоритетом риска и расходованием плеча корректны; subscribe_order_book_deltas правильно имеет значение false, поскольку сигнал поступает из дополнительного потока book_depth, а не подписки (переопределения обработчика нет). should_exit закрывает позицию на следующей свече при _side==0 после перезапуска (безопасно). Исправление кода не изменит отрицательный результат по преимуществу.
Проверка не пройдена (уровень 4 — проверка QA): - UNVALIDATABLE при текущих данных и контрольных условиях — структурно пустая отложенная выборка и песочница с 1 сделкой. (1) Поток book_depth, от которого зависит эта стратегия, заканчивается 2026-06-26, примерно за 6 недель до сегодняшнего 15-дневного окна отложенной выборки, поэтому в отложенной выборке AND последние окна walk-forward OOS не содержат снимков глубины книги заявок; при корректном запрете на резервный вариант стратегия совершает там ZERO сделок и не……Показать большеСвернуть
Проверка не пройдена (уровень 4 — проверка QA): - UNVALIDATABLE при текущих данных и контрольных условиях — структурно пустая отложенная выборка и песочница с 1 сделкой. (1) Поток book_depth, от которого зависит эта стратегия, заканчивается 2026-06-26, примерно за 6 недель до сегодняшнего 15-дневного окна отложенной выборки, поэтому в отложенной выборке AND последние окна walk-forward OOS не содержат снимков глубины книги заявок; при корректном запрете на резервный вариант стратегия совершает там ZERO сделок и не проходит проверку отложенной выборки на нулевое число сделок независимо от наличия преимущества. Разработчик прямо называет это «главным риском этой итерации» — исправить это со стороны разработчика нельзя, причина в устаревших данных. (2) Собственная песочница конвейера на уровне -3 дала лишь 1 сделку (total_trades 1, metrics_reliable=FALSE, profit_factor 0.0 / win_rate 1.0 как артефакт единственной выигрышной сделки, эксцесс 243), тогда как разработчик заявляет об офлайн-результате около 44/год — поэтому песочница не может подтвердить и тонкое преимущество, измеренное офлайн. Даже если принять диагноз по горизонту, преимущество невозможно измерить в песочнице, а в отложенной выборке стратегия структурно бездействует, поэтому её нельзя проверить независимо от того, как выглядит преимущество офлайн. Это тот же класс отказа из-за измеримости и доступности данных, что и у отклонённых стратегий на пробое канала и режима хвостовых событий в итерации -1, но проблема острее, поскольку исходный поток данных прекращается до окон проверки. - Слабое преимущество, горизонт, расходящийся с гипотезой, и примитив данных, которого по-прежнему нет. (а) Заявленное преимущество на плато составляет +0.15%/сделку, лишь немного выше порога жизнеспособности 0.15%; разработчик признаёт: «преимущество небольшое, а не сильное». (б) Горизонт удержания изменился с указанного в гипотезе «удержания около 1H» / «краткосрочного продолжения» на 96 баров = 8 часа (границы [48,120] = 4-10 ч), поскольку повторное измерение разработчика показывает, что преимущество проявляется на горизонте 4-10 ч, а не около 1 ч. Это обоснованный и раскрытый диагноз, а hold_bars — настраиваемый параметр, однако описание механизма существенно отошло от предпосылки гипотезы о коротком горизонте. (в) Буквально указанный в гипотезе примитив ORDER_BOOK_DELTAS по-прежнему отсутствует в каталоге (около 401 строк), поэтому здесь проверяется агрегированный по диапазонам book_depth — «экстремальная односторонняя совокупная глубина пассивных заявок», более слабый заменитель стены на одном ценовом уровне, описанной в гипотезе. - Код CORRECT, а механизм не изменился по сравнению с версией итерации -1, которую я проверил: причина отказа — охват данных и измеримость, а не реализация. Изменились только hold_bars (24->96), stop_pct (1%->3%) и risk_pct (1%->1.5%); границы обновили так, чтобы отрицательная область -4h была недостижима. Построение сигнала, поиск глубины пассивных заявок проходом указателей с ограничением устаревания в 15 минут (без поддельных данных), уровни пробоя без заглядывания вперёд (максимум/минимум предыдущего бара считывается до добавления текущего бара), запрет на резервный вариант и расчёт размера позиции с приоритетом риска и учётом кредитного плеча не менялись и реализованы корректно. Исправление кода не устранит блокировку, вызванную устареванием потока book_depth.
Проверка не пройдена (уровень 4 — проверка QA): - Конвейер отклонил UNVALIDATABLE из-за инфраструктурного пробела CONFIRMED и устаревших данных — это не дефект стратегии. Я проверил первоисточник заявления разработчика о причине: src/agents/pipeline_processor.py::_collect_supplementary_data возвращает ровно 11 дополнительных ключей (funding_rates, ликвидации, open_interest, top_account_ratio, top_position_ratio, global_account_ratio, taker_ratio, метрики, hl_funding_rates, deribit_dvol, deribit_funding) в строке……Показать большеСвернуть
Проверка не пройдена (уровень 4 — проверка QA): - Конвейер отклонил UNVALIDATABLE из-за инфраструктурного пробела CONFIRMED и устаревших данных — это не дефект стратегии. Я проверил первоисточник заявления разработчика о причине: src/agents/pipeline_processor.py::_collect_supplementary_data возвращает ровно 11 дополнительных ключей (funding_rates, ликвидации, open_interest, top_account_ratio, top_position_ratio, global_account_ratio, taker_ratio, метрики, hl_funding_rates, deribit_dvol, deribit_funding) в строке 4095-4107, и book_depth — NOT среди них. Значит, песочница уровня -3 никогда не передаёт реальный поток book_depth, от которого зависит эта стратегия; механизм работает на синтетическом/пустом дисбалансе, а песочница совершает 2 сделок (metrics_reliable=FALSE, PF 0.0 / win_rate 1.0 артефакт с 2 выигрышной сделкой) вместо примерно 65/год, которые разработчик измерил на реальном ряде. Кроме того, реальный поток book_depth заканчивается 2026-06-26, поэтому в 15-дневной отложенной выборке, заканчивающейся сегодня, нет снимков, и стратегия (корректно, без резервного варианта) совершает там ноль сделок — проверка на нулевое число сделок. Ни одну из этих проблем нельзя устранить со стороны разработчика: (а) требует одной строки кода от сопровождающего конвейера, (б) — дозагрузки данных инженером данных. Пока не решены обе, никакую стратегию book_depth нельзя проверить независимо от её кода, поэтому продолжать работу нельзя. - Код CORRECT, включая изменение итерации -3; причина отказа — инфраструктура, а не реализация. Новая привязка стены (знаковый PEAK по obi_z за предыдущие peak_bars=3 баров) не заглядывает вперёд: _peak_hi = max(_z_hist) / _peak_lo = min(_z_hist) считываются BEFORE добавления текущего z в _z_hist, поэтому стена измеряется только по закрытым предыдущим барам; логика сочетания условий входа не изменилась и корректна: максимум превышает wall_z, снижается до <= collapse_frac от максимума, цена пробивает предыдущий экстремум break_lookback, а направление продолжения уводит от поглощённой стены. Поиск глубины пассивных заявок проходом указателей с ограничением устаревания в 15 минут, уровни пробоя без заглядывания вперёд, запрет на резервный вариант и расчёт размера позиции с приоритетом риска и учётом кредитного плеча — всё это соответствует проверкам предыдущих итераций. Разработчик также обоснованно отверг более простой способ увеличить частоту сделок (ослабить проверку схлопывания 50%): измерения показывают, что так преимущество исчезает. - Остаточные расхождения гипотезы и данных не изменились с предыдущих итераций; для руководителя исследований. Буквально указанный в гипотезе примитив ORDER_BOOK_DELTAS по-прежнему отсутствует в каталоге (около 401 строк), поэтому здесь проверяется агрегированный по диапазонам book_depth — «экстремальная односторонняя совокупная глубина пассивных заявок», более слабый заменитель стены на одном ценовом уровне, описанной в гипотезе; горизонт удержания теперь составляет 10 ч (вывод итерации -2) против указанных в гипотезе примерно 1 ч. Оба расхождения раскрыты. Даже на реальном ряде преимущество на сделку (+0.23% чистыми) лишь немного выше порога 0.15%.
Stratmill — это инструмент для исследований и бумажной торговли, а не финансовая консультация или брокер. Результаты бэктестов и бумажной торговли являются гипотетическими. Торговля сопряжена с риском убытков.