Серия убыточных дней — следствие одной архитектурной ошибки. Компас режима запаздывал на ~48ч. Исправлено и выкачено в live.
Мозг (LLM-деск) работает. Он развернулся к лонгам раньше компаса при ещё-bear макро — expectancy +$1.31/сделку. Серия минусов — не провал алго, а задержка компаса. Починено проводкой, не переписыванием.
BTC пробой вверх 01.07 12:00, компас держал −1 (bear) до 03.07 12:00. EMA200 на $3–5k выше цены — +1 не дал НИ РАЗУ за ран. Следствие: 13 шортов против растущего рынка, L3-надзор резал верные лонги как «против тренда». Режимный компас контролирует всё — и сторону, и L3-вето.
| Когорта | Сделок | WR | P&L | R:R |
|---|---|---|---|---|
| Шорты (компас = даунтренд, рынок рос) | 13 | 23% | −$25.02 | — |
| Лонги после флипа (компас догнал) | ~10 | 60% | +$13.07 | 2.15 |
| Итого по периоду (realized R:R) | 28 | — | −$11.95 | 1.17 (b/e=46%) |
L3 срезал 5 верных лонгов меткой «long против тренда»: ETH #16 на 15% пути к цели, LINK #17 на 4%. Realized R:R упал 1.5 → 1.17 — ниже break-even.
■ Убыток · ■ Прибыль · ■ Флип режима 01.07 (компас +48ч позже). До флипа: WR 23%. После: WR 60%.
Четыре независимых аналитика + adversarial-верификация подтвердили одно и то же:
_layer_context (monster_executor.py:86-105) с risk_scale=1.0 хардкодом и лагающим btc_trend из брифа. regime.quant_trend / classify_regime написаны и покрыты тестами, но не подключены.play, executor/hunter/journal читают setup → маховик обучения слеп (метка «?·даунтренд»). Штраф _FAILED_PLAYBOOK не матчится никогда. Плюс несовпадение fallback-ключей producer('?') / consumer('').trend_dir vs quant_trend/classify_regime. Acceptance: quant флипнул ≤ 01.07 16:00, разница лага ≥ 40ч, whipsaw-счёт на чоппи-истории приемлем.quant_trend/classify_regime в _layer_context + risk_scale деградация вместо хардкода 1.0. EMA-стек остаётся контекстом, не вето. Реплей: ни один short не проходит L2 после флипа 01.07; лонги 02–03.07 не режутся.play → setup. Унификация fallback-ключей producer('?')/consumer(''). n≥30-карантин setup-атрибуции от скоринга. Разблокирует маховик обучения.Компас = наклон EMA10 (окно 6 баров 4h) + асимметричный гистерезис: exit 1% / enter 2%. На 1665 реальных барах Bybit: перестаёт форсить шорты на 168 часов раньше EMA-стека на развороте 01.07. Дребезг — 1.9× от старого (гейт ≤2× пройден). Сырой quant_trend без сглаживания дребезжал бы 8–13× — отклонён.
503450a компас в live-контур · 50255c8 grace 4ч + защита винеров · 41fa938 проброс play→setup + карантин n≥30 · c6dab10 инвалидация макро по key_levels/ΔF&G · a525bf8 конфиг · 2f49f0c + af7d39d фиксы ревью.
Тесты: 226 → 292 passed, 0 failed.
267 тестов пропустили то, что нашло ревью:
Критический sign-bug трейлинг-стопа шорт-винера — стоп считался над входом вместо под ценой, защита прибыли шорта схлопывалась в безубыток. Исправлено.
Сетевой вызов до 36с внутри 2-минутного lock guard'а — вынесен в кэш btc_close_cache.json.
Бриф показывает «BTC режим (по факту цены): ФЛЭТ» — старый компас показывал бы «даунтренд».
Деск решил: SOL long conv=4 при осторожном риске. Память деска атрибутирует «флэт·long win 55% +$6», адвокат дьявола цитирует провальный трек шортов.
Risk_watch тикает штатно. 292 теста зелёные в живом дереве.
Прогон тестов из живого дерева отправил 5 синтетических тест-событий в живую ленту → ТГ-бот запушил их Тимуру в 11:43 UTC. Сообщения про ETH protect/cut с ценами 99–110 и «DOGE +6.02%» — ФЕЙК, игнорировать.
Лента вычищена (бэкап events.jsonl.bak-20260705-testpollution). Корень закрыт коммитом 9853eb3 — тесты теперь изолированы от живого out/.
Четыре независимых аналитика + adversarial-верификация подтвердили одно и то же:
_layer_context (monster_executor.py:86-105) с risk_scale=1.0 хардкодом и лагающим btc_trend из брифа. regime.quant_trend / classify_regime написаны и покрыты тестами, но не подключены.play, executor/hunter/journal читают setup → маховик обучения слеп (метка «?·даунтренд»). Штраф _FAILED_PLAYBOOK не матчится никогда. Плюс несовпадение fallback-ключей producer('?') / consumer('').Три темы отложены осознанно — они зависят от устойчивой работы компаса в форварде, а не от диагностического снапшота.
Компас в live, но выборка мала. Смотрим конкретные сигналы, не абстрактный «прогресс».
Выявлены синтезом 4 opus-аналитиков. Требуют явной митигации в PR-ах.
_layer_context в executor — это money-path. PR должен касаться именно его, не только тестового окружения.Выборка — 28 сделок за один период (28.06–05.07). Статистически недостаточно для выводов об «устойчивом крае» — только для диагностики причины серии.
Флип компаса наблюдался один раз — на одном рыночном переходе (bear→bull). Гипотеза о лаге ~48ч требует проверки на минимум 3–5 флипах разного типа. Quant_trend не тестировался на реальном рыночном шуме за пределами 2-недельного окна.
Сайзинг (0.89% риска/сделку) искусственно занижает как убытки, так и прибыль — абсолютные цифры P&L не репрезентируют производительность при целевом сайзинге.