π
Gamestonk Terminal The next best thing after Bloomberg Terminal. #weliketheterminal
βͺ ROADMAP Β Β· Β FEATURES Β»
Report Bug Β· Suggest Improvement Β· Request Feature
Table of Contents
About The Project
How it started:
Gamestonk Terminal is an awesome stock and crypto market terminal that has been developed for fun, while I saw my GME shares tanking. But hey, I like the stock
How it's going:
Gamestonk Terminal provides a modern Python-based integrated environment for investment research, that allows the average joe retail trader to leverage state-of-the-art Data Science and Machine Learning technologies.
As a modern Python-based environment, GamestonkTerminal opens access to numerous Python data libraries in Data Science (Pandas, Numpy, Scipy, Jupyter), Machine Learning (Pytorch, Tensorflow, Sklearn, Flair), and Data Acquisition (Beautiful Soup, and numerous third-party APIs).
Donation
GST is a completely free open-source terminal. My personal goal has always been to keep this terminal available for everyone to use at zero cost.
Lately, some developers have been helping me in this endeavour. As you can probably tell from the git history, the terminal has been increasing in features/robustness at a really fast pace. Since none of us are getting paid to do so, and we all have 9-5 jobs, it's hard to onbard people to work towards the cause. On a personal level, I stopped investing since the repository was made public, since I spend all my spare time working on it, and don't have time left for DD.
There are many ways to help support GST. If technical development or support are one of your strengths, join our discord. Otherwise, you could certainly help us by providing a donation to our coinbase crypto wallet: 3Pfx7NwGgmZsk7hQJxzHdp5rGBftUHVTiM.
Sharing the terminal with friends and family would also go a long way. Thanks in advance ape.
Getting Started
Install
If you'd like to see a video recording of the installation process, @JohnnyDankseed has made one available here.
The user @mchow01 has made available a tutorial on how to run the terminal on an Apple M1.
This project supports Python 3.7, 3.8 and 3.9.
Our current recommendation is to use this project with Anaconda's Python distribution - either full Anaconda3 Latest or Miniconda3 Latest. Several features in this project utilize Machine Learning. Machine Learning Python dependencies are optional. If you decided to add Machine Learning features at a later point, you will likely have better user experience with Anaconda's Python distribution.
- Star the project
- Install Anaconda
Confirm that you have it with: conda -V
. The output should be something along the lines of: conda 4.9.2
- If on Windows, install/update Microsoft C++ Build Tools from here: https://visualstudio.microsoft.com/visual-cpp-build-tools/
- Install git
conda install -c anaconda git
- Clone the Project
- Via HTTPS:
git clone https://github.com/GamestonkTerminal/GamestonkTerminal.git
- via SSH:
git clone [email protected]:GamestonkTerminal/GamestonkTerminal.git
- Navigate into the project's folder
cd GamestonkTerminal/
- Create Environment
You can name the environment whatever you want. Although you could use names such as: welikethestock
, thisistheway
or diamondhands
, we recommend something simple and intuitive like gst
. This is because this name will be used from now onwards.
conda env create -n gst --file build/conda/conda-3-8-env.yaml
- Activate the virtual environment
conda activate gst
Note: At the end, you can deactivate it with: conda deactivate
.
- Install poetry dependencies
poetry install
If you are having trouble with Poetry (e.g. on a Windows system), simply install requirements.txt with pip
pip install -r requirements.txt
- You're ready to Gamestonk it!
python terminal.py
- (Windows - Optional) Speeding up opening process in the future
After you've installed Gamestonk Terminal, you'll find a file named "Gamestonk Terminal.bat". You can use this file to open Gamestonk Terminal quicker. This file can be moved to your desktop if you'd like. If you run into issues while trying to run the batch file. If you run into issues with the batch files, edit the file and check to see if the directories match up. This file assumes you used the default directories when installing.
NOTE: When you close the terminal and re-open it, the only command you need to re-call is conda activate gst
before you call python terminal.py
again.
TROUBLESHOOT: If you are having troubles to install, check our newest troubleshoot page
Advanced User Install - Machine Learning
If you are an advanced user and use other Python distributions, we have several requirements.txt documents that you can pick from to download project dependencies.
If you are using conda instead of build/conda/conda-3-8-env.yaml configuration file in Step 5, use build/conda/conda-3-8-env-full.
Note: The libraries specified in the requirements.txt file have been tested and work for the purpose of this project, however, these may be older versions. Hence, it is recommended for the user to set up a virtual python environment prior to installing these. This allows to keep dependencies required by different projects in separate places.
If you would like to use optional Machine Learning features:
- Update your feature_flags.py with:
ENABLE_PREDICT = os.getenv("GTFF_ENABLE_PREDICT") or True
- Install optional ML features dependencies:
poetry install -E prediction
If you would like to set up a docker image:
- Build the docker:
docker build .
- Run it:
docker run -it gamestonkterminal:dev
Note: The problem with docker is that it won't output matplotlib figures.
Update Terminal
The terminal is constantly being updated with new features and bug fixes, hence, for your terminal to be update, you can run:
git pull
to get the latest changes.
If this fails due to the fact that you had modified some python files, and there's a conflict with the updates, you can use:
git stash
Then, re-run poetry install
or pip install -r requirements.txt
to get any new dependencies.
Once installation is finished, you're ready to gamestonk.
If you stashed
your changes previously, you can un-stash them with:
git stash pop
API Keys
The project is build around several different API calls, whether it is to access historical data or financials.
These are the ones where a key is necessary:
- Alpha Vantage: https://www.alphavantage.co
- Binance: https://binance.us (US) / https://binance.com (Outside US)
- CoinMarketCap API: https://coinmarketcap.com/api
- Degiro API : https://www.degiro.fr
- FRED: https://fred.stlouisfed.org/docs/api/api_key.html
- Financial Modeling Prep: https://financialmodelingprep.com/developer
- Finhub API: https://finnhub.io
- News API: https://newsapi.org
- Oanda API: https://developer.oanda.com
- Polygon: https://polygon.io
- Quandl: https://www.quandl.com/tools/api
- Reddit: https://www.reddit.com/prefs/apps
- Tradier: https://developer.tradier.com/getting_started
- Twitter: https://developer.twitter.com
When these are obtained, don't forget to update config_terminal.py.
Alternatively, you can also set them to the following environment variables:
Website | Variables |
---|---|
Alpha Vantage | GT_API_KEY_ALPHAVANTAGE |
Binance | GT_API_BINANCE_KEY GT_API_BINANCE_SECRET |
CoinMarketCap | GT_CMC_API_KEY GT_CMC_API_KEY |
DEGIRO | GT_DG_USERNAME GT_DG_PASSWORD GT_DG_TOTP_SECRET |
FRED | GT_API_FRED_KEY |
Financial Modeling Prep | GT_API_KEY_FINANCIALMODELINGPREP |
Finhub | GT_API_FINNHUB_KEY |
News | GT_API_NEWS_TOKEN |
Oanda | GT_OANDA_TOKEN GT_OANDA_ACCOUNT |
Polygon | GT_API_POLYGON_KEY |
Quandl | GT_API_KEY_QUANDL |
GT_API_REDDIT_CLIENT_ID GT_API_REDDIT_CLIENT_SECRET GT_API_REDDIT_USERNAME GT_API_REDDIT_USER_AGENT GT_API_REDDIT_PASSWORD |
|
Tradier | GT_TRADIER_TOKEN |
GT_API_TWITTER_KEY GT_API_TWITTER_SECRET_KEY GT_API_TWITTER_BEARER_TOKEN |
Example:
export GT_API_REDDIT_USERNAME=SexyYear
Environment variables can also be set in a .env
file at the top of the repo. This file is ignored by git so your API keys will stay secret. The above example stored in .env
would be:
GT_API_REDDIT_USERNAME=SexyYear
Note that the GT_API_REDDIT_USER_AGENT
is the name of the script that you set when obtained the Reddit API key. Note that it is not necessary to have a valid Alpha Vantage key to get daily OHLC values.
Usage
Start by loading a ticker of interest:
load -t GME
The menu will expand to all its menus since a ticker has been loaded.
View the historical data of this stock:
view
Slice the historical data by loading ticker and setting a starting point, e.g.
load -t GME -s 2020-06-04
Enter in technical analysis menu with
ta
and run a SMA with:
sma
However, imagine that you wanted to change the length of the window because you don't want to go long but do a swing, and therefore a smaller window is necessary. Check what settings are available on the SMA command:
sma -h
Once that has been seen, set the parameters that you want after flagging them. In this case, to change length window to 10, we would have to do:
sma -l 10
Example:
Contributing
There are 3 main ways of contributing to this project.
For a 1h coding session where the architecture of the repo is explained while a new feature is added, check https://www.youtube.com/watch?v=9BMI9cleTTg.
Become a Contributor
Recommended if you bought the dip, and the share price keeps dipping. You may as well keep yourself busy while stonks go up.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Install the pre-commit hooks by running:
pre-commit install
. Any time you commit a change, linters will be run automatically. On changes, you will have to re-commit. - Push to your Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Become a Karen
Recommended if you adopted a strategy of buying high and selling low.
We are interested in your view on what sort of features would make you buy even higher and selling even lower.
Also, if somehow you're sitting in several mils due to this terminal, don't forget to report a bug so that the team can fix, and keep the old ways.
Join the
If red is your favourite color, and you never sell for a loss.
Welcome to the club, and feel free to support the developers behind this amazing open-source project.
License
Distributed under the MIT License. See LICENSE for more information.
Disclaimer
"A few things I am not. I am not a cat. I am not an institutional investor, nor am I a hedge fund. I do not have clients and I do not provide personalized investment advice for fees or commissions." DFV
Trading in financial instruments involves high risks including the risk of losing some, or all, of your investment amount, and may not be suitable for all investors. Before deciding to trade in financial instrument you should be fully informed of the risks and costs associated with trading the financial markets, carefully consider your investment objectives, level of experience, and risk appetite, and seek professional advice where needed. The data contained in GST is not necessarily accurate. GST and any provider of the data contained in this website will not accept liability for any loss or damage as a result of your trading, or your reliance on the information displayed.
Contacts
Didier Rodrigues Lopes - [email protected]
Artem Veremy - [email protected]
James Maslek - [email protected]
Feel free to share loss porn, memes or any questions at:
- Discord: https://discord.gg/Up2QGbMKHY
- Twitter: @gamestonkt
Shoutout to:
- pll_llq, Chavithra and hinxx : Working towards a GUI using Qt.
- Get in touch in our #gui discord channel.
- 1lluz10n, crspy, and martiaaz : Working on our landing page https://gamestonkterminal.netlify.app.
- Get in touch in our #landing-page discord channel.
- Meghan Hone : Managing Twitter account
- alokan : Responsible by developing
Forex
menu - Chavithra and Deel18 : for Degiro's integration.
- Traceabl3 : By adding several preset screeners
Other Contributors
cclauss, shadycuz, lolrenx, buzzCraft, clothespin, arcutright, jperkins12, nodesocket, akx, sigaloid, pchaganti, danielorf, henrytdsimmons, RowanHarley, sabujp, qTipTip, gmerrall, bfxavier, donno2048, noufal85, rmassoth, benkulbertis, ricleal-fugue, sandsturm, breck7, derrickknox, daxxog, Felixkruemel, gvikei, backhand, ntoscano, nickodell, grvsaxena419, priteshkeleven, kaitj
Acknowledgments
- VICE article - Gamestonk Terminal Is a DIY, Meme Stock Version of Bloomberg Terminal
- Daily Fintech article - Never underestimate Bloomberg, but here are 5 reasons why the Gamestonk Terminal is a contender
- HackerNews - Show HN: Canβt afford Bloomberg Terminal? No prob, I built the next best thing
- Reddit r/algotrading - Gamestonk Terminal: The next best thing after Bloomberg Terminal.
- Reddit r/Python - Gamestonk Terminal: The equivalent to an open-source python Bloomberg Terminal.
- Reddit r/Superstonk - Move over Bloomberg Terminal, here comes Gamestonk Terminal