From: Jérôme Benoit Date: Sun, 25 May 2025 13:03:39 +0000 (+0200) Subject: fix(qav3): filter invalid best trials at MO optimization X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=ee5cdd594b755553f745f8488bbc8bb25844285c;p=freqai-strategies.git fix(qav3): filter invalid best trials at MO optimization Signed-off-by: Jérôme Benoit --- diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index 233d90d..b166248 100644 --- a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py +++ b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py @@ -45,7 +45,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel): https://github.com/sponsors/robcaulk """ - version = "3.7.65" + version = "3.7.66" @cached_property def _optuna_config(self) -> dict: @@ -90,7 +90,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel): ) self._optuna_hp_value: dict[str, float] = {} self._optuna_train_value: dict[str, float] = {} - self._optuna_label_values: dict[str, dict] = {} + self._optuna_label_values: dict[str, list] = {} self._optuna_hp_params: dict[str, dict] = {} self._optuna_train_params: dict[str, dict] = {} self._optuna_label_params: dict[str, dict] = {} @@ -409,11 +409,14 @@ class QuickAdapterRegressorV3(BaseRegressionModel): f"Expected 2 objectives for {namespace} namespace, but got {n_objectives}" ) - best_trials = [ - trial - for trial in study.best_trials - if trial.values is not None and len(trial.values) == n_objectives - ] + best_trials = [] + for trial in study.best_trials: + if trial.values is not None and len(trial.values) == n_objectives: + if all( + isinstance(values, (int, float)) and np.isfinite(values) + for values in trial.values + ): + best_trials.append(trial) if not best_trials: return None diff --git a/quickadapter/user_data/strategies/QuickAdapterV3.py b/quickadapter/user_data/strategies/QuickAdapterV3.py index 0ad3a8c..280bbce 100644 --- a/quickadapter/user_data/strategies/QuickAdapterV3.py +++ b/quickadapter/user_data/strategies/QuickAdapterV3.py @@ -60,7 +60,7 @@ class QuickAdapterV3(IStrategy): INTERFACE_VERSION = 3 def version(self) -> str: - return "3.3.67" + return "3.3.68" timeframe = "5m"