Skip to content

CMaheshBL/Stocks-Pattern-Analyzer

 
 

Repository files navigation

Stocks Pattern Analyzer

homepage

As I am not a a frontend guy, the client does not look good at all on mobile devices. This is the best I could do. Help is greatly appreciated.

Run it locally

Included stocks:

  • All S&P500 companies
  • You can add additional ones with the symbols.txt

Build & Run with Docker

(Execute these in the root folder of the project)

# Build the image
$ docker build -t stock -f docker/Dockerfile .
# Run it
$ docker run --rm --name stock -v $(pwd):/code -p 8050:8050 stock start.sh

After this you can access it at localhost:8050

Disclaimer: in a proper setup you would create 2 different images, on for the RestAPI and one for the Client App. Then with a docker-compoase.yml you could create the services. But just like with Heroku, this is a toy and local deployment, so I won't do fancy stuff here.

Run directly

  • python rest_api.py
    • Wait until the data creation and search model creation is done (1-2 mins)
  • python dash_app.py
    • The environment variable $REST_API_URL controls the connection with the RestAPI. It should be the base URL
  • Enjoy 😎

Deployment to Heroku (toy deployment)

First of all, this is a mono-repo which is not ideal, but the deployment is just an example. This is why a multi-buildpack solution is used with heroku-community/multi-procfile.

$ heroku create stock-restapi --remote restapi
$ heroku buildpacks:add -a stock-restapi heroku/python
$ heroku buildpacks:add -a stock-restapi -i 1 heroku-community/multi-procfile
$ heroku config:set -a stock-restapi PROCFILE=Procfile_restapi
$ git push restapi master
$
$ heroku create stock-dash-client --remote dash
$ heroku buildpacks:add -a stock-dash-client heroku/python
$ heroku buildpacks:add -a stock-dash-client -i 1 heroku-community/multi-procfile
$ heroku config:set -a stock-dash-client PROCFILE=Procfile_dash
$ heroku config:set -a stock-dash-client REST_API_URL=https://stock-restapi.herokuapp.com --> this is the URL where we can reach the RestAPI
$ git push dash master

Heroku Files:

  • runtime.txt describes the Python version
  • Procfile_restapi Heroku Procfile for the RestAPI app
  • Procfile_dash Heroku Procfile for the Dash Client app

TODOs

  • Backend
    • Proper logging and getting rid of prints
    • RAM and Speed measurements for the different Search Models
  • Frontend
    • React frontend instead of the dash app

About

This tool should help discover different patterns based on similarity measures in historical (financial) data

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 73.4%
  • CSS 25.6%
  • Other 1.0%