Signal Cockpit¶
Static v2 admin
Trading cockpit для triage сигналов
Signal Cockpit показывает не только то, что ушло в Telegram, но и всё, что detector сохранил в Postgres/Kafka: suppressed, unknown, delivered, причины фильтрации, качество и контекст по инструменту.
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.
Запуск¶
- Задайте
ADMIN_API_TOKENв.env. - Запустите API:
- Откройте
http://localhost:38000/admin. - Введите 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.
Примеры экранов¶
Старые записи без 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. |