From: Jérôme Benoit Date: Wed, 9 Apr 2025 15:14:50 +0000 (+0200) Subject: fix(qav3): safe initialization of HPO properties X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=0a0797406522fd5058f7f0038a061b077baa6ee1;p=freqai-strategies.git fix(qav3): safe initialization of HPO properties Signed-off-by: Jérôme Benoit --- diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index cfa5a5b..e1c9d77 100644 --- a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py +++ b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py @@ -44,7 +44,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel): https://github.com/sponsors/robcaulk """ - version = "3.7.1" + version = "3.7.2" @cached_property def _optuna_config(self) -> dict: @@ -96,17 +96,25 @@ class QuickAdapterRegressorV3(BaseRegressionModel): self._optuna_train_rmse[pair] = -1 self._optuna_label_values[pair] = [-1, -1] self._optuna_hp_params[pair] = ( - self.optuna_load_best_params(pair, "hp") or {} + self.optuna_load_best_params(pair, "hp") + if self.optuna_load_best_params(pair, "hp") + else {} ) self._optuna_train_params[pair] = ( - self.optuna_load_best_params(pair, "train") or {} + self.optuna_load_best_params(pair, "train") + if self.optuna_load_best_params(pair, "train") + else {} + ) + self._optuna_label_params[pair] = ( + self.optuna_load_best_params(pair, "label") + if self.optuna_load_best_params(pair, "label") + else { + "label_period_candles": self.ft_params.get( + "label_period_candles", 50 + ), + "label_natr_ratio": self.ft_params.get("label_natr_ratio", 0.075), + } ) - self._optuna_label_params[pair] = self.optuna_load_best_params( - pair, "label" - ) or { - "label_period_candles": self.ft_params.get("label_period_candles", 50), - "label_natr_ratio": self.ft_params.get("label_natr_ratio", 0.075), - } logger.info( f"Initialized {self.__class__.__name__} {self.freqai_info.get('regressor', 'xgboost')} regressor model version {self.version}" ) diff --git a/quickadapter/user_data/strategies/QuickAdapterV3.py b/quickadapter/user_data/strategies/QuickAdapterV3.py index f333ecc..41e3e72 100644 --- a/quickadapter/user_data/strategies/QuickAdapterV3.py +++ b/quickadapter/user_data/strategies/QuickAdapterV3.py @@ -58,7 +58,7 @@ class QuickAdapterV3(IStrategy): INTERFACE_VERSION = 3 def version(self) -> str: - return "3.3.1" + return "3.3.2" timeframe = "5m" @@ -175,14 +175,18 @@ class QuickAdapterV3(IStrategy): ) self._label_params: dict[str, dict] = {} for pair in self.pairs: - self._label_params[pair] = self.optuna_load_best_params(pair, "label") or { - "label_period_candles": self.freqai_info["feature_parameters"].get( - "label_period_candles", 50 - ), - "label_natr_ratio": self.freqai_info["feature_parameters"].get( - "label_natr_ratio", 0.075 - ), - } + self._label_params[pair] = ( + self.optuna_load_best_params(pair, "label") + if self.optuna_load_best_params(pair, "label") + else { + "label_period_candles": self.freqai_info["feature_parameters"].get( + "label_period_candles", 50 + ), + "label_natr_ratio": self.freqai_info["feature_parameters"].get( + "label_natr_ratio", 0.075 + ), + } + ) def feature_engineering_expand_all( self, dataframe: DataFrame, period: int, metadata: dict, **kwargs @@ -354,7 +358,9 @@ class QuickAdapterV3(IStrategy): return dataframe def get_label_period_candles(self, pair: str) -> int: - label_period_candles = self._label_params.get(pair).get("label_period_candles") + label_period_candles = self._label_params.get(pair, {}).get( + "label_period_candles" + ) if label_period_candles: return label_period_candles return self.freqai_info["feature_parameters"].get("label_period_candles", 50) @@ -364,7 +370,7 @@ class QuickAdapterV3(IStrategy): self._label_params[pair]["label_period_candles"] = label_period_candles def get_label_natr_ratio(self, pair: str) -> float: - label_natr_ratio = self._label_params.get(pair).get("label_natr_ratio") + label_natr_ratio = self._label_params.get(pair, {}).get("label_natr_ratio") if label_natr_ratio: return label_natr_ratio return self.freqai_info["feature_parameters"].get("label_natr_ratio", 0.075)