Skip to main content

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:

  1. Clone the repository:

    git clone https://github.com/gianlucamazza/lstm_forecast.git
    cd lstm_forecast
    
  2. Create a virtual environment:

    python -m venv venv
    source venv/bin/activate  # On Windows use `venv\Scripts\activate`
    
  3. Install the required packages:

    pip install -r requirements.txt
    
  4. 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

lstm_forecast-0.1.2.tar.gz (45.5 kB view details)

Uploaded Source

Built Distribution

lstm_forecast-0.1.2-py3-none-any.whl (52.2 kB view details)

Uploaded Python 3

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

Hashes for lstm_forecast-0.1.2.tar.gz
Algorithm Hash digest
SHA256 11de7316fe8c0a74de7b7031b443ff47d4cd25e02d474aa6591a4e48a16d14d4
MD5 2b1cfdba12ef69d93711c5b35e98ee8e
BLAKE2b-256 b9d743e3389ec77ac20bf9eeb6999502eedb1d92a34f715a0788e59bd09e85db

See more details on using hashes here.

File details

Details for the file lstm_forecast-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for lstm_forecast-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 126189113bcaa01fe04b0a449c280fb0476e55817d22c7ce08c29da7ed6f832f
MD5 1e220a7c4e970d05c9b55e322d7aae47
BLAKE2b-256 25023b23ff44f47d25faeffc2361f7980c76032a5a517dc039470774f5fc120e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page