07.4.3.19.3 — Strategy Noise Filter & Signal Intent Layer

This commit is contained in:
2026-05-10 12:53:43 +03:00
parent e72e2e51db
commit 1692cb4d81
4 changed files with 288 additions and 48 deletions

View File

@@ -0,0 +1,124 @@
# 07.4.3.19.3 — Strategy Noise Filter & Signal Intent Layer
## Статус
Этап завершён.
## Цель этапа
Цель этапа — снизить шум от краткосрочных стратегических сигналов и добавить смысловой слой signal intent, чтобы журнал фиксировал не каждый сырой BUY / SELL / HOLD, а только полезные runtime-переходы.
До этого этапа журнал уже был очищен от UI refresh spam, но оставались частые записи вида:
- BUY завершился без серии
- SELL завершился без серии
- 21 HOLD подряд до смены на SELL
Такие записи были полезны на этапе разработки, но плохо подходили для runtime-аудита.
## Что изменено
### 1. Убрано журналирование одиночных BUY / SELL
Одиночные BUY / SELL, которые не дошли до серии и не стали READY-сигналом, больше не пишутся в журнал как полезные события.
Это снижает шум от микросигналов SCALP-стратегии, когда стратегия на один цикл выдаёт BUY или SELL, а затем возвращается в HOLD.
### 2. HOLD-серии теперь логируются по длительности
Сводка HOLD теперь формируется по времени, а не по количеству повторов.
Новый формат сообщения:
- 🟡 HOLD 5м 36с завершён сигналом SELL
Такой формат понятнее, потому что не зависит напрямую от внутреннего интервала цикла.
### 3. Добавлен signal intent
В payload сигнальных событий добавлен смысловой intent:
- ENTRY_CANDIDATE
- REVERSAL_CANDIDATE
- REINFORCE_POSITION
- HOLD_MARKET
- NOISE
Intent рассчитывается с учётом текущей позиции.
### 4. Добавлена position-aware интерпретация сигналов
Новая логика интерпретации:
- LONG + BUY → REINFORCE_POSITION
- SHORT + SELL → REINFORCE_POSITION
- LONG + SELL → REVERSAL_CANDIDATE
- SHORT + BUY → REVERSAL_CANDIDATE
- NONE + BUY / SELL → ENTRY_CANDIDATE
- HOLD → HOLD_MARKET
Это подготавливает систему к следующему уровню фильтрации стратегий и execution-логики.
### 5. Добавлено отдельное событие готового сигнала
Когда сигнал доходит до READY, в журнал пишется отдельное событие:
- auto_signal_ready
В payload добавляются:
- signal
- signal_intent
- confidence
- repeat_count
- position_side
- decision_status
- strategy
- symbol
## Что больше не пишется в журнал
Из журнала убраны как регулярные runtime-события:
- одиночный BUY без серии
- одиночный SELL без серии
- BUY завершился без серии
- SELL завершился без серии
- HOLD → HOLD
Эти события могут быть возвращены позже как debug-level telemetry, но не должны попадать в основной journal-аудит.
## Что остаётся в журнале
После этапа журнал должен содержать только полезные signal/runtime события:
- HOLD duration summary
- READY signal
- execution events
- blocked flip
- notification errors
- market/runtime events
- journal/system critical events
## Основной изменённый файл
- app/src/trading/auto/service.py
## Проверка
После правок нужно выполнить:
python -m compileall src
python -m src.main
После запуска проверить журнал:
1. В журнале больше нет частых записей «BUY завершился без серии» и «SELL завершился без серии».
2. HOLD-серии отображаются по времени.
3. READY-сигналы содержат signal_intent в payload.
4. Execution events продолжают приходить как раньше.
5. Flip protection из этапа 07.4.3.19.1 не сломан.
## Итог
Этап подготовил основу для дальнейшей стандартизации журнала и будущего Signal Intent Layer. Система стала меньше реагировать на шумовые микросигналы и начала фиксировать не только сырой сигнал, но и его смысл относительно текущей позиции.