]> Piment Noir Git Repositories - freqai-strategies.git/commitdiff
perf(qav3): target scaled NATR in labeling optimization
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 20 Apr 2025 18:42:56 +0000 (20:42 +0200)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Sun, 20 Apr 2025 18:42:56 +0000 (20:42 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py
quickadapter/user_data/strategies/Utils.py

index d8506575a71b1a494310fbeac4ce827f9196feba..905ca3a4053330412ac29ac9221ab442003723d2 100644 (file)
@@ -44,7 +44,7 @@ class QuickAdapterRegressorV3(BaseRegressionModel):
     https://github.com/sponsors/robcaulk
     """
 
-    version = "3.7.15"
+    version = "3.7.16"
 
     @cached_property
     def _optuna_config(self) -> dict:
@@ -417,12 +417,12 @@ class QuickAdapterRegressorV3(BaseRegressionModel):
                 np.inf,
                 -np.inf,
                 None,
-            )  # (trial_peaks_size, trial_peaks_range, trial_index)
+            )  # (trial_peaks_size, trial_scaled_natr, trial_index)
             nearest_below_quantile = (
                 -np.inf,
                 -np.inf,
                 None,
-            )  # (trial_peaks_size, trial_peaks_range, trial_index)
+            )  # (trial_peaks_size, trial_scaled_natr, trial_index)
             for idx, trial in enumerate(best_trials):
                 peaks_size = trial.values[1]
                 if peaks_size >= quantile_peaks_size:
@@ -981,16 +981,11 @@ def label_objective(
         ratio=label_natr_ratio,
     )
 
-    if len(peak_values) < 2:
-        return -float("inf"), -float("inf")
-
-    previous_value = peak_values[0]
-    peak_ranges = []
-    for peak_value in peak_values[1:]:
-        peak_ranges.append(abs(peak_value - previous_value))
-        previous_value = peak_value
+    scaled_natr_label_period_candles = (
+        ta.NATR(df, timeperiod=label_period_candles) * label_natr_ratio
+    )
 
-    return np.median(peak_ranges), len(peak_ranges)
+    return scaled_natr_label_period_candles.median(), len(peak_values)
 
 
 def smoothed_max(series: pd.Series, temperature=1.0) -> float:
index dceb55c8d66c95dd6c152b12c9e59997fda7e1b6..e6a248f5eacb7d7d3ceb85d5da5819d6b288a562 100644 (file)
@@ -118,7 +118,7 @@ def price_retracement_percent(dataframe: pd.DataFrame, period: int) -> pd.Series
 # VWAP bands
 def vwapb(dataframe: pd.DataFrame, window=20, num_of_std=1) -> tuple:
     vwap = qtpylib.rolling_vwap(dataframe, window=window)
-    rolling_std = vwap.rolling(window=window).std()
+    rolling_std = vwap.rolling(window=window, min_periods=window).std()
     vwap_low = vwap - (rolling_std * num_of_std)
     vwap_high = vwap + (rolling_std * num_of_std)
     return vwap_low, vwap, vwap_high