Обсуждение статьи "Архитектура машинного обучения для MetaTrader 5 (Часть 8): Байесовская оптимизация гиперпараметров с Purged Cross-Validation и ранним отсечением испытаний"

 

Опубликована статья Архитектура машинного обучения для MetaTrader 5 (Часть 8): Байесовская оптимизация гиперпараметров с Purged Cross-Validation и ранним отсечением испытаний:

GridSearchCV и RandomizedSearchCV имеют фундаментальное ограничение в финансовом ML: каждое испытание независимо, поэтому качество поиска не улучшается с ростом вычислительного бюджета. В этой статье Optuna — с использованием Tree-structured Parzen Estimator — интегрируется с кросс-валидацией PurgedKFold, ранней остановкой HyperbandPruner и соглашением о двух типах весов, которое разделяет веса обучения и веса оценки. В результате получается система из пяти компонентов: целевая функция с отсечением на уровне фолдов, слой преобразования/подстановки параметров, совместно оптимизирующий схему взвешивания и гиперпараметры модели, финансово откалиброванное отсечение, возобновляемый оркестратор на базе SQLite и конвертер в формат scikit-learn cv_results_. В статье также проводится четкое разграничение — на основе Тимоти Мастерса — между статистическими целями, где направленный поиск полезен, и финансовыми целями, где он вреден.

Вы строите финансовый ML-классификатор на triple‑barrier или meta‑labels и должны честно выбрать гиперпараметры — не превращая сам поиск в фабрику переобучения. Стандартные инструменты не подходят для этого сценария по трем конкретным причинам. GridSearchCV и RandomizedSearchCV не учатся на прошлых испытаниях, поэтому тратят бюджет, повторно исследуя области пространства гиперпараметров, которые уже показали себя плохими. Они не могут остановить бесперспективную конфигурацию после первого дорогого фолда PurgedKFold; поэтому каждое испытание вынуждено проходить все фолды целиком, даже когда первый фолд уже сигнализирует о неудаче. Кроме того, они плохо интегрируются с финансовым контрактом данных — PurgedKFold как единственный допустимый разделитель, отдельные веса для fitting и scoring, а также persistent storage, чтобы долгий поиск переживал сбои и поддерживал параллельные процессы. Измеримые симптомы: напрасные вычисления, смещенные out‑of‑sample сравнения из-за информационной утечки через purge boundary и хрупкие эксперименты, которые после любого прерывания должны начинаться с нуля.

В этой статье показана практическая замена: Optuna (TPE sampler + pruning + SQLite storage), нативно связанная с финансовой cross‑validation и соглашениями о weighting, установленными в предыдущих частях этой серии. После прочтения у вас будет конкретный, исполняемый HPO-контур из пяти компонентов: (1) целевая функция, которая выполняет PurgedKFold cross‑validation с return‑attribution weighted scoring и сообщает fold‑level results для отсечения; (2) FinancialModelSuggester, слой трансляции параметров, который преобразует scikit‑learn distribution specs в вызовы trial.suggest_*() и одновременно оптимизирует sample weighting scheme и decay; (3) финансово‑ориентированный механизм отсечения (TradingModelPruner) который применяет entropy‑based economic baseline и regime‑scaled volatility tolerance; (4) оркестратор (optimize_trading_model) с SQLite storage для resumption и параллельных процессов; и (5) конвертер study‑to‑cv_results_ для совместимости с существующей аналитикой scikit‑learn. Выходные артефакты — persisted Study, refit best_estimator_ (_WeightedEstimator оборачивает настроенную базовую модель), и cv_results_ DataFrame с per‑fold scores — готовый для тех же downstream diagnostics, используемых в остальной части pipeline.


Автор: Patrick Murimi Njoroge