From f346af079e7157d9d9c47bfb8e0a27f70f966c52 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Wed, 30 Jul 2025 15:54:17 +0200 Subject: [PATCH] fix(qav3): soft extremum computation MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../user_data/freqaimodels/QuickAdapterRegressorV3.py | 6 +++--- quickadapter/user_data/strategies/QuickAdapterV3.py | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index ef68df0..854c683 100644 --- a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py +++ b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py @@ -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 diff --git a/quickadapter/user_data/strategies/QuickAdapterV3.py b/quickadapter/user_data/strategies/QuickAdapterV3.py index 19eff46..c7db367 100644 --- a/quickadapter/user_data/strategies/QuickAdapterV3.py +++ b/quickadapter/user_data/strategies/QuickAdapterV3.py @@ -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) -- 2.43.0