From 5007bfc7aa1ca3d281a97bed5bfccb611ea8c2e5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sat, 15 Feb 2025 14:29:18 +0100 Subject: [PATCH] perf(qav3): fine tune HPO MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- quickadapter/user_data/config-template.json | 1 + .../LightGBMRegressorQuickAdapterV35.py | 14 ++++++++++---- .../XGBoostRegressorQuickAdapterV35.py | 5 ++--- .../user_data/strategies/QuickAdapterV3.py | 11 +++++------ 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/quickadapter/user_data/config-template.json b/quickadapter/user_data/config-template.json index c1d4c4f..2c89c5c 100644 --- a/quickadapter/user_data/config-template.json +++ b/quickadapter/user_data/config-template.json @@ -172,6 +172,7 @@ // "device": "gpu", // "use_rmm:": true, "n_jobs": 6, // set to number of CPU threads / 4 + "n_estimators": 1000, "verbosity": 1 } }, diff --git a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py index be60bab..1ca8453 100644 --- a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py @@ -119,7 +119,9 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel): "label_period_candles" ] = self.__optuna_period_params[dk.pair].get("label_period_candles") - model = LGBMRegressor(objective="rmse", **model_training_parameters) + model = LGBMRegressor( + objective="regression", metric="rmse", **model_training_parameters + ) eval_set, eval_weights = self.eval_set_and_weights(X_test, y_test, test_weights) @@ -460,7 +462,9 @@ def period_objective( test_weights = test_weights[-test_window:] # Fit the model - model = LGBMRegressor(objective="rmse", **model_training_parameters) + model = LGBMRegressor( + objective="regression", metric="rmse", **model_training_parameters + ) model.fit( X=X, y=y, @@ -491,10 +495,10 @@ def hp_objective( trial, X, y, train_weights, X_test, y_test, test_weights, model_training_parameters ) -> float: study_parameters = { - # "n_estimators": trial.suggest_int("n_estimators", 100, 800), "num_leaves": trial.suggest_int("num_leaves", 2, 256), "learning_rate": trial.suggest_float("learning_rate", 1e-3, 0.3, log=True), "min_child_samples": trial.suggest_int("min_child_samples", 5, 100), + "min_child_weight": trial.suggest_int("min_child_weight", 1, 200), "subsample": trial.suggest_float("subsample", 0.6, 1.0), "colsample_bytree": trial.suggest_float("colsample_bytree", 0.6, 1.0), "reg_alpha": trial.suggest_float("reg_alpha", 1e-8, 10.0, log=True), @@ -503,7 +507,9 @@ def hp_objective( model_training_parameters = {**model_training_parameters, **study_parameters} # Fit the model - model = LGBMRegressor(objective="rmse", **model_training_parameters) + model = LGBMRegressor( + objective="regression", metric="rmse", **model_training_parameters + ) model.fit( X=X, y=y, diff --git a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py index de7e480..27e4e48 100644 --- a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py @@ -499,10 +499,9 @@ def hp_objective( trial, X, y, train_weights, X_test, y_test, test_weights, model_training_parameters ) -> float: study_parameters = { - # "n_estimators": trial.suggest_int("n_estimators", 100, 800), "learning_rate": trial.suggest_float("learning_rate", 1e-3, 0.3, log=True), - "max_depth": trial.suggest_int("max_depth", 3, 12), - "gamma": trial.suggest_float("gamma", 0, 2), + "max_depth": trial.suggest_int("max_depth", 3, 18), + "min_child_weight": trial.suggest_int("min_child_weight", 1, 200), "subsample": trial.suggest_float("subsample", 0.6, 1.0), "colsample_bytree": trial.suggest_float("colsample_bytree", 0.6, 1.0), "reg_alpha": trial.suggest_float("reg_alpha", 1e-8, 10.0, log=True), diff --git a/quickadapter/user_data/strategies/QuickAdapterV3.py b/quickadapter/user_data/strategies/QuickAdapterV3.py index a5b4e8c..9cfa1d9 100644 --- a/quickadapter/user_data/strategies/QuickAdapterV3.py +++ b/quickadapter/user_data/strategies/QuickAdapterV3.py @@ -89,6 +89,9 @@ class QuickAdapterV3(IStrategy): @property def protections(self): + fit_live_predictions_candles = self.freqai_info.get( + "fit_live_predictions_candles", 100 + ) return [ {"method": "CooldownPeriod", "stop_duration_candles": 4}, { @@ -100,13 +103,9 @@ class QuickAdapterV3(IStrategy): }, { "method": "StoplossGuard", - "lookback_period_candles": self.freqai_info.get( - "fit_live_predictions_candles", 100 - ), + "lookback_period_candles": fit_live_predictions_candles, "trade_limit": 1, - "stop_duration_candles": self.freqai_info.get( - "fit_live_predictions_candles", 100 - ), + "stop_duration_candles": fit_live_predictions_candles, "only_per_pair": True, }, ] -- 2.43.0