Runtime parity
runtime-parity сравнивает live/runtime записи входов с детерминированным
backtest replay за тот же недавний период.
Запускайте его после promotion результатов бэктеста в runtime config или после изменений в runtime-логике стратегии. Команда отвечает на узкий вопрос:
Сгенерировали ли shared runtime и backtest replay сопоставимые entry orders для выбранных стратегий и символов?
Запуск
npx @tradejs/cli runtime-parity --user root --connector bybit --days 3
Полезные варианты:
npx @tradejs/cli runtime-parity --user root --connector bybit --days 3 --details
npx @tradejs/cli runtime-parity --user root --connector bybit --strategy TrendLine --tickers BTC,ETH
npx @tradejs/cli runtime-parity --user root --connector bybit --startTime 1714000000000 --endTime 1714260000000
npx @tradejs/cli runtime-parity --user root --connector bybit --days 3 --notify
Что replay’ится
Команда строит replay targets из:
- сохраненных runtime trade records
- runtime signal/evaluation universe
- явных
--tickers - последних strategy results, если они доступны
Для каждого target резолвится effective runtime config:
- user strategy config из Redis
- per-symbol
resultspatch, если он есть - runtime поля replay, например
ENV
По умолчанию replay запускается с ENV=BACKTEST, поэтому проверяет parity
core/runtime исполнения без вызова live AI/ML gates.
Используйте --runtimeGates только если намеренно хотите запускать
сконфигурированные runtime gates во время parity replay. Это может вызвать
внешних AI providers и ML inference.
Правила matching
Runtime и backtest entries сопоставляются по:
- strategy
- symbol
- direction
- timestamp в пределах заданного tolerance
Дефолтный tolerance по timestamp — одна 15m свеча. Изменить его можно так:
npx @tradejs/cli runtime-parity --toleranceBars 2
Entry price выводится как drift для диагностики, но не является основным ключом matching.
Output
Console и Telegram report включают:
- окно replay, connector, replay env, статус runtime gates и tolerance
- количество targets, compared targets, replay errors и sources targets
- runtime entries, deduped runtime entries, duplicates, backtest entries
- matched, runtime-only и backtest-only counts
- average/max entry price delta и timestamp drift для matched entries
- per-strategy breakdown по targets и entries
- классификации backtest-only, если runtime signals/evaluations объясняют, почему entry не стал runtime trade
- warnings, если AI/ML gates сконфигурированы, но
--runtimeGatesне включен
При --notify та же сводка отправляется в Telegram через сохраненные настройки
текущего пользователя.
Как читать результаты
matched должен быть близок к runtime entries, если в окне достаточно market
data и runtime config совпадает с тем, что было live.
runtimeOnly означает, что runtime trade record есть, но детерминированный
replay не создал сопоставимый entry.
backtestOnly означает, что replay создал entry, которого нет в runtime trade
records. Report по возможности классифицирует такие случаи:
gated_out— runtime signal/evaluation был, но AI/ML или policy заблокировали сделкуorder_failed— runtime пытался поставить ордер, но placement failedcore_skipped— runtime выполнился, но core вернул skipnot_evaluated— сопоставимой runtime evaluation не найденоtrue_mismatch— известного runtime-объяснения нет
Если у стратегии runtime=0 и backtest=0, выбранные targets не дали
сопоставимых entries в этом окне. Это не означает, что AI/ML обязан одобрять
live trade каждый день.
Флаги
--userвыбирает Redis user config и runtime journal.--connectorвыбирает connector provider/name для replay.--daysзадает недавнее окно replay.--startTimeи--endTimeзадают явное окно replay.--strategyограничивает replay одной стратегией.--tickersreplay’ит comma-separated symbols для всех configured strategies.--cacheOnlyпропускает обновление market history перед replay.--toleranceBarsменяет timestamp matching tolerance.--runtimeGatesвключает configured runtime AI/ML gates во время replay.--detailsпечатает детали unmatched entries в stdout.--notifyотправляет parity summary в Telegram.