From: Jérôme Benoit Date: Sun, 20 Apr 2025 18:42:56 +0000 (+0200) Subject: perf(qav3): target scaled NATR in labeling optimization X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=db5581397b033cee01b50265ba1459f338204404;p=freqai-strategies.git perf(qav3): target scaled NATR in labeling optimization Signed-off-by: Jérôme Benoit --- diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index d850657..905ca3a 100644 --- a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py +++ b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py @@ -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: diff --git a/quickadapter/user_data/strategies/Utils.py b/quickadapter/user_data/strategies/Utils.py index dceb55c..e6a248f 100644 --- a/quickadapter/user_data/strategies/Utils.py +++ b/quickadapter/user_data/strategies/Utils.py @@ -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