From: Jérôme Benoit Date: Fri, 21 Feb 2025 11:44:37 +0000 (+0100) Subject: fix(reforcexy): properly display HPO study best params X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=46c9e5dc968d7d5fbc3b4e9d077eda1b511a4b26;p=freqai-strategies.git fix(reforcexy): properly display HPO study best params Signed-off-by: Jérôme Benoit --- diff --git a/ReforceXY/user_data/freqaimodels/ReforceXY.py b/ReforceXY/user_data/freqaimodels/ReforceXY.py index d12c85a..acd1d47 100644 --- a/ReforceXY/user_data/freqaimodels/ReforceXY.py +++ b/ReforceXY/user_data/freqaimodels/ReforceXY.py @@ -125,9 +125,6 @@ class ReforceXY(BaseReinforcementLearningModel): self.optuna_n_startup_trials: int = self.rl_config_optuna.get( "n_startup_trials", 10 ) - self.optuna_trial_params: Dict[str, list] = {} - for pair in self.pairs: - self.optuna_trial_params[pair] = [] self.optuna_callback: Optional[MaskableTrialEvalCallback] = None self.unset_unsupported() @@ -514,15 +511,12 @@ class ReforceXY(BaseReinforcementLearningModel): logger.info( "Best trial: %s. Score: %s", study.best_trial.number, study.best_trial.value ) - logger.info( - "Best trial params: %s", - self.optuna_trial_params[dk.pair][study.best_trial.number], - ) + logger.info("Best trial params: %s", study.best_trial.params) logger.info("-------------------------------------------------------") self.save_best_params(dk.pair, study.best_trial.params) - return self.optuna_trial_params[dk.pair][study.best_trial.number] + return study.best_trial.params def save_best_params(self, pair: str, best_params: Dict) -> None: """ @@ -531,7 +525,7 @@ class ReforceXY(BaseReinforcementLearningModel): best_params_path = Path( self.full_path / f"{pair.split('/')[0]}_hyperopt_best_params.json" ) - logger.info("saving to %s JSON file", best_params_path) + logger.info(f"{pair}: saving best params to %s JSON file", best_params_path) with best_params_path.open("w", encoding="utf-8") as write_file: json.dump(best_params, write_file, indent=4) @@ -543,7 +537,9 @@ class ReforceXY(BaseReinforcementLearningModel): self.full_path / f"{pair.split('/')[0]}_hyperopt_best_params.json" ) if best_params_path.is_file(): - logger.info("loading from %s JSON file", best_params_path) + logger.info( + f"{pair}: loading best params from %s JSON file", best_params_path + ) with best_params_path.open("r", encoding="utf-8") as read_file: best_params = json.load(read_file) return best_params @@ -575,7 +571,6 @@ class ReforceXY(BaseReinforcementLearningModel): "------------ Hyperopt trial %d %s ------------", trial.number, dk.pair ) logger.info("Trial %s params: %s", trial.number, params) - self.optuna_trial_params[dk.pair].append(params) model = self.MODELCLASS( self.policy_type, diff --git a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py index 5d909b3..d034a27 100644 --- a/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/LightGBMRegressorQuickAdapterV35.py @@ -444,13 +444,17 @@ class LightGBMRegressorQuickAdapterV35(BaseRegressionModel): return json.load(read_file) return None - def optuna_study_delete(self, study_name: str, storage) -> None: + def optuna_study_delete( + self, study_name: str, storage: optuna.storages.BaseStorage + ) -> None: try: optuna.delete_study(study_name=study_name, storage=storage) except Exception: pass - def optuna_study_load(self, study_name: str, storage) -> optuna.study.Study | None: + def optuna_study_load( + self, study_name: str, storage: optuna.storages.BaseStorage + ) -> optuna.study.Study | None: try: study = optuna.load_study(study_name=study_name, storage=storage) except Exception: diff --git a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py index 872bfa5..36db9bd 100644 --- a/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py +++ b/quickadapter/user_data/freqaimodels/XGBoostRegressorQuickAdapterV35.py @@ -445,13 +445,17 @@ class XGBoostRegressorQuickAdapterV35(BaseRegressionModel): return json.load(read_file) return None - def optuna_study_delete(self, study_name: str, storage) -> None: + def optuna_study_delete( + self, study_name: str, storage: optuna.storages.BaseStorage + ) -> None: try: optuna.delete_study(study_name=study_name, storage=storage) except Exception: pass - def optuna_study_load(self, study_name: str, storage) -> optuna.study.Study | None: + def optuna_study_load( + self, study_name: str, storage: optuna.storages.BaseStorage + ) -> optuna.study.Study | None: try: study = optuna.load_study(study_name=study_name, storage=storage) except Exception: