Проверка реальных решений через воспроизведение
Воспроизведение рассчитывает именованное развёртывание на исторических закрытых свечах. Оно помогает повторить решения точных версий стратегий, конфигураций, таймфреймов, счетов и наборов инструментов, заданных для реальной работы.
Это диагностический инструмент: он не размещает ордера и не меняет настройки.
Воспроизведение развёртывания
Запускайте команду из проекта с tradejs.config.ts:
npx @tradejs/cli replay \
--user root \
--deployment production \
--days 7 \
--cacheOnly
Полезные параметры:
--startTimeи--endTimeзадают точный период в формате Unix timestamp;--tickers,--excludeи--tickersLimitвременно меняют инструменты;--cacheOnlyзапрещает обновлять историю;--showTickersListпечатает итоговый список без запуска;--chartсохраняет компактные графики для страницы стратегий.
Без временного переопределения применяются инструменты развёртывания и
ограничения selection.tickers отдельных стратегий.
Отчёт по портфелю на сохранённых данных
Команда portfolio-backtest рассчитывает всё настроенное развёртывание как один
исторический портфель. По умолчанию она использует декларацию production,
сохранённую историю, весь доступный период свечей и MAX_LOSS_VALUE=10:
npx @tradejs/cli portfolio-backtest --user root
Команда обрабатывает инструменты ограниченными пакетами, а затем объединяет
закрытые сделки по времени. Параметр --portfolioBatchSize меняет стандартный
размер пакета из четырёх инструментов. Через --tickers можно передать точный
набор инструментов, а --portfolioOutputSuffix разделяет файлы параллельных
отчётов.
HTML, Markdown, JSON и SVG сохраняются в data/replay/output. Отчёт содержит
метрики за весь период и последние 365, 180, 90, 30 и 7 дней. Строки портфеля
разделены на ALL, LONG и SHORT, а результаты каждой стратегии показаны
отдельно. В происхождении результата сохраняются исходный и исследовательский
идентификаторы композиции, конфигурации стратегий, набор инструментов, покрытие
свечей и заданный риск.
Портфельный режим не сравнивает результат с реальной работой или биржей и не сохраняет подробные сигналы и причины пропуска. Для проверки совпадения решений используйте обычное воспроизведение с журналом реальной работы.
Сбор журнала реальной работы
Для точного сравнения соберите записи на сервере, где выполнялся расчёт:
npx @tradejs/cli runtime-evidence \
--daily \
--user root \
--deployment production \
--publishDir output/runtime-evidence
--daily выбирает последнее полное окно 21:00–21:00 по московскому времени.
Также можно задать --startTime и --endTime или интервал --hours. Набор
содержит решения и сведения о версиях, а также манифест и контрольные суммы для
проверки целостности.
Для runtime evidence действует один актуальный контракт:
- embedded snapshot развёртывания использует схему v2 и фиксирует deployment, account, включённые стратегии, точные revisions, версии пакетов и неизменяемые конфигурации стратегий;
- каждая evaluation, signal, trade и сохранённый lineage scope использует runtime lineage v3 и совпадает с embedded composition;
- изменяемые данные
strategyConfigsи не содержащие lineage агрегатыevaluationStatsBucketsне входят в журнал. Агрегированную debug-телеметрию нельзя приписывать неизменяемой composition.
Команды публикации, синхронизации, replay и scorecard отклоняют журнал, который не соответствует этому контракту. Они не преобразуют прежние runtime-форматы и не восстанавливают отсутствующую identity из Redis, текущего исходного кода или имён evaluations.
Если выбранный период включает несколько композиций развёртывания, публикация
сопоставляет каждую запись с текущим или ранее опубликованным проверенным
снимком и создаёт отдельный неизменяемый набор для каждого
deploymentCompositionId. Отсутствующий или противоречивый снимок останавливает
публикацию: исторические записи не приписываются текущей композиции.
Историческая композиция может снова появиться в выбранном периоде только из-за закрытия позиции. Если в этом периоде нет новой записи lineage со списком инструментов, публикация может взять список из набора с проверенной контрольной суммой для той же композиции. Новые записи lineage имеют приоритет перед этим резервным списком.
Такие записи могут содержать чувствительную операционную информацию. Ограничьте доступ, не включайте учётные данные и не добавляйте их в репозиторий.
Перенос и проверка журнала
Для анализа в другом окружении:
npx @tradejs/cli runtime-evidence-sync \
--source user@runtime-host:/path/to/ready/production \
--deployment production
Команда проверяет манифест, хеши и актуальный runtime-контракт до сохранения. Для анализа используйте версию проекта с теми же версиями стратегий и среды исполнения. Не редактируйте журнал, чтобы обойти несовпадение.
Воспроизведение записанной настройки
npx @tradejs/cli replay \
--user root \
--runtimeEvidence <bundle>/runtime-evidence.json \
--startTime <ms> \
--endTime <ms> \
--cacheOnly
Затем подготовьте данные для сравнения:
npx @tradejs/cli replay-runtime-evidence \
--runtimeEvidence <bundle>/runtime-evidence.json \
--startTime <ms> \
--endTime <ms> \
--out output/replay-runtime-evidence.json
Если период покрывают несколько результатов, укажите нужный через --replayKey.
Сравнение сохраняет компактные последовательности причин пропуска на закрытых свечах и перечисляет входы бэктеста, исключённые из-за ревизии или границ периода. Так можно отличить расчёт стратегии с пропуском от входа, который нельзя сравнить с записанной композицией среды исполнения.
Сравнение исполнения
Калибровка исполнения сравнивает время сигнала, появление на рынке и фактические исполнения с восстановленными решениями:
npx @tradejs/cli execution-calibration \
--runtimeEvidence <bundle>/runtime-evidence.json \
--replayEvidence output/replay-runtime-evidence.json \
--out output/execution-calibration.json
runtime-scorecard объединяет журнал, сравнение воспроизведения и калибровку в
отчёты JSON и Markdown. Исследуйте пропуски данных, различия конфигураций и
версий, решения фильтров, сдвиги времени, отклонения ордеров и качество
исполнения.
Ежедневная рабочая сводка отправляется только после фиксации и проверки набора с результатом воспроизведения:
npx @tradejs/cli runtime-feedback-notify \
--bundle <verified-replay-bundle>
Параметр --dryRun проверяет манифест, файлы, контрольные суммы и данные
сравнения, а затем печатает сообщение без отправки. Ручная команда
runtime-parity остаётся отдельным способом диагностики.
Для быстрого сравнения только входов используйте Сравнение реальных и воспроизведённых входов. Процесс обработки текущих данных описан в Расчёте сигналов.