From 1bfd6f1dea5b9bb18905e914662e990f606ed71d Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Wed, 30 Apr 2025 21:21:42 +0200 Subject: [PATCH] perf(qav3): move label optuna optimization to model fit() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../freqaimodels/QuickAdapterRegressorV3.py | 38 +++++++++---------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index b09f2f5..3c3bc52 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.21" + version = "3.7.22" @cached_property def _optuna_config(self) -> dict: @@ -190,10 +190,23 @@ class QuickAdapterRegressorV3(BaseRegressionModel): model_training_parameters = self.model_training_parameters - init_model = self.get_init_model(dk.pair) - start = time.time() if self._optuna_hyperopt: + self.optuna_optimize( + pair=dk.pair, + namespace="label", + objective=lambda trial: label_objective( + trial, + self.data_provider.get_pair_dataframe(dk.pair), + self.freqai_info.get("fit_live_predictions_candles", 100), + self._optuna_config.get("candles_step"), + ), + directions=[ + optuna.study.StudyDirection.MAXIMIZE, + optuna.study.StudyDirection.MAXIMIZE, + ], + ) + self.optuna_optimize( pair=dk.pair, namespace="hp", @@ -260,7 +273,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel): eval_set=eval_set, eval_weights=eval_weights, model_training_parameters=model_training_parameters, - init_model=init_model, + init_model=self.get_init_model(dk.pair), ) time_spent = time.time() - start self.dd.update_metric_tracker("fit_time", time_spent, dk.pair) @@ -274,23 +287,6 @@ class QuickAdapterRegressorV3(BaseRegressionModel): "fit_live_predictions_candles", 100 ) - if self._optuna_hyperopt: - df = self.data_provider.get_pair_dataframe(pair) - self.optuna_optimize( - pair=pair, - namespace="label", - objective=lambda trial: label_objective( - trial, - df, - fit_live_predictions_candles, - self._optuna_config.get("candles_step"), - ), - directions=[ - optuna.study.StudyDirection.MAXIMIZE, - optuna.study.StudyDirection.MAXIMIZE, - ], - ) - if self.live: if not hasattr(self, "exchange_candles"): self.exchange_candles = len(self.dd.model_return_values[pair].index) -- 2.43.0