From c157b5c71bd72d3d43d7f8ea490d499904e6a9fd Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Wed, 5 Mar 2025 15:33:55 +0100 Subject: [PATCH] perf(qav3): fine tune labeling window optimization MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../LightGBMRegressorQuickAdapterV35.py | 17 +++++++---------- .../XGBoostRegressorQuickAdapterV35.py | 17 +++++++---------- 2 files changed, 14 insertions(+), 20 deletions(-) diff --git a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py index 1fdd090..c2727f7 100644 --- a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py @@ -553,9 +553,7 @@ def period_objective( model_training_parameters, ) -> float: min_train_window: int = fit_live_predictions_candles * 2 - max_train_window: int = ( - len(X) if len(X) > min_train_window else (min_train_window + len(X)) - ) + max_train_window: int = max(len(X), min_train_window) train_window = trial.suggest_int( "train_period_candles", min_train_window, max_train_window, step=candles_step ) @@ -564,11 +562,7 @@ def period_objective( train_weights = train_weights[-train_window:] min_test_window: int = int(min_train_window * test_size) - max_test_window: int = ( - len(X_test) - if len(X_test) > min_test_window - else (min_test_window + len(X_test)) - ) + max_test_window: int = max(len(X_test), min_test_window) test_window = trial.suggest_int( "test_period_candles", min_test_window, max_test_window, step=candles_step ) @@ -591,12 +585,15 @@ def period_objective( ) y_pred = model.predict(X_test) - min_label_period_candles: int = fit_live_predictions_candles // 60 - max_label_period_candles: int = fit_live_predictions_candles // 6 + min_label_period_candles: int = max(fit_live_predictions_candles // 200, 10) + max_label_period_candles: int = max( + fit_live_predictions_candles // 6, min_label_period_candles + ) label_period_candles = trial.suggest_int( "label_period_candles", min_label_period_candles, max_label_period_candles, + step=candles_step, ) y_test_length = len(y_test) y_pred_length = len(y_pred) diff --git a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py index da05210..e70f0ca 100644 --- a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py @@ -554,9 +554,7 @@ def period_objective( model_training_parameters, ) -> float: min_train_window: int = fit_live_predictions_candles * 2 - max_train_window: int = ( - len(X) if len(X) > min_train_window else (min_train_window + len(X)) - ) + max_train_window: int = max(len(X), min_train_window) train_window = trial.suggest_int( "train_period_candles", min_train_window, max_train_window, step=candles_step ) @@ -565,11 +563,7 @@ def period_objective( train_weights = train_weights[-train_window:] min_test_window: int = int(min_train_window * test_size) - max_test_window: int = ( - len(X_test) - if len(X_test) > min_test_window - else (min_test_window + len(X_test)) - ) + max_test_window: int = max(len(X_test), min_test_window) test_window = trial.suggest_int( "test_period_candles", min_test_window, max_test_window, step=candles_step ) @@ -595,12 +589,15 @@ def period_objective( ) y_pred = model.predict(X_test) - min_label_period_candles: int = fit_live_predictions_candles // 60 - max_label_period_candles: int = fit_live_predictions_candles // 6 + min_label_period_candles: int = max(fit_live_predictions_candles // 200, 10) + max_label_period_candles: int = max( + fit_live_predictions_candles // 6, min_label_period_candles + ) label_period_candles = trial.suggest_int( "label_period_candles", min_label_period_candles, max_label_period_candles, + step=candles_step, ) y_test_length = len(y_test) y_pred_length = len(y_pred) -- 2.43.0