Research to live
Backtester + Explorer
Полностью event-driven replay rxbin через тот же SIMBA loop что в live: все типы ордеров, модель задержек и очереди, расхождение с live менее 10%
- Рынок
- Research to live
- Кому полезно
- кванты и трейдеры, которым важен backtest-to-live parity и удобный анализ
- Статус
- Построено и эксплуатируется в нашей торговле
Обзор
Backtester воспроизводит сырые rxbin-записи через тот же SIMBA event loop, книги и Strategy API, что работают в live - никакого отдельного «тестового» кода. Разница с реальным live-торгом в собственных прогонах составляет менее 10% по PnL. Симулятор полностью event-driven: команды приходят из стратегии, проходят через pending queue с настраиваемыми задержками и доставляются по биржевому таймлайну. Поддерживаются все типы ордеров MOEX TWIME - Day, BOC, IOC, FOK - с правильной FIFO-очередью, WouldCross-логикой и look-ahead bias guard. Вокруг него рабочее исследовательское место: Streamlit Explorer, WFO, grid search, sensitivity, rejects и разбор неполных прогонов.
Что это дает
расхождение BT vs live по PnL менее 10% на собственных стратегиях
тот же Rust-код стратегии - в бэктесте и в live без изменений
полная модель задержек: order_latency, cancel_latency, response_delay, jitter, network offset
WFO и sensitivity помогают видеть переобучение до live-запуска
Скриншоты
Скриншоты из работающей системы

WFO-отчет
Анализ прогонов по IS/OOS окнам, ранжирование по PnL, drilldown по сессиям и инструментам для понимания устойчивости стратегии

Статистика прогонов
Ранжирование прогонов по Sharpe, PnL и fill rate: выбор параметров без переобучения

Вывод в терминале
Бэктест запускается одной командой cargo run, вывод содержит summary по сессии

Поиск edge
Sensitivity heatmaps помогают видеть переобучение до live-запуска

Арбитражный бэктест
Полноценный бэктест мультиинструментальной стратегии через тот же SIMBA loop
Возможности
Что внутри
Объем под ваш проект фиксируется в договоре: что переиспользуем из готового, что дорабатываем, интеграция, документация и поддержка
Полностью event-driven, без look-ahead
ReplayRxPort доставляет пакеты через тот же hot loop. Команды из on_boundary поступают в pending queue с arrival_ts = now_ns + order_latency_ns - ордер не может исполниться по трейду, который уже произошел до его прихода на биржу.
Все типы ордеров MOEX TWIME
Day (лимит с агрессивной фазой при кроссе + пассивный остаток), BOC (пассивный, WouldCross → reject), IOC (агрессивный по уровням + cancel остатка), FOK (полный fill или reject). Cancel и Replace с WouldCross-проверкой и потерей приоритета при Replace.
FIFO-очередь и модель задержек
queue_ahead = объем уровня на момент arrival. Passive fills - только через реальные TradeInfo из SIMBA, не через book-cross. Параметры: order_latency_ns, cancel_latency_ns, response_delay_ns, order_jitter_ns, cancel_jitter_ns, network_offset_ns, network_jitter_ns (p99 MD tail), TPS-лимиты per channel.
Gating: сессия, инструмент, расписание
Ордера вне торговой сессии и инструментального статуса реджектятся с правильными кодами. Auction TIF gating: только Day в аукционе. Настраиваемое trading_schedule для отсечки нерабочих периодов.
Simulated TWIME: комиссии и PnL
FillsTracker пишет fills.csv с полями: realized PnL, позиция, avg_entry, mid на момент fill, is_maker, fee_rub (биржа + клиринг + брокер), best_bid/ask. Итоговый analysis.json для Explorer.
Streamlit Explorer и WFO
UI для analysis.json: summary, ranking прогонов, IS/OOS WFO tabs, param sensitivity heatmaps, rejects по кодам, sessions, screening и recent runs.