From: Jérôme Benoit Date: Thu, 6 Feb 2025 12:21:40 +0000 (+0100) Subject: refactor(qav3): add optuna config section in freqai config X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=2bfe9c90f456f7c8c9d4a8cef44aa049fe7641d4;p=freqai-strategies.git refactor(qav3): add optuna config section in freqai config Signed-off-by: Jérôme Benoit --- diff --git a/quickadapter/user_data/config-template.json b/quickadapter/user_data/config-template.json index b28f087..2b6fe86 100644 --- a/quickadapter/user_data/config-template.json +++ b/quickadapter/user_data/config-template.json @@ -115,11 +115,13 @@ "track_performance": false, "data_kitchen_thread_count": 6, // set to number of CPU threads / 4 "outlier_threshold": 0.999, - "optuna_hyperopt": true, - "optuna_hyperopt_trials": 36, - "optuna_hyperopt_timeout": 3600, - "optuna_hyperopt_jobs": 6, - "optuna_hyperopt_candles_step": 10, + "optuna_hyperopt": { + "enabled": true, + "n_trials": 36, + "n_jobs": 6, + "timeout": 3600, + "candles_step": 10 + }, "extra_returns_per_train": { "DI_value_param1": 0, "DI_value_param2": 0, diff --git a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py index 1ad7b5d..f673601 100644 --- a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py @@ -38,8 +38,9 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel): def __init__(self, **kwargs): super().__init__(**kwargs) + self.__optuna_config = self.freqai_info.get("optuna_hyperopt", {}) self.__optuna_hyperopt: bool = ( - self.freqai_info.get("optuna_hyperopt", False) + self.__optuna_config.get("enabled", False) and self.data_split_parameters.get("test_size", TEST_SIZE) > 0 ) self.__optuna_hp = {} @@ -77,12 +78,12 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel): y_test, test_weights, self.freqai_info.get("fit_live_predictions_candles", 100), - self.freqai_info.get("optuna_hyperopt_candles_step", 100), + self.__optuna_config.get("candles_step", 100), self.model_training_parameters, ), - n_trials=self.freqai_info.get("optuna_hyperopt_trials", N_TRIALS), - n_jobs=self.freqai_info.get("optuna_hyperopt_jobs", 1), - timeout=self.freqai_info.get("optuna_hyperopt_timeout", 3600), + n_trials=self.__optuna_config.get("n_trials", N_TRIALS), + n_jobs=self.__optuna_config.get("n_jobs", 1), + timeout=self.__optuna_config.get("timeout", 3600), ) self.__optuna_hp = study.best_params diff --git a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py index e57b8d3..15abca3 100644 --- a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py @@ -38,8 +38,9 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel): def __init__(self, **kwargs): super().__init__(**kwargs) + self.__optuna_config = self.freqai_info.get("optuna_hyperopt", {}) self.__optuna_hyperopt: bool = ( - self.freqai_info.get("optuna_hyperopt", False) + self.__optuna_config.get("enabled", False) and self.data_split_parameters.get("test_size", TEST_SIZE) > 0 ) self.__optuna_hp = {} @@ -77,12 +78,12 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel): y_test, test_weights, self.freqai_info.get("fit_live_predictions_candles", 100), - self.freqai_info.get("optuna_hyperopt_candles_step", 100), + self.__optuna_config.get("candles_step", 100), self.model_training_parameters, ), - n_trials=self.freqai_info.get("optuna_hyperopt_trials", N_TRIALS), - n_jobs=self.freqai_info.get("optuna_hyperopt_jobs", 1), - timeout=self.freqai_info.get("optuna_hyperopt_timeout", 3600), + n_trials=self.__optuna_config.get("n_trials", N_TRIALS), + n_jobs=self.__optuna_config.get("n_jobs", 1), + timeout=self.__optuna_config.get("timeout", 3600), ) self.__optuna_hp = study.best_params