Как работает и настраивается машинное обучение
Общая схема
- Бэктест (с
--ml) пишет chunk-файлы. npx @tradejs/cli ml-exportобъединяет их в merged JSONL.- Train-скрипт режет merged-файл на
holdout/prod/walk-forward. - Python train-контейнер обучает модель и пишет отчеты.
- Runtime-инференс идет в gRPC (
ML_GRPC_ADDRESS).
Реальные команды
npx @tradejs/cli backtest --config trendline --ml
npx @tradejs/cli ml-export
npx @tradejs/cli ml-inspect
npx @tradejs/cli ml-train:trendline:xgboost
Пример .env для ML
ML_GRPC_ADDRESS=127.0.0.1:50051
ML_TRAIN_RECENT_DAYS=60
ML_TRAIN_TEST_DAYS=30
ML_TRAIN_WALK_FORWARD_FOLDS=2
ML_TRAIN_FEATURE_PROFILE=all
ML_TRAIN_FEATURE_SET=enriched
ML_TRAIN_ENSEMBLE=1
ML_TRAIN_ENSEMBLE_MEMBERS=3
Форматы файлов датасета
Исходные chunk-файлы:
ml-dataset-<strategy>-<chunkId>.jsonl
Производные split-файлы:
*.holdout-train.<key>.jsonl
*.holdout-test.<key>.jsonl
*.prod.<key>.jsonl
*.walk-forward-fold-<N>.train.<key>.jsonl
*.walk-forward-fold-<N>.test.<key>.jsonl
Локальная цепочка артефактов (export -> train -> signals)
npx @tradejs/cli backtest --mlпишет chunk-файлы в локальную папку проекта:data/ml/export/ml-dataset-<strategy>-chunk-<chunkId>.jsonlnpx @tradejs/cli ml-exportобъединяет их в:data/ml/export/ml-dataset-<strategy>-merged-<timestamp>.jsonlnpx @tradejs/cli ml-train:latestчитает export-файлы изdata/ml/exportи пишет model aliases в:data/ml/models/<Strategy>.joblibили ensemble aliasesdata/ml/models/<Strategy>.modelN.joblib- ML infer сервис должен читать ту же директорию моделей (
MODEL_DIR). npx @tradejs/cli signals(если в конфиге стратегииML_ENABLED=true) отправляетsignal.strategyв gRPCPredict. Inference-сервис загружает<Strategy>.joblib/<Strategy>.modelN.joblibдля этой стратегии.
Если имя стратегии и префикс model alias совпадают, runtime автоматически использует обученную локальную модель.
Качество и causality
- На train есть проверка lookahead leakage.
- Для отладки guard можно отключить:
ML_TRAIN_DISABLE_CAUSALITY_GUARD=1
- В runtime используется та же trim-логика фич, что и в train.
Что есть в отчетах
Каждый train-run сохраняет markdown и HTML с:
- holdout-метриками,
- walk-forward-метриками,
- таблицами порогов,
- TOP признаков на holdout.