Перейти к содержанию

Signal Cockpit

Static v2 admin

Trading cockpit для triage сигналов

Signal Cockpit показывает не только то, что ушло в Telegram, но и всё, что detector сохранил в Postgres/Kafka: suppressed, unknown, delivered, причины фильтрации, качество и контекст по инструменту.

Static v2без React/Vite и build pipeline
Storage-firstнизкое качество не теряется
Delivery-awareвидны причины Telegram-фильтра
Calibrationtype x quality x feedback

Signal Cockpit — статическая админка для triage сигналов, delivery policy и калибровки порогов. HTML/CSS/JS лежат в src/tinvest_signal_engine/static, а данные берутся из /admin/api/*.

Админка не заменяет detector. Detector продолжает генерировать и сохранять все enriched-сигналы в Postgres/Kafka, а Cockpit показывает, что было доставлено в Telegram, что было подавлено и почему.

В таблицах и карточке сигнала Cockpit использует payload.interpretation: короткую human-readable строку и набор фактов. Поэтому price_jump показывает направление и процент изменения цены, volume_spike — оценочный оборот в деньгах, а orderbook-сигналы — bid/ask, spread и сторону перекоса без ручного чтения JSON.

Запуск

  1. Задайте ADMIN_API_TOKEN в .env.
  2. Запустите API:
docker compose up -d api
  1. Откройте http://localhost:38000/admin.
  2. Введите admin token. Токен хранится только в localStorage браузера и отправляется как X-Admin-Token.

Полезные runtime-настройки:

Переменная Назначение
SIGNAL_DELIVERY_ENABLED Включает/выключает внешний delivery gate.
SIGNAL_DELIVERY_MIN_QUALITY Базовый floor качества для delivery policy.
SIGNAL_DELIVERY_MAX_PER_HOUR Глобальный cap Telegram/webhook-сигналов в час.
SIGNAL_DELIVERY_INSTRUMENT_COOLDOWN_SECONDS Cooldown между delivered-сигналами по одному инструменту.
SIGNAL_DELIVERY_TYPE_RULES_JSON Optional per-type overrides in JSON: admin_only, channel=digest, or explicit realtime promotion.

Delivery V2

Текущая policy пишет все сигналы в storage, но наружу пропускает только сильные или подтверждённые события:

Тип Delivery logic
microstructure_combo_long/short score >= 6.
volume_spike, trade_rate_spike quality >= 80 и abs_z >= 6, либо extreme abs_z >= 10.
price_jump quality >= 90 и abs_z >= 8, либо рядом с recent trade activity.
spread_widening, orderbook_imbalance Только рядом с volume/trade/combo activity.
trading_status_changed, market_access_changed Всегда candidate, но с cooldown.

Rate-limit и instrument cooldown проверяются не только в памяти процесса, но и по Postgres history. Поэтому рестарт detector не должен заново открыть окно для спама.

Разделы

Раздел Route Для чего
Triage #/triage Очередь внимания: важные suppressed/delivered сигналы, funnel, причины подавления, hot tickers.
Signals #/signals Плотная таблица всех сигналов с фильтрами по delivery, type, ticker, quality, feedback.
Delivery #/delivery Сводка delivered/suppressed/unknown, причины подавления и per-type delivery rate.
Calibration #/calibration Матрица signal_type x quality tier x feedback/delivery для настройки порогов.
Instruments #/instruments Полный configured universe из conf/instruments.yaml плюс активность по каждому тикеру.
Accuracy #/accuracy JSON-метрики accuracy, если подготовлен SIGNAL_ACCURACY_JSON_PATH.
Settings #/settings Read-only runtime config без секретов.

Quick feedback controls are available directly in Triage and Signals: Useful, Noise, and Unsure save /admin/api/feedback without opening the signal drawer. The Signals feedback filter supports unlabeled for rows that still need review.

Примеры экранов

Signal Cockpit triage dashboard
Triage. Delivery funnel, очередь внимания, причины suppressed и hot tickers на первом экране.
Signal Cockpit signals table
Signals. Плотная таблица всех сохранённых сигналов с фильтрами по status, type, quality, ticker и feedback.
Signal Cockpit signal detail drawer
Signal detail. Summary, delivery decision, quality factors, payload и контекст для ручной разметки.
Signal Cockpit delivery analytics
Delivery. Быстрая проверка rate-limit, cooldown, недостаточного качества и отсутствия подтверждающего контекста.
Signal Cockpit calibration matrix
Calibration. Матрица помогает увидеть, какие типы шумят, какие недопущены фильтром и где нужна feedback-разметка.
Signal Cockpit instruments universe
Instruments. Полный universe из `conf/instruments.yaml`; тикеры с нулём сигналов тоже остаются видимыми.

Старые записи без delivery metadata отображаются как delivery_status=unknown, поэтому исторические данные не ломают таблицы и графики.

Актуальные screenshots можно переснять без изменения frontend build pipeline:

ADMIN_UI_BASE=http://127.0.0.1:38000 \
ADMIN_UI_ROUTES=triage,signals,delivery,calibration,instruments \
python scripts/snapshot_admin_ui.py

По умолчанию скрипт снимает desktop и mobile варианты всех текущих разделов Cockpit: triage, signals, delivery, calibration, instruments, accuracy, settings.

API

Основные endpoints:

Endpoint Назначение
/admin/api/signals Таблица сигналов с фильтрами delivery_status, quality_min, quality_max, feedback, severity, instrument_id, signal_type.
/admin/api/signal/{signal_id} Детальная карточка сигнала.
/admin/api/delivery/overview Delivery totals, per-type/per-ticker rates.
/admin/api/delivery/reasons Причины suppressed/unknown/delivered.
/admin/api/calibration Матрица калибровки по type/quality/feedback.
/admin/api/instruments Configured universe + activity stats.
/admin/api/settings Read-only runtime settings для Cockpit.