]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
fix(qav3): soft extremum computation
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Wed, 30 Jul 2025 13:54:17 +0000 (15:54 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Wed, 30 Jul 2025 13:54:17 +0000 (15:54 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py
quickadapter/user_data/strategies/QuickAdapterV3.py

index ef68df03dcf53b3109e28ba582a2c33dd8792d62..854c6831fa213b37f38ab512c95ef49316f60dd5 100644 (file)
@@ -51,7 +51,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel):
     https://github.com/sponsors/robcaulk
     """
 
-    version = "3.7.105"
+    version = "3.7.106"
 
     @cached_property
     def _optuna_config(self) -> dict[str, Any]:
@@ -545,7 +545,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel):
         )
         if thresholds_smoothing == "soft_extremum":
             thresholds_alpha = float(
-                self.freqai_info.get("prediction_thresholds_alpha", 0.5)
+                self.freqai_info.get("prediction_thresholds_alpha", 10.0)
             )
             return QuickAdapterRegressorV3.soft_extremum_min_max(
                 pred_extrema, thresholds_ratio, thresholds_alpha
@@ -1803,7 +1803,7 @@ def soft_extremum(series: pd.Series, alpha: float) -> float:
     shifted_exponentials = np.exp(scaled_data - max_scaled_data)
     numerator = np.sum(np_array * shifted_exponentials)
     denominator = np.sum(shifted_exponentials)
-    if np.isclose(denominator, 0):
+    if denominator == 0:
         return np.max(np_array)
     return numerator / denominator
 
index 19eff46af9aa7d4080b98f4f3b4b3b53b8edc750..c7db3673332cbee760d19186def40b6d9e51a2d9 100644 (file)
@@ -65,7 +65,7 @@ class QuickAdapterV3(IStrategy):
     INTERFACE_VERSION = 3
 
     def version(self) -> str:
-        return "3.3.113"
+        return "3.3.114"
 
     timeframe = "5m"
 
@@ -94,10 +94,10 @@ class QuickAdapterV3(IStrategy):
 
     # {stage: (natr_ratio_percent, stake_percent)}
     partial_exit_stages: dict[int, tuple[float, float]] = {
-        0: (0.4167, 0.4167),
-        1: (0.6667, 0.25),
-        2: (0.8333, 0.1667),
-        3: (0.9167, 0.0833),
+        0: (0.4167, 0.3333),
+        1: (0.6667, 0.2667),
+        2: (0.8333, 0.2000),
+        3: (0.9167, 0.1333),
     }
 
     timeframe_minutes = timeframe_to_minutes(timeframe)