From 9c051958a6fcef8ce2055ce984e82363fe00639d Mon Sep 17 00:00:00 2001 From: lolong Date: Tue, 19 Jul 2022 17:49:18 +0200 Subject: [PATCH] Feat/freqai (#7105) Vectorize weight setting, log training dates Co-authored-by: robcaulk --- freqtrade/freqai/data_kitchen.py | 9 +++------ .../freqai/prediction_models/BaseRegressionModel.py | 6 +++++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/freqtrade/freqai/data_kitchen.py b/freqtrade/freqai/data_kitchen.py index 02b121134..5c05d94e0 100644 --- a/freqtrade/freqai/data_kitchen.py +++ b/freqtrade/freqai/data_kitchen.py @@ -680,12 +680,9 @@ class FreqaiDataKitchen: Set weights so that recent data is more heavily weighted during training than older data. """ - - weights = np.zeros(num_weights) - for i in range(1, len(weights)): - weights[len(weights) - i] = np.exp( - -i / (self.config["freqai"]["feature_parameters"]["weight_factor"] * num_weights) - ) + wfactor = self.config["freqai"]["feature_parameters"]["weight_factor"] + weights = np.exp( + - np.arange(num_weights) / (wfactor * num_weights))[::-1] return weights def append_predictions(self, predictions, do_predict, len_dataframe): diff --git a/freqtrade/freqai/prediction_models/BaseRegressionModel.py b/freqtrade/freqai/prediction_models/BaseRegressionModel.py index f9a9bb69f..ffe30ef2a 100644 --- a/freqtrade/freqai/prediction_models/BaseRegressionModel.py +++ b/freqtrade/freqai/prediction_models/BaseRegressionModel.py @@ -39,7 +39,7 @@ class BaseRegressionModel(IFreqaiModel): :model: Trained model which can be used to inference (self.predict) """ - logger.info("--------------------Starting training " f"{pair} --------------------") + logger.info("-------------------- Starting training " f"{pair} --------------------") # filter the features requested by user in the configuration file and elegantly handle NaNs features_filtered, labels_filtered = dk.filter_features( @@ -49,6 +49,10 @@ class BaseRegressionModel(IFreqaiModel): training_filter=True, ) + start_date = unfiltered_dataframe["date"].iloc[0].strftime("%Y-%m-%d") + end_date = unfiltered_dataframe["date"].iloc[-1].strftime("%Y-%m-%d") + logger.info(f"-------------------- Training on data from {start_date} to " + f"{end_date}--------------------") # split data into train/test data. data_dictionary = dk.make_train_test_datasets(features_filtered, labels_filtered) if not self.freqai_info.get('fit_live_predictions', 0):