Перейти к основному содержимому

Проверка AI-фильтра на данных бэктестов

TradeJS умеет превращать AI-бэктесты в переиспользуемые датасеты для проверки AI-фильтра.

AI-проверка в TradeJS не обязана жить только в рабочем режиме. Во время бэктеста можно сохранить данные по историческим сделкам, а потом повторно прогонять их через новые версии промптов, моделей и правил AI-фильтра.

Важно: это проверка на исторических данных, а не режим "без запросов к модели". По умолчанию ai-train повторно отправляет промпты вашему AI-провайдеру, а режим без внешних запросов доступен только через --localOnly.

Зачем это нужно

  • Можно менять поведение промптов без полного повторного прогона рыночной симуляции.
  • Можно сравнивать модели, провайдеров и пороги качества на одном и том же историческом срезе.
  • Можно заранее измерять ложные подтверждения и ложные отказы до изменения AI-фильтра в live-режиме.
  • AI-оценка остаётся привязанной к реальным результатам сделок, а не к синтетическим примерам.

Что TradeJS записывает во время бэктеста

Когда в бэктесте включён экспорт AI-датасета, TradeJS пишет по каждой сделке строки с:

  • идентификатором сигнала, symbol, direction и timestamp
  • именем стратегии
  • структурированным AI payload, по которому позже можно пересобрать промпты стратегии
  • фактическим profit сделки для оценки на исторических данных
  • дополнительными служебными данными теста для трассировки бэктеста

Сначала строки пишутся в chunk-файлы воркеров, потом объединяются в единый датасет для повторной проверки.

Как это работает

  1. Запускаете бэктест с включённым экспортом AI-датасета.
  2. Объединяете chunk-файлы в один датасет с меткой времени.
  3. Повторно прогоняете этот датасет через текущую AI-логику.
  4. Сравниваете решения AI с фактическим результатом сделок до изменения AI-фильтра в live-режиме.

Во время повторной проверки TradeJS пересобирает пару промптов из сохранённого signal/payload контекста, поэтому новые версии промптов и aiAdapter можно проверять на одном и том же историческом срезе.

Воспроизводимый CLI flow

npx @tradejs/cli backtest --config TrendLine:base --ai
npx @tradejs/cli ai-export
npx @tradejs/cli ai-train -n 50 --minQuality 4

Артефакты:

  • backtest --ai пишет data/ai/export/ai-dataset-<strategy>-chunk-<chunkId>.jsonl
  • ai-export объединяет их в data/ai/export/ai-dataset-<strategy>-merged-<timestamp>.jsonl
  • ai-train по умолчанию повторно прогоняет строки из последнего merged-файла

Важно:

  • обычный replay по-прежнему делает запросы к настроенному AI-провайдеру
  • без внешних запросов работает только режим --localOnly

Полезные флаги ai-train:

  • -n, --recent — проверить последние N сделок с конца (0 = все строки)
  • --minQuality — минимальный quality threshold для AI approval
  • -s, --strategy — взять последний merged-файл только для одной стратегии
  • -f, --file — воспроизвести конкретный merged dataset файл

Что можно валидировать

  • изменения AI-промптов в aiAdapter стратегии
  • смену провайдера или модели
  • настройку minQuality
  • согласованность с исходным направлением стратегии
  • поведение tp / fp / tn / fn для AI approval против реальной прибыльности
  • локальные детерминированные эксперименты через --localOnly

Как ai-train считает approval

  • сделка считается одобренной только если AI вернул то же направление, что и исходный сигнал, и quality >= minQuality
  • корректность на исторических данных считается по фактическому результату сделки (profit > 0)

Ключевые метрики

  • approval rate
  • precision по quality-бакетам
  • влияние на expectancy proxy
  • доля конфликтов с направлением стратегии
  • tp / fp / tn / fn для approval против реальной прибыльности

Вариант для экономии

Для ручных исследовательских прогонов некоторые команды запускают и анализируют ai-train из кодовых агентов вроде OpenAI Codex или Claude Code вместо того, чтобы строить каждую итерацию вокруг прямых API-запросов в собственном tooling.

Это может ускорять цикл проверки промптов и в некоторых случаях снижать стоимость по сравнению с прямым API-режимом, если у вас уже есть подходящий тариф, включённые лимиты или удобный workspace workflow. Но это не гарантированное преимущество: перед тем как делать такой сценарий основным, проверьте актуальные ограничения и цены для Codex, Claude Code и вашего AI-провайдера.

Рекомендуемый сценарий проверки

  1. Меняете prompt-логику или правила adapter в коде.
  2. Повторно прогоняете тот же исторический набор строк.
  3. Проверяете, улучшился ли tradeoff между покрытием и качеством.
  4. Продвигаете новый gate только после внятного обоснования на исторических данных.

Так AI-фильтр становится проверяемым, повторяемым и понятным для авторов стратегий.

См. также