diff --git a/freqtrade/freqai/base_models/BaseRegressionModel.py b/freqtrade/freqai/base_models/BaseRegressionModel.py index 495ee5e39..75958f4c9 100644 --- a/freqtrade/freqai/base_models/BaseRegressionModel.py +++ b/freqtrade/freqai/base_models/BaseRegressionModel.py @@ -6,6 +6,7 @@ import numpy as np import numpy.typing as npt from pandas import DataFrame +from freqtrade.exceptions import DependencyException from freqtrade.freqai.data_kitchen import FreqaiDataKitchen from freqtrade.freqai.freqai_interface import IFreqaiModel @@ -63,12 +64,19 @@ class BaseRegressionModel(IFreqaiModel): dd["train_labels"], _, _ = dk.label_pipeline.fit_transform(dd["train_labels"]) if self.freqai_info.get("data_split_parameters", {}).get("test_size", 0.1) != 0: - (dd["test_features"], dd["test_labels"], dd["test_weights"]) = ( - dk.feature_pipeline.transform( - dd["test_features"], dd["test_labels"], dd["test_weights"] + if dd["test_labels"].shape[0] == 0: + raise DependencyException( + f"{pair}: test set is empty after filtering. " + f"This is usually caused by overly strict SVM thresholds or insufficient data. " + f"Try reducing 'test_size' or relaxing your SVM conditions." ) - ) - dd["test_labels"], _, _ = dk.label_pipeline.transform(dd["test_labels"]) + else: + (dd["test_features"], dd["test_labels"], dd["test_weights"]) = ( + dk.feature_pipeline.transform( + dd["test_features"], dd["test_labels"], dd["test_weights"] + ) + ) + dd["test_labels"], _, _ = dk.label_pipeline.transform(dd["test_labels"]) logger.info( f"Training model on {len(dk.data_dictionary['train_features'].columns)} features"