A package for LSTM-based financial time series forecasting
Project description
LSTM Forecast
Overview
This project implements an LSTM-based model for predicting cryptocurrency prices. It includes features for data loading, preprocessing, model training, hyperparameter optimization, backtesting, and API deployment.
Table of Contents
Project Structure
.
├── LICENSE
├── README.md
├── config.json
├── data/
├── docs/
├── logs/
├── models/
│ ├── checkpoints/
│ └── optuna/
├── png/
├── pyproject.toml
├── reports/
├── requirements.txt
├── setup.py
├── src/
│ └── lstm_forecast/
│ ├── __init__.py
│ ├── api/
│ ├── backtesting/
│ ├── cli.py
│ ├── config.py
│ ├── data_loader.py
│ ├── early_stopping.py
│ ├── feature_engineering.py
│ ├── feature_selection.py
│ ├── generate_html.py
│ ├── hyperparameter_optimization.py
│ ├── logger.py
│ ├── model.py
│ ├── model_utils.py
│ ├── predict.py
│ ├── predict_utils.py
│ └── train.py
├── static/
└── tests/
Installation
Install with pip
If you want to use the latest stable version, you can install the package directly from PyPI:
pip install lstm-forecast
Install from sources
If you want to use the latest development version or contribute to the project, you can install from the source:
-
Clone the repository:
git clone https://github.com/gianlucamazza/lstm_forecast.git cd lstm_forecast
-
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows use `venv\Scripts\activate`
-
Install the required packages:
pip install -r requirements.txt
-
Install the project in editable mode:
pip install -e .
This way, you'll have the latest version of the code and be able to make changes if needed.
Usage
The lstm_forecast
command-line interface provides several subcommands for different functionalities:
Prepare Data
To prepare the data for training and prediction:
lstm_forecast prepare --config path/to/config.json
Optimize Hyperparameters and Feature Selection
To run hyperparameter optimization and feature selection:
lstm_forecast optimize --config path/to/config.json [OPTIONS]
Options:
--n_trials INTEGER
: Number of trials for hyperparameter tuning (default: 100)--n_feature_trials INTEGER
: Number of trials for feature selection (default: 15)--min_features INTEGER
: Minimum number of features to select (default: 5)--force
: Force re-run of Optuna study
Train the Model
To train the model:
lstm_forecast train --config path/to/config.json
Make Predictions
To make predictions using a trained model:
lstm_forecast predict --config path/to/config.json
Start the API Server
To start the API server:
lstm_forecast server --config path/to/config.json
General Usage
All commands require a configuration file specified with the --config
option. This JSON file contains all the necessary settings for data processing, model architecture, training, and prediction.
For more information on any command, you can use the --help
option:
lstm_forecast [COMMAND] --help
Replace [COMMAND]
with any of the available commands (prepare, optimize, train, predict, server) to see specific help for that command.
Configuration
The config.json
file contains all the necessary settings for data processing, model architecture, training, and prediction. Modify this file to adjust parameters such as:
- Data settings (ticker, date range, features)
- Model settings (hidden size, number of layers, dropout)
- Training settings (epochs, learning rate, batch size)
- Backtesting parameters
API
The project includes a FastAPI-based API for model inference. To start the API server:
uvicorn lstm_forecast.api.app:app --reload
API endpoints:
/predict
: Make predictions using the trained model/backtest
: Run backtesting on historical data
Backtesting
The backtesting module allows you to evaluate the model's performance on historical data. It includes:
- Trading engine simulation
- Performance metrics calculation
- Visualization of results
To run a backtest:
lstm_forecast backtest --config path/to/config.json --model path/to/model.pth
Testing
To run the tests:
pytest tests/
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file lstm_forecast-0.1.2.tar.gz
.
File metadata
- Download URL: lstm_forecast-0.1.2.tar.gz
- Upload date:
- Size: 45.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11de7316fe8c0a74de7b7031b443ff47d4cd25e02d474aa6591a4e48a16d14d4 |
|
MD5 | 2b1cfdba12ef69d93711c5b35e98ee8e |
|
BLAKE2b-256 | b9d743e3389ec77ac20bf9eeb6999502eedb1d92a34f715a0788e59bd09e85db |
File details
Details for the file lstm_forecast-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: lstm_forecast-0.1.2-py3-none-any.whl
- Upload date:
- Size: 52.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 126189113bcaa01fe04b0a449c280fb0476e55817d22c7ce08c29da7ed6f832f |
|
MD5 | 1e220a7c4e970d05c9b55e322d7aae47 |
|
BLAKE2b-256 | 25023b23ff44f47d25faeffc2361f7980c76032a5a517dc039470774f5fc120e |