diff --git a/docs/freqai.md b/docs/freqai.md index 7f02d598948..cda8efe13d6 100644 --- a/docs/freqai.md +++ b/docs/freqai.md @@ -18,7 +18,7 @@ Features include: * **Extensibility** - The generalized and robust architecture allows for incorporating any [machine learning library/method](freqai-configuration.md#using-different-prediction-models) available in Python. Eight examples are currently available, including classifiers, regressors, and a convolutional neural network * **Smart outlier removal** - Remove outliers from training and prediction data sets using a variety of [outlier detection techniques](freqai-feature-engineering.md#outlier-detection) * **Crash resilience** - Store trained models to disk to make reloading from a crash fast and easy, and [purge obsolete files](freqai-running.md#purging-old-model-data) for sustained dry/live runs -* **Automatic data normalization** - [Normalize the data](freqai-feature-engineering.md#feature-normalization) in a smart and statistically safe way +* **Automatic data normalization** - [Normalize the data](freqai-feature-engineering.md#building-the-data-pipeline) in a smart and statistically safe way * **Automatic data download** - Compute timeranges for data downloads and update historic data (in live deployments) * **Cleaning of incoming data** - Handle NaNs safely before training and model inferencing * **Dimensionality reduction** - Reduce the size of the training data via [Principal Component Analysis](freqai-feature-engineering.md#data-dimensionality-reduction-with-principal-component-analysis) diff --git a/freqtrade/freqai/base_models/FreqaiMultiOutputClassifier.py b/freqtrade/freqai/base_models/FreqaiMultiOutputClassifier.py index c83a19bb5d6..d3b5633c320 100644 --- a/freqtrade/freqai/base_models/FreqaiMultiOutputClassifier.py +++ b/freqtrade/freqai/base_models/FreqaiMultiOutputClassifier.py @@ -3,7 +3,7 @@ from sklearn.multioutput import MultiOutputClassifier, _fit_estimator from sklearn.utils.multiclass import check_classification_targets from sklearn.utils.parallel import Parallel, delayed -from sklearn.utils.validation import has_fit_parameter +from sklearn.utils.validation import has_fit_parameter, validate_data from freqtrade.exceptions import OperationalException @@ -36,7 +36,7 @@ def fit(self, X, y, sample_weight=None, fit_params=None): if not hasattr(self.estimator, "fit"): raise ValueError("The base estimator should implement a fit method") - y = self._validate_data(X="no_validation", y=y, multi_output=True) + y = validate_data(self, X="no_validation", y=y, multi_output=True) if is_classifier(self): check_classification_targets(y) diff --git a/freqtrade/freqai/base_models/FreqaiMultiOutputRegressor.py b/freqtrade/freqai/base_models/FreqaiMultiOutputRegressor.py index 32ab0e16d74..525cee52d78 100644 --- a/freqtrade/freqai/base_models/FreqaiMultiOutputRegressor.py +++ b/freqtrade/freqai/base_models/FreqaiMultiOutputRegressor.py @@ -1,6 +1,6 @@ from sklearn.multioutput import MultiOutputRegressor, _fit_estimator from sklearn.utils.parallel import Parallel, delayed -from sklearn.utils.validation import has_fit_parameter +from sklearn.utils.validation import has_fit_parameter, validate_data class FreqaiMultiOutputRegressor(MultiOutputRegressor): @@ -31,7 +31,7 @@ def fit(self, X, y, sample_weight=None, fit_params=None): if not hasattr(self.estimator, "fit"): raise ValueError("The base estimator should implement a fit method") - y = self._validate_data(X="no_validation", y=y, multi_output=True) + y = validate_data(self, X="no_validation", y=y, multi_output=True) if y.ndim == 1: raise ValueError( diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index a890eeb21f7..a24661397f0 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -1283,6 +1283,7 @@ def _rpc_get_logs(limit: int | None) -> dict[str, Any]: r.message + ("\n" + r.exc_text if r.exc_text else ""), ] for r in buffer + if hasattr(r, "message") ] # Log format: diff --git a/requirements-dev.txt b/requirements-dev.txt index 49d10a1db62..b0bb0cabfae 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,7 +7,7 @@ -r docs/requirements-docs.txt coveralls==4.0.1 -ruff==0.8.4 +ruff==0.8.6 mypy==1.14.1 pre-commit==4.0.1 pytest==8.3.4 @@ -22,7 +22,7 @@ isort==5.13.2 time-machine==2.16.0 # Convert jupyter notebooks to markdown documents -nbconvert==7.16.4 +nbconvert==7.16.5 # mypy types types-cachetools==5.5.0.20240820 diff --git a/requirements-hyperopt.txt b/requirements-hyperopt.txt index 024eeecf81e..4b71d9799b7 100644 --- a/requirements-hyperopt.txt +++ b/requirements-hyperopt.txt @@ -2,7 +2,7 @@ -r requirements.txt # Required for hyperopt -scipy==1.14.1 +scipy==1.15.0 scikit-learn==1.6.0 ft-scikit-optimize==0.9.2 filelock==3.16.1 diff --git a/tests/exchange/test_binance.py b/tests/exchange/test_binance.py index 3cd66807483..004d334bb09 100644 --- a/tests/exchange/test_binance.py +++ b/tests/exchange/test_binance.py @@ -1053,3 +1053,6 @@ async def mock_get_trade_hist(pair, *args, **kwargs): assert fetch_trades_cal[2][1]["params"][pagination_arg] != "0" assert fetch_trades_cal[3][1]["params"][pagination_arg] != "0" + + # Clean up event loop to avoid warnings + exchange.close()