From: Jérôme Benoit Date: Sat, 19 Apr 2025 19:31:11 +0000 (+0200) Subject: perf(qav3): compute prediction thresholds over label periods only X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=eb44f0fc54fc8f95035be79619686bde44d37def;p=freqai-strategies.git perf(qav3): compute prediction thresholds over label periods only Signed-off-by: Jérôme Benoit --- diff --git a/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py b/quickadapter/user_data/freqaimodels/QuickAdapterRegressorV3.py index 6cdfc44..8480cb9 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.12" + version = "3.7.13" @cached_property def _optuna_config(self) -> dict: @@ -311,7 +311,11 @@ class QuickAdapterRegressorV3(BaseRegressionModel): dk.data["extra_returns_per_train"][MINIMA_THRESHOLD_COLUMN] = -2 dk.data["extra_returns_per_train"][MAXIMA_THRESHOLD_COLUMN] = 2 else: - min_pred, max_pred = self.min_max_pred(pred_df_full) + min_pred, max_pred = self.min_max_pred( + pred_df_full, + fit_live_predictions_candles, + self.get_optuna_params(pair, "label").get("label_period_candles"), + ) dk.data["extra_returns_per_train"][MINIMA_THRESHOLD_COLUMN] = min_pred dk.data["extra_returns_per_train"][MAXIMA_THRESHOLD_COLUMN] = max_pred @@ -370,18 +374,23 @@ class QuickAdapterRegressorV3(BaseRegressionModel): return eval_set, eval_weights - def min_max_pred(self, pred_df: pd.DataFrame) -> tuple[float, float]: + def min_max_pred( + self, + pred_df: pd.DataFrame, + fit_live_prediction_candles: int, + label_period_candles: int, + ) -> tuple[float, float]: temperature = float( self.freqai_info.get("prediction_thresholds_temperature", 135.0) ) - min_pred = smoothed_min( - pred_df[EXTREMA_COLUMN], - temperature=temperature, - ) - max_pred = smoothed_max( - pred_df[EXTREMA_COLUMN], - temperature=temperature, - ) + extrema = pred_df[EXTREMA_COLUMN].iloc[ + -( + (fit_live_prediction_candles // label_period_candles) + * label_period_candles + ) : + ] + min_pred = smoothed_min(extrema, temperature=temperature) + max_pred = smoothed_max(extrema, temperature=temperature) return min_pred, max_pred def get_multi_objective_study_best_trial(