План проекта — grid v.1 ЦУС

бэктест стратегий · детектор режимов онлайн · арсенал × шедулер · AI-мозг
869
тестов проходит
30/30
символов Finam подтверждено
387
конфигов в арсенале
14/14
walk-forward GREEN
81
API-эндпоинтов
$0.001–0.05
примерный расход в день
Часть 1 · Исследование стратегий и каталог (исходный план)

Починка fitness-функции v3

DONE
Fitness теперь учитывает количество сделок: штраф за <10 сделок, потолок PF≤5, бонус log10(N). Убрал перекос в сторону «однократных победителей» (PF=999, DD=0).
тесты: 432 / конфиг: data/instrument_catalog.json

Архетипы стратегий v5

DONE
Гипотеза подтвердилась: range-grid + ADX-фильтр выигрывает trend-rotation на большинстве инструментов. Триггер RZ — главный range-сигнал.
прогон: 887с

Авторские индикаторы v6+v7

DONE
Прогнали 25 авторских/составных индикаторов с TradingView (LazyBear, Ehlers, EmreKb, …). Ноль побед против RZ. Правило strict-improvement дважды спасло SILV.
тесты: 472 + 25 / вывод: сложность ≠ обобщаемость

Полный перебор v8 v8

DONE
58 триггеров × 4 режима сетки × 3 ADX-фильтра. Главное открытие: режим сетки влияет так же сильно, как триггер.
4-окна WF: 14/14 GREEN, DD=0% на 13/14

Матрица стратегий v2 v8.5

DONE
Финальный каталог с 14 стратегиями. Архитектурно полные: 6 режимов сетки × 58 триггеров.
файлы: catalog.json + strategy_matrix.json
Часть 2 · Закалка кодовой базы (после критики)

Упаковка + секреты P0.1-2

DONE
«pip install -e .» работает на чистой машине. Все секреты fail-fast — никаких dev-фолбэков.
тесты: 566 → 588

Авторизация на все роуты P0.3-4

DONE
require_auth теперь на 5 роутерах (grid/lines/backtest/replay/metrics). Webhook остался на URL-секрете. Интеграционные тесты проверяют 401.

Целостность БД P1

DONE
UNIQUE на robot_id, baseline-миграция Alembic, умный bootstrap (alembic в prod, create_all в тестах).

FinamClient: реальные ордера P0.5

DONE
place_order / cancel_order / get_order через настоящий Trade API. Read-only-предохранитель срабатывает, если ключ только на чтение.
POST /v1/accounts/{id}/orders DELETE .../orders/{id}
Часть 3 · Центр управления стратегиями (ЦУС)

Центр стратегий + арсенал #0

DONE
Просмотр зафиксированного каталога v8.5 (manage.html) + 387 конфигов в арсенале (arsenal.json).
GET /strategies GET /cus/arsenal GET /ai/cost
тесты: +38 (арсенал + роутер + потолок стоимости)

Символы + перекладка контрактов #1

DONE
SymbolResolver: голый тикер (MIX) → актуальный символ Finam (MXM6@RTSX). 30/30 подтверждены через реальный API.
тесты: 13 (резолвер) + 14 (логика перекладки)

Движок режимов #2

DONE
3-уровневый шедулер: каждые 60с → индикаторы; на смене режима → AI-триаж; раз в час → глубокое ранжирование.
GET /cus/dashboard GET /cus/regime/{ticker} POST /cus/refresh/{ticker}?tier=N
тесты: 24 (режимы + шедулер) / файл: core/market/scheduler.py

UI ЦУС + календарь + память #3

DONE
Визуальный пульт управления: таблица режимов, лента AI, счётчик расходов. Календарь (ForexFactory + ЦБ РФ). Пользовательская обратная связь + обучение по auto_pnl.
GET /cus/calendar POST .../feedback GET /cus/feedback/summary
тесты: +35 (страница + календарь + расходы + память)

Интеграция AI-мозга #4

DONE
Tier-1 от событий (календарь → упреждающий AI), контекст обратной связи в tier-2 промпте, пайплайн Apply, live-push через WebSocket.
WS /ws/cus POST .../apply POST .../outcome
тесты: +32 (события + feedback + apply + ws)
Часть 4 · Что ещё осталось

Авто-PnL хук в движке #5.1

DONE
Когда закрывается сетка с _applied_recommendation в настройках — автоматически пишется RecommendationOutcome(source='auto_pnl'). Петля обратной связи замкнута.
тесты: +7 (хук, идемпотентность, no-op-сценарии, интеграция)

Кнопка «Применить» в UI #5.2

DONE
Кнопка «Применить» добавлена к каждой топ-стратегии в панели рекомендаций. Модалка с выбором счёта и переопределением объёма.
тесты: +1 (страница проверяет наличие модалки и JS-хуков)

Кросс-тикер бюллетень #5.3

DONE
BriefingService: один AI-вызов по всему юниверсу → тема + actionable + avoid + рекомендация. Хранится как MarketRecommendation(ticker='_GLOBAL_', tier=3).
тесты: +9 (агрегация, ошибка AI, broadcast, None-coercion, API)

Telegram-уведомления #5.4

DONE
MarketTelegramAlerter — мост из событий шедулера в Telegram через MultiBroadcaster. WS + Telegram обновляются одновременно. No-op при пустом токене; equity_guard всегда долетает.
тесты: +15 (хаб, изоляция ошибок, форматтеры по событиям, no-op-режимы)

LiveFinamBroker — реальный исполнитель #5.6 ★

DONE
LiveFinamBroker реализует ABC брокера через FinamClient. Идемпотентность через client_order_id = id строки в БД. Опрос ордеров каждые 2с, ошибки изолированы per-order.
тесты: +15 (идемпотентность place/cancel, частичные fills, изоляция ошибок, маппинг статусов Finam)

Live paper-trade — этап A #5.5 ★

DONE
EquityGuardLoop подключён в main.py. Скрипт-пресет этапа A гарантирует консервативную конфигурацию: MIX/RTS/Eu, 5% DD-cap, опрос equity 30с, реальные ордера Finam. Готово к 4 неделям наблюдения.
тесты: +12 (poll/arm/fire, изоляция, мульти-счёт, жизненный цикл, observation-only)
Архитектурный стек
СлойФайлыТестовСтатус
Индикаторы (58 триггеров)core/indicators/, core/algo/472+
Движок бэктестаbacktest/runner, backtest/optimize~80
Резолвер символовcore/market/symbol_resolver, data/symbol_map.json13
Рыночные режимы + шедулерcore/market/{regime,scheduler,recommender,bar_source}31
AI-роутер (4 провайдера)core/ai/{router,cost_tracker,providers/}19
Календарьcore/calendar/{providers,fetcher}21
Apply / память (feedback loop)api/cus.py — apply/outcome/feedback19
WebSocket /ws/cusapi/ws.py — cus_manager7
Реальный исполнитель (LiveFinamBroker)broker/live.py + risk/equity_guard_loop.py27✅ #5.5+#5.6
Авторизация + тестыapi/auth.py + tests/test_auth_integration.py30
БД + Alembicstorage/{db,models}, migrations/~10