Bench is a free, open-source command-line tool and dashboard web app for visualizing stock metrics.
[TOC]
Install Bench
Requirements:
- Python 3.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.
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 | * |
Release files for bench-cli 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bench-cli-0.1.6.tar.gz | 35.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bench_cli-0.1.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 72.6 kB
Release files / bench-cli-0.1.6.tar.gz
| Download URL | bench-cli-0.1.6.tar.gz |
|---|---|
| Size | 35.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
58a3cb104435ffa88f136d4dcdfbd1fb10e5e4ca752e502756207703fbe19ed9
|
|
BLAKE2b-256 checksum How to use checksums |
94a3ee34cfafbb43f6802abc8cd89836b1e2ca9b5b9c01c52ff23e39a233642d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.10 CPython/3.9.7 Darwin/20.6.0
|
Release files / bench_cli-0.1.6-py3-none-any.whl
| Download URL | bench_cli-0.1.6-py3-none-any.whl |
|---|---|
| Size | 37.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4c37e66a301f7b382a4c17e1f1c04b6954e173d5041d99ec1fadc9ea8f3ea3b3
|
|
BLAKE2b-256 checksum How to use checksums |
9044f9b2bd63c34c184d5820ae580f0e8eab2af9e8a1b6f0e36168a4735d1f08
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.1.10 CPython/3.9.7 Darwin/20.6.0
|