]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
refactor: use freqtrade training defaults
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 3 Feb 2025 15:03:35 +0000 (16:03 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Mon, 3 Feb 2025 15:03:35 +0000 (16:03 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py
quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py

index afab9499e4589dd927ff562a4d1daaad3ef9f57e..b7fbef8bb761c311592160ad496a722f3ad5cea3 100644 (file)
@@ -12,7 +12,7 @@ import sklearn
 import warnings
 
 N_TRIALS = 36
-TEST_SIZE = 0.25
+TEST_SIZE = 0.1
 
 warnings.simplefilter(action="ignore", category=FutureWarning)
 
@@ -57,19 +57,13 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel):
 
         optuna_hyperopt: bool = (
             self.freqai_info.get("optuna_hyperopt", False)
-            and self.freqai_info.get("data_split_parameters", {}).get(
-                "test_size", TEST_SIZE
-            )
-            > 0
+            and self.data_split_parameters.get("test_size", TEST_SIZE) > 0
         )
 
         start = time.time()
         if optuna_hyperopt:
             pruner = optuna.pruners.MedianPruner(n_warmup_steps=5)
-            study = optuna.create_study(
-                pruner=pruner,
-                direction="minimize",
-            )
+            study = optuna.create_study(pruner=pruner, direction="minimize")
             study.optimize(
                 lambda trial: objective(
                     trial,
@@ -156,9 +150,7 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel):
                 pred_df_sorted[col] = pred_df_sorted[col].sort_values(
                     ascending=False, ignore_index=True
                 )
-            frequency = num_candles / (
-                self.freqai_info["feature_parameters"]["label_period_candles"] * 2
-            )
+            frequency = num_candles / (self.ft_params["label_period_candles"] * 2)
             max_pred = pred_df_sorted.iloc[: int(frequency)].mean()
             min_pred = pred_df_sorted.iloc[-int(frequency) :].mean()
             dk.data["extra_returns_per_train"]["&s-maxima_sort_threshold"] = max_pred[
@@ -194,12 +186,7 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel):
         dk.data["extra_returns_per_train"]["DI_cutoff"] = cutoff
 
     def eval_set_and_weights(self, X_test, y_test, test_weights):
-        if (
-            self.freqai_info.get("data_split_parameters", {}).get(
-                "test_size", TEST_SIZE
-            )
-            == 0
-        ):
+        if self.data_split_parameters.get("test_size", TEST_SIZE) == 0:
             eval_set = None
             eval_weights = None
         else:
@@ -210,7 +197,15 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel):
 
 
 def objective(
-    trial, X, y, train_weights, X_test, y_test, test_weights, candles_step, params
+    trial,
+    X,
+    y,
+    train_weights,
+    X_test,
+    y_test,
+    test_weights,
+    candles_step,
+    params,
 ):
     train_window = trial.suggest_int(
         "train_period_candles", 1152, 17280, step=candles_step
index 1d347c87aa37ffec5db56ee2d527695b411225b3..3b34711cf39e5280eb5de93477baf6489c36247d 100644 (file)
@@ -12,7 +12,7 @@ import sklearn
 import warnings
 
 N_TRIALS = 36
-TEST_SIZE = 0.25
+TEST_SIZE = 0.1
 
 warnings.simplefilter(action="ignore", category=FutureWarning)
 
@@ -57,10 +57,7 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel):
 
         optuna_hyperopt: bool = (
             self.freqai_info.get("optuna_hyperopt", False)
-            and self.freqai_info.get("data_split_parameters", {}).get(
-                "test_size", TEST_SIZE
-            )
-            > 0
+            and self.data_split_parameters.get("test_size", TEST_SIZE) > 0
         )
 
         start = time.time()
@@ -153,9 +150,7 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel):
                 pred_df_sorted[col] = pred_df_sorted[col].sort_values(
                     ascending=False, ignore_index=True
                 )
-            frequency = num_candles / (
-                self.freqai_info["feature_parameters"]["label_period_candles"] * 2
-            )
+            frequency = num_candles / (self.self.ft_params["label_period_candles"] * 2)
             max_pred = pred_df_sorted.iloc[: int(frequency)].mean()
             min_pred = pred_df_sorted.iloc[-int(frequency) :].mean()
             dk.data["extra_returns_per_train"]["&s-maxima_sort_threshold"] = max_pred[
@@ -191,12 +186,7 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel):
         dk.data["extra_returns_per_train"]["DI_cutoff"] = cutoff
 
     def eval_set_and_weights(self, X_test, y_test, test_weights):
-        if (
-            self.freqai_info.get("data_split_parameters", {}).get(
-                "test_size", TEST_SIZE
-            )
-            == 0
-        ):
+        if self.data_split_parameters.get("test_size", TEST_SIZE) == 0:
             eval_set = None
             eval_weights = None
         else:
@@ -207,7 +197,15 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel):
 
 
 def objective(
-    trial, X, y, train_weights, X_test, y_test, test_weights, candles_step, params
+    trial,
+    X,
+    y,
+    train_weights,
+    X_test,
+    y_test,
+    test_weights,
+    candles_step,
+    params,
 ):
     train_window = trial.suggest_int(
         "train_period_candles", 1152, 17280, step=candles_step