Metadata-Version: 2.1
Name: patternity
Version: 0.1.0
Summary: Predict stock prices using a deterministic algorithm inspired by LSTM, focusing on pattern recognition in historical data.
Author: Artyom Vancyan
Author-email: artyom.vancyan2000@gmail.com
License: MIT
Project-URL: Source Code, https://github.com/ArtyomVancyan/patternity/
Keywords: finance,crypto,trading,pattern,prediction,stock,forex,lstm,deterministic
Platform: unix
Platform: linux
Platform: osx
Platform: win32
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy >=1.26.0
Requires-Dist: matplotlib >=3.8.0
Requires-Dist: yfinance >=0.2.33
Requires-Dist: python-binance >=1.0.17

> [!CAUTION]  
> This project is intended for educational purposes only and does not constitute financial advice. The stock price
> predictions generated by this software are not guaranteed to be accurate and should not be relied upon for making
> investment decisions. The authors of this project are not responsible for any financial losses incurred as a result of
> using this software.

# PATTERNITY

This project focuses on predicting stock prices using a deterministic algorithm inspired by the LSTM model of deep
learning. Unlike traditional statistical models, this approach leverages the power of pattern recognition to identify
and repeat the most similar historical patterns in stock price data, with visualizations inspired by Google Finance
charts.

## Usage

```bash
python3 -m pip install patternity
```

Patterity comes with collector functions to get historical data of an instrument. The following example demonstrates how
to predict and plot the price of Bitcoin. For stocks, you can use the `get_stock` function instead. The `Pattern`
class (core) is used to predict the price of an instrument and has the following arguments.

- `history` - Historical data of an instrument (required).
- `window` - The minimum length of the pattern window to be considered. (optional)
- `progress` - Callback function to track the progress of the prediction. Recommended for large historical data.

```python
from patternity import Pattern, get_crypto
from rich.progress import track

if __name__ == "__main__":
    history = get_crypto("BTCUSDT", depth=200)
    pattern = Pattern(history, progress=track)
    pattern.predict()
    pattern.plot()
```

If everything is set up correctly, you should see a plot similar to the one below. If nothing was predicted, try on
larger historical data. Also, you can change the `window` parameter to adjust the minimum length of the pattern to be
recognized. The higher the `window`, the more accurate the prediction will be and longer it will take to compute.

![](https://github.com/user-attachments/assets/516c5acb-8324-4af1-9a7f-869acd185fb8)

## Contribute

Any contribution is welcome. Don't hesitate to open an issue or a discussion if you have any questions not covered by
the documentation. Please open a pull request if you have any ideas or suggestions on optimizing the algorithm.

## License

Copyright (C) 2024 Artyom Vancyan. [MIT](https://github.com/ArtyomVancyan/patternity/blob/master/LICENSE)
