From 3dd31c22d5377006fedd3756e1ed23cfa82397ed Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Sat, 21 Jun 2025 02:00:15 +0200 Subject: [PATCH] fix(qav3): fix again candle pool full caching MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../freqaimodels/QuickAdapterRegressorV3.py | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index 049e202..8a40fee 100644 --- a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py +++ b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py @@ -74,18 +74,25 @@ class QuickAdapterRegressorV3(BaseRegressionModel): **self.freqai_info.get("optuna_hyperopt", {}), } - @cached_property + @property def _optuna_label_candle_pool_full(self) -> list[int]: + if not hasattr(self, "pairs") or not self.pairs: + raise RuntimeError( + "Failed to initialize optuna label candle pool full: pairs property is not defined" + ) n_pairs = len(self.pairs) label_frequency_candles = max( 2, 2 * n_pairs, int(self.ft_params.get("label_frequency_candles", 12)) ) - min_offset = -int(label_frequency_candles / 2) - max_offset = int(label_frequency_candles / 2) - return [ - max(1, label_frequency_candles + offset) - for offset in range(min_offset, max_offset + 1) - ] + cache_key = (n_pairs, label_frequency_candles) + if cache_key not in self._optuna_label_candle_pool_full_cache: + min_offset = -int(label_frequency_candles / 2) + max_offset = int(label_frequency_candles / 2) + self._optuna_label_candle_pool_full_cache[cache_key] = [ + max(1, label_frequency_candles + offset) + for offset in range(min_offset, max_offset + 1) + ] + return copy.deepcopy(self._optuna_label_candle_pool_full_cache[cache_key]) def __init__(self, **kwargs): super().__init__(**kwargs) @@ -112,6 +119,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel): self._optuna_hp_params: dict[str, dict[str, Any]] = {} self._optuna_train_params: dict[str, dict[str, Any]] = {} self._optuna_label_params: dict[str, dict[str, Any]] = {} + self._optuna_label_candle_pool_full_cache: dict[tuple[int, int], list[int]] = {} self.init_optuna_label_candle_pool() self._optuna_label_candle: dict[str, int] = {} self._optuna_label_candles: dict[str, int] = {} -- 2.43.0