From 916281dcce547da8330d64a2b7ddcdb74f2d25c2 Mon Sep 17 00:00:00 2001 From: th0rntwig Date: Mon, 19 Sep 2022 21:23:59 +0200 Subject: [PATCH] Track inlier-metric params --- freqtrade/freqai/data_kitchen.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/freqtrade/freqai/data_kitchen.py b/freqtrade/freqai/data_kitchen.py index 9fe63ee20..a9484befc 100644 --- a/freqtrade/freqai/data_kitchen.py +++ b/freqtrade/freqai/data_kitchen.py @@ -774,14 +774,21 @@ class FreqaiDataKitchen: def compute_inlier_metric(self, set_='train') -> None: """ - Compute inlier metric from backwards distance distributions. This metric defines how well features from a timepoint fit into previous timepoints. """ - def normalise(dataframe: DataFrame) -> DataFrame: - return (dataframe - dataframe.min()) / (dataframe.max() - dataframe.min()) + def normalise(dataframe: DataFrame, key: str) -> DataFrame: + if set_ == 'train': + min_value = dataframe.min() + max_value = dataframe.max() + self.data[f'{key}_min'] = min_value + self.data[f'{key}_max'] = max_value + else: + min_value = self.data[f'{key}_min'] + max_value = self.data[f'{key}_max'] + return (dataframe - min_value) / (max_value - min_value) no_prev_pts = self.freqai_config["feature_parameters"]["inlier_metric_window"] @@ -827,8 +834,12 @@ class FreqaiDataKitchen: inliers = pd.DataFrame(index=distances.index) for key in distances.keys(): current_distances = distances[key].dropna() - current_distances = normalise(current_distances) - fit_params = stats.weibull_min.fit(current_distances) + current_distances = normalise(current_distances, key) + if set_ == 'train': + fit_params = stats.weibull_min.fit(current_distances) + self.data[f'{key}_fit_params'] = fit_params + else: + fit_params = self.data[f'{key}_fit_params'] quantiles = stats.weibull_min.cdf(current_distances, *fit_params) df_inlier = pd.DataFrame(