Skip to main content

Machine Learning library to make stock market prediction

Project description

Table of contents

Description

stockpy is a Python Machine Learning library designed to facilitate stock market data analysis and predictions. It currently supports the following algorithms:

  • Long Short Term Memory (LSTM)
  • Bidirectional Long Short Term Memory (BiLSTM)
  • Gated Recurrent Unit (GRU)
  • Bidirectional Gated Recurrent Unit (BiGRU)
  • Multilayer Perceptron (MLP)
  • Gaussian Hidden Markov Models (GaussianHMM)
  • Bayesian Neural Networks (BayesianNN)
  • Deep Markov Model (DeepMarkovModel)

stockpy can be used to perform a range of tasks such as detecting relevant trading patterns, making predictions and generating trading signals.

Usage

To use stockpy and perform predictions on stock market data, start by importing the relevant models from the stockpy.neural_network and stockpy.probabilistic modules. The library can be used with various types of input data, such as CSV files, pandas dataframes and numpy arrays.

To demonstrate the usage of stockpy, we can perform the following code to read a CSV file containing stock market data for Apple (AAPL), split the data into training and testing sets, fit an LSTM model to the training data, and use the model to make predictions on the test data:

from sklearn.model_selection import train_test_split
import pandas as pd
from stockpy.neural_network import LSTM

# read CSV file and drop missing values
df = pd.read_csv('AAPL.csv', parse_dates=True, index_col='Date').dropna(how="any")

# split data into training and testing sets
X_train, X_test = train_test_split(df, test_size=0.1, shuffle=False)

# create LSTM model instance and fit to training data
predictor = LSTM()
predictor.fit(X_train, batch_size=24, epochs=10)

# use LSTM model to make predictions on test data
y_pred = predictor.predict(X_test)

The above code can be applied to all models in the library, just make sure to import from the correct location, either stockpy.neural_network or stockpy.probabilistic.

Dependencies and installation

stockpy requires the modules numpy, torch, pyro-ppl. The code is tested for Python 3. It can be installed using pip or directly from the source cod.

Installing via pip

To install the package:

> pip install stockpy-learn

To uninstall the package:

> pip uninstall stockpy-learn

Installing from source

You can clone this repository on your local machines using:

> git clone https://github.com/SilvioBaratto/stockpy

To install the package:

> cd stockpy
> python setup.py install

Data downloader

The data downloader is a command-line application located in the cmd folder under the name of data.py, which can be used to download and update stock market data. The downloader has been tested and verified using Ubuntu 22.04 LTS.

Parameter Explanation
--download Download all the S&P 500 stocks. If no start and end dates are specified, the default range is between "2017-01-01" and today's date.
--stock Download a specific stock specified by the user. If no start and end dates are specified, the default range is between "2017-01-01" and today's date.
--update Update all the stocks present in the folder containing the files. It is possible to update the files to any range of dates. If a stock wasn't listed before a specific date, it will be downloaded from the day it enters the public market.
--update.stock Update a specific stock specified by the user. It is possible to update the files to any range of dates by specifying the start and end dates.
--start Specify the start date for downloading or updating data.
--end Specify the end date for downloading or updating data.
--delete Delete all files present in the files folder.
--delete-stock Delete a specific stock present in the files folder.
--folder Choose the folder where to read or download all the files.

Usage example

Below are some examples of how to use the downloader:

# Download all the data between "2017-01-01" and "2018-01-01"
python3 data.py --download --start="2017-01-01" --end="2018-01-01"

# Download data for Apple (AAPL) from "2017-01-01" to today's date
python3 data.py --stock="AAPL" --end="today"

# Update all the data between "2014-01-01" and "2020-01-01"
python3 data.py --update --start="2014-01-01" --end="2020-01-01"

# Update a specific stock from "2014-01-01" until the last day present in the stock file
python3 data.py --update-stock --stock="AAPL" --start="2014-01-01"

# Download all the data between "2017-01-01" and today's date, 
# choosing the folder where to download the files
python3 data.py --download --folder="../../example"

Authors and acknowledgements

stockpy is currently developed and mantained by Silvio Baratto. You can contact me at:

  • silvio.baratto22 at gmail.com

Reporting a bug

The best way to report a bug is using the Issues section. Please, be clear, and give detailed examples on how to reproduce the bug (the best option would be the graph which triggered the error you are reporting).

How to contribute

We are more than happy to receive contributions on tests, documentation and new features. Our Issues section is always full of things to do.

Here are the guidelines to submit a patch:

  1. Start by opening a new issue describing the bug you want to fix, or the feature you want to introduce. This lets us keep track of what is being done at the moment, and possibly avoid writing different solutions for the same problem.

  2. Fork the project, and setup a new branch to work in (fix-issue-22, for instance). If you do not separate your work in different branches you may have a bad time when trying to push a pull request to fix a particular issue.

  3. Run black before pushing your code for review.

  4. Provide menaningful commit messages to help us keeping a good git history.

  5. Finally you can submbit your pull request!

License

See the LICENSE file for license rights and limitations (MIT).

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

stockpy-learn-0.1.9.tar.gz (36.7 kB view details)

Uploaded Source

Built Distribution

stockpy_learn-0.1.9-py3-none-any.whl (61.1 kB view details)

Uploaded Python 3

File details

Details for the file stockpy-learn-0.1.9.tar.gz.

File metadata

  • Download URL: stockpy-learn-0.1.9.tar.gz
  • Upload date:
  • Size: 36.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.12

File hashes

Hashes for stockpy-learn-0.1.9.tar.gz
Algorithm Hash digest
SHA256 7726550c9d96e2b1feb34ffec31c92e40fcdba55d00783a23e87c2448eb63448
MD5 fcced23a26568174ac59d651dc056a97
BLAKE2b-256 355669f9c890f8cf1bf5673c3be476c03bbd6daaa6fb35392b269cc5028677c9

See more details on using hashes here.

Provenance

File details

Details for the file stockpy_learn-0.1.9-py3-none-any.whl.

File metadata

File hashes

Hashes for stockpy_learn-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 7b195bbe0e6a1e48a810ae7ed0fc0e015c63d7852cea67bc550a2af5833ab0a3
MD5 1592d7692d9f5b870565d5d326ce600c
BLAKE2b-256 877e43ebac62649a0302a5a8d9e024369ab4b2f198c5e81f5a68bb7a8a785f3a

See more details on using hashes here.

Provenance

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