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.probabilistic import DeepMarkovModel, BayesianNN, GaussianHMM
from stockpy.neural_network import LSTM, GRU, MLP, BiGRU, BiLSTM
# 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 model instance and fit to training data
predictor = DeepMarkovModel()
predictor.fit(X_train, batch_size=24, epochs=10)
# 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
> ./install.sh
Data downloader
The data downloader is a command-line application located named 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:
-
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.
-
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.
-
Run black before pushing your code for review.
-
Provide menaningful commit messages to help us keeping a good git history.
-
Finally you can submbit your pull request!
License
See the LICENSE file for license rights and limitations (MIT).
stockpy Legal Disclaimer
Please read this legal disclaimer carefully before using stockpy-learn library. By using stockpy-learn library, you agree to be bound by this disclaimer.
stockpy-learn library is provided for informational and educational purposes only and is not intended as a recommendation, offer or solicitation for the purchase or sale of any financial instrument or securities. The information provided in the stockpy-learn library is not to be construed as financial, investment, legal, or tax advice, and the use of any information provided in stockpy-learn library is at your own risk.
stockpy-learn library is not a substitute for professional financial or investment advice and should not be relied upon for making investment decisions. You should consult a qualified financial or investment professional before making any investment decision.
We make no representation or warranty, express or implied, as to the accuracy, completeness, or suitability of any information provided in stockpy, and we shall not be liable for any errors or omissions in such information.
We shall not be liable for any direct, indirect, incidental, special, consequential, or exemplary damages arising from the use of stockpy library or any information provided therein.
stockpy-learn library is provided "as is" without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability, fitness for a particular purpose, or non-infringement.
We reserve the right to modify or discontinue stockpy-learn library at any time without notice. We shall not be liable for any modification, suspension, or discontinuance of stockpy-learn library.
By using stockpy-learn library, you agree to indemnify and hold us harmless from any claim or demand, including reasonable attorneys' fees, made by any third party due to or arising out of your use of stockpy-learn library, your violation of this disclaimer, or your violation of any law or regulation.
This legal disclaimer is governed by and construed in accordance with the laws of Italy, and any disputes relating to this disclaimer shall be subject to the exclusive jurisdiction of the courts of Italy.
If you have any questions about this legal disclaimer, please contact us at silvio.baratto22@gmail.com.
By using stockpy-learn library, you acknowledge that you have read and understood this legal disclaimer and agree to be bound by its terms and conditions.
Project details
Release history Release notifications | RSS feed
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 stockpy-learn-0.1.16.2.tar.gz
.
File metadata
- Download URL: stockpy-learn-0.1.16.2.tar.gz
- Upload date:
- Size: 27.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9e641f0f85736df3b134f5ee7f1cfde8ff28184c6e5c576cfb8267e65c3e005f |
|
MD5 | 7e688d735b6e39cd04d0c5a909725c71 |
|
BLAKE2b-256 | 469c8609467f88e0352dcd2e7cd01328cf1b9d206945051e6eb40c58cf7ea0bf |
Provenance
File details
Details for the file stockpy_learn-0.1.16.2-py3-none-any.whl
.
File metadata
- Download URL: stockpy_learn-0.1.16.2-py3-none-any.whl
- Upload date:
- Size: 34.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d9cb95a15858c118b8a07a22d6597f8ece026d66f2311af1bf8bc6349018362 |
|
MD5 | 61246e85ae3a4f60f0780492b9d7a4ac |
|
BLAKE2b-256 | a8e39b31712870ff26e9e93eeb236c695592f88875cbff40a06e60aa0dc45d26 |