Под капотом — две дорожки: research (как модель обучали и тестировали на истории) и live (как ровно та же модель работает на бирже сейчас). Принципиально важно: используется один и тот же файл модели, поэтому решения на бирже совпадают с симуляцией с точностью до копейки — никакой подмены не происходит. Дальше — пошагово, что происходит внутри каждой дорожки.
{sid}_position (signed) + 8 raw indicators (RSI/ADX/NATR/CHOP/MACD/CCI/BB) + 6 hourly ctx + 6 daily ctx + 2 macro (dividend + CBR) + ticker_id. Target: forward 20-bar log return ансамбля (clip ±10%)pred_mean > +15 bps (long) ИЛИ pred_mean < −6 bps (short). До v1.2 было 18L/12S: порог лонга опущен ради недобора bull-фаз, шорта — потому что под честной семантикой оптимум сместился к частым мелким шортам{BUY, SELL_TO_CLOSE, SELL_SHORT, BUY_TO_COVER}. Каждый бар: топ-10 по |meta_pos| → slots; слабейший вытесняется при появлении сильнее (forced exit); при |target_pos| ≤ EPS_ACTIVE=0.10 — natural exit. v1.2: sign-flip exit — разворот знака прогноза закрывает позицию и открывает новую (раньше сим переворачивал её бесплатно, из-за чего доходность была завышена). Шорты интрадей — EOD-cover на баре 21:00, ночёвок и borrow нет. Комиссия 5 bps/sideТот же inference pipeline, но на свежих часовых барах с T-Invest. Запускается cron'ом каждый час (close of bar + 5 мин buffer) в торговые часы MOEX. С 13.05.2026 — Phase 3 sandbox; с 25.06.2026 — PROD live (LIVE_TRADING=1, реальные деньги на боевом счёте T-Invest).
pred_mean > +15 bps ИЛИ pred_mean < −6 bps. Уже открытые позиции не трогает. Params: HURDLE_BPS_ENTRY=15, HURDLE_BPS_ENTRY_SHORT=6. gate15: на барах с 15:00 МСК новые шорты не открываются — короткому сигналу не хватает времени до вечернего закрытияw = clip((|pred_mean| / σ₁₂₀) / 0.20, 0.4, 1), где σ₁₂₀ — std часовых лог-ретёрнов за 120 баров (причинная, без текущего). Сигнал уверенно перекрывает шум бумаги → слот целиком; слабый на фоне шума → 40%. morncap: шорт-входу на утреннем баре вес × 1.5 (кэп 1.0) — там 2/3 шорт-альфы. Signed qty_lots в sizer_state, EPS_ACTIVE=0.10 для natural exit, sign-flip exit при развороте знака{BUY, SELL_TO_CLOSE, SELL_SHORT, BUY_TO_COVER} → broker_side {BUY, SELL} для T-Invest API. broker.post_market_order на боевом счёте T-Invest (ProductionBroker, LIVE_TRADING=1)halted.flag, снимается вручную) единственным гейтом — 3+ исключения в час, то есть при технической поломке; при разрыве котировок > 2 ч включается PAUSE: открытые позиции ведутся, новые не открываются. Уведомления по entry/skip/exit/replace + утренний и вечерний отчёт. observation_sanity.py — 6 проверок корректности (parity, state, sign distr, hurdle hit, turnover, action coverage)