]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
fix(qav3): fix again candle pool full caching
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Sat, 21 Jun 2025 00:00:15 +0000 (02:00 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Sat, 21 Jun 2025 00:00:15 +0000 (02:00 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py

index 049e202acbd78c91d614978c4197ce63f4268072..8a40fee188f2e324b429167dcc8c798f859bf38c 100644 (file)
@@ -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] = {}