bench-cli

Bench is a free, open-source command-line tool and dashboard web app for visualizing stock metrics.


Keywords
finance, portfolio, investing, data-science, data-visualization, analytics, dashboards, metrics, cli, dash, data, financial-data, iex-api, iexcloud, plotly-dash, postgresql, python, sql
License
MIT
Install
pip install bench-cli==0.1.6

Documentation

bench-logo

Bench is a free, open-source command-line tool and dashboard web app for visualizing stock metrics.

License: MIT Pypi Soda SQL

bench-logo

Install Bench

Requirements:

  • Python 3.9 or greater
  • PostgreSQL 13.9 or greater

Recommended:

$ pip install bench-cli

You can also install as a dependency within a virtual environment with poetry:

$ poetry add bench-cli

Otherwise, clone the project and in the project directory run:

$ poetry install

Use Bench

Getting Started

IEX Cloud

Sign up for IEX Cloud and get your API token: https://iexcloud.io/

PostgreSQL Database

All you need to do is create a new Postgres database - that's it!

The SQL queries and API calls are executed with $ bench run -- that's where all the magic happens. The SQL queries can be found here.

bench-gif

Commands

$ bench --install-completion zsh # Installs completion for the shell
$ bench --show-completion zsh # Shows completion for the shell
$ bench init # Creates the Bench directory tree at the user's home directory
$ bench init --directory "~/Desktop" # Creates the Bench directory tree at the user's home directory and at specified path
$ bench env # Activates the default .env
$ bench env --use "~/Desktop/bench/envs/.env" # Activates the .env file at the specified path
$ bench add "GOOGL" # adds symbol GOOGL to the watchlist
$ bench remove "FB" # removes symbol FB from the watchlist
$ bench watchlist # Displays a table of symbols in the watchlist
$ bench pipeline -i annual -n 10 # Executes the data pipeline for the last 10 years of annual data (-i or --interval can be annual or quarterly)
$ bench dash # Serves the Dash app at localhost:8050

The directory structure that $ bench init creates should look like:

.
├── envs
└── logs

Environment Configuration

The .env file should look like this:

# The ENV_PATH is created at ~/bench/envs/.env by default. This variable will also update when a path other than the default is used
ENV_PATH='path_to_env'

# PostgreSQL config
BENCH_DB_HOST=''
BENCH_DB_PORT=''
BENCH_DB_USER=''
BENCH_DB_NAME=''
BENCH_DB_PASSWORD=''

# The version can either be 'test' or 'stable'. Test will use the IEX Cloud Sandbox API and the test token
BENCH_IEX_VERSION=''
BENCH_IEX_TOKEN=''
# IEX Cloud Sandbox API key
BENCH_IEX_TEST_TOKEN=''

# Can provide a list of symbols in a comma-separated list (eg. 'AAPL,GOOGL,MSFT'), or use the add and remove commands
BENCH_WATCHLIST=''

Roadmap

Feature Completed Priority
Add option to $ bench dash to specify a port N ***
Data dictionary of supported metrics N ***
Detailed logger and reports N ***
Tests N ***
Add pipelines for other data sources N *
Job scheduler for the pipeline N *
DMD for the database N *