Stock Price-Opining Toolset is a DIY stock technical analysis software with a Graphical User Interface (GUI) and a Command Line Interface (CLI). It is used to analyze stocks and compute a stock analysis score --- I'm calling it gScore (pronounced as "ga Score") --- to represent Gammath Works' stock analysis score. It indicates the degree to which a stock is trading at a perceived discount or at a perceived premium. SPOT also provides tools to generate price projection, support and resistance lines, stock news headline sentiment analysis score, gScore-history, backtesting and stock screening. Together, these can help in making your own stock-specific buy, sell, hold decisions.
Please note that gScore is NOT G-Score/GScore/G Score/g-score. It differs in its usage, appearance, spelling, pronunciation, meaning and sits on top of its own, totally different stock analysis and scoring system).
gammath_stocks_data_scraper.py
app that scrapes the web to obtain stock information necessary for algorithmic analysis and scoring.gammath_stocks_analyzer_and_scorer.py
app that analyzes the stock data saved on the local storage from step 1 and computes analysis scores using its algorithm to indicate a degree to which the stock is trading at a perceived discount or perceived premium. The Gammath Scores (gScores) range between -1 and +1. gScores closer to -1 indicate that the software perceives the stock to be trading at a premium while gScore closer to +1 indicates that the software preceives the stock to be trading at a discount. In addition, it also estimates current moving support and resistance lines for the stock price and computes stock news headlines sentiment score.gammath_stocks_pep.py
app that estimates and projects price for an approximately five (5) years time frame. There is also an additional work-in-progress (with limited testing) multi-purpose estimator tool that can be used for not-so-linear trending estimates for stock history-based gScore component and Price for individual stocks.gammath_stocks_gscores_historian.py
app that generates gScore and micro-gScores history for correlation and backtesting.gammath_stocks_backtesting.py
app that tests an implemented strategy and generates data to see how respective strategy did. It also generates "today's actions" summary for default strategy. This way the entire stock analysis and decision-making process is fully automated.gammath_stocks_screener.py
app that helps screen stocks based on micro-gScores.gammath_gui_app.py
-- an "all-in-one" application -- that provides a graphical user interface to the toolset.This project uses following free tools that need to be installed (you can use pip install) to be able to use this tool:
Get source code from GIT repo. (git clone https://github.com/salylgw/gammath_spot.git
).
Install Python version 3.12 and then use following command in your shell for installing gammath-spot:
pip install gammath-spot --prefer-binary
Note: If you are a new user or want to use prebuilt Gammath SPOT without dealing with installation then it is recommended to first try out existing docker container and familiarize yourself with the command line interface. This way you can quickly give it a dry run and see how it works without having to worry about any local environment issues. For using prebuilt docker image, please see the instruction videos here and following steps.
docker pull gammathworks/gammath_spot
command on your command promptdocker run -i -t -e TZ="America/Los_Angeles" --mount type=volume,source=gammath_spot_vol,target=/gammath_spot/gammath_spot gammathworks/gammath_spot /bin/bash
pwd
on the command prompt. This should show you "/gammath_spot/gammath_spot". You can run ls
command on the command prompt and it should show you all the files with .py
extension. If you see this then it means you are ready to run the Gammath SPOT commands as described below.gammath_spot_gui > log_gui.txt
. If not installed but just obtained the source code then go to the directory gammath_spot/gammath_spot where all the source files are and run: python gammath_gui_app.py > log_gui.txt
. log_gui.txt
should contain the GUI app's log. The GUI is self-explanatory to run the tools, watchlists operations, screeners, get results etc. When using the GUI, the user need not use the commands in following instructions. However, the information about path where data and results are saved can still be used to directly browse and view the data and results using native apps on the machine such as file explorer, spreadsheet viewer, PDF viewer etc.gammath_scraper sample_watchlist.csv > log_scraper.txt
. See sample_watchlist.csv. If not installed but just obtained the source code then go to the directory gammath_spot/gammath_spot where all the source files are and run: python gammath_stocks_data_scraper.py sample_watchlist.csv > log_scraper.txt
.log_scraper.txt
and save the scraped, formatted data, a reference SP500_watchlist.csv
based on S&P500 in tickers
sub-directory. Running the data scraper is essential to be able to use rest of the tools.gammath_scorer sample_watchlist.csv > log_scorer.txt
. If not installed but just obtained the source code then go to the directory gammath_spot/gammath_spot/
where all the source files are and run: python gammath_stocks_analyzer_and_scorer.py sample_watchlist.csv > log_scorer.txt
.log_scorer.txt
and all of the Gammath SPOT's analysis and scoring data in tickers
and tickers/<ticker-symbol>
sub-directories. Go to tickers/
sub-directory and open <watchlist_name>_overall_gscores.csv
(e.g.: sample_watchlist_overall_gscores.csv
) in your favorite spreadsheet program or a text editor. In <watchlist_name>_overall_gscores.csv
, you should see stocks from your watchlist arranged in ascending order of gScores. In this file, you'll also see sh_gscore (stock history based gscore) and sci_gscore (current info based gacore) that make up the overall/final gscore. If you are not interested in backtesting or sub-component score then you can ignore it. In addition, the stock-specific news headlines sentiment mean score is also computed and included in the <watchlist_name>_overall_gscores.csv
. There is a lot of useful information stored in tickers/<ticker-symbol>
dir that can be checked for details. <ticker-symbol>_signal.txt
shows details of the analysis results and <ticker-symbol>_charts.pdf
shows the plotted charts. This tool also generates current moving estimated support and resistance lines for the stock and saves <ticker-symbol>_tc.pdf
in tickers/<ticker-symbol>
dir.gammath_projector sample_watchlist.csv > log_projector.txt
. If not installed but just obtained the source code then go to the directory gammath_spot/gammath_spot/
where all the source files are and run: python gammath_stocks_pep.py sample_watchlist.csv > log_projector.txt
.tickers/<ticker-symbol>
dir. Chart and projection for S&P500 are saved in tickers
dir. <ticker-symbol>_pep.pdf
shows the chart and <ticker-symbol>_pp.csv
shows the projected values. A sorted list of moving estimated projected 5Y returns are saved in tickers/MPEP.csv
.gammath_estimator <ticker> <item_type> <number of trading days> > log_estimator.txt
. If not installed but just obtained the source code then go to the directory gammath_spot/gammath_spot/
where all the source files are and run: python gammath_rnn_predictor <ticker> <item_type> <number of trading days> > log_estimator.txt
. Here tickers/<ticker-symbol>
dir. <ticker-symbol>_estimated_<item_type>.csv
shows the estimated values.gammath_historian sample_watchlist.csv > log_historian.txt
. If not installed but just obtained the source code then go to the directory gammath_spot/gammath_spot/
where all the source files are and run: python gammath_stocks_gscores_historian.py sample_watchlist.csv > log_historian.txt
.tickers/<ticker-symbol>/<ticker-symbol>_micro_gscores.csv
(for stock history based micro-gScores and corresponding total gScore) and tickers/<ticker-symbol>/<ticker-symbol>_gscores_charts.pdf
that shows the plotted charts of price, overall stock history based gScore and micro-gScores.gammath_backtester sample_watchlist.csv > log_backtester.txt
. If not installed but just obtained the source code then go to the directory gammath_spot/gammath_spot/
where all the source files are and run: python gammath_stocks_backtesting.py sample_watchlist.csv > log_backtester.txt
. You can update the function locally for implementing your own strategy.tickers/<ticker_symbol>/<ticker_symbol>_gtrades_stats_<term>_<risk>_risk_appetite.csv
(term is either short_term or long_term and risk is medium or high). You can check the backtesting stats to understand if the strategy you use worked historically and then decide whether to use that strategy or not. A sorted list of "Today's Actions" summary associated with default backtested strategy is saved in tickers/Todays_Actions.csv
.gammath_screener screener.csv > log_screener.txt
. If not installed but just obtained the source code then go to the directory gammath_spot/gammath_spot/
where all the source files are and run: python gammath_stocks_screener.py screener.csv > log_screener.txt
. Note that the filtering criteria (micro-gScores values) is specified in screener.csv
and the results can be found in tickers/screened_watchlist.csv
.gammath_trading_simulator log_trader.csv > log_screener.txt
. If not installed but just obtained the source code then go to the directory gammath_spot/gammath_spot/
where all the source files are and run: python gammath_spot_rl_gym_env <ticker> <number of trading days> > log_trader.txt
.Typically, path environment variable is automatically updated during installation to include location of console scripts gammath_scraper, gammath_scorer, gammath_projector, gammath_historian, gammath_backtester, gammath_screener, gammath_estimator, gammath_trading_simulator and gammath_spot_gui. However, in certain setups, installation script may not update the path environment variable so then one has to update it manually with path to these console scripts.
Note: Depending on the Docker desktop version and your environment, there might be some variations to following steps. These should give you enough ideas to navigate through the difference(s) (if any).
docker build --no-cache=true --tag=gammathworks/gammath_spot .
(Please note that '.' is part of the command)docker run -i -t -e TZ="America/Los_Angeles" --mount type=volume,source=gammath_spot_vol,target=/gammath_spot/gammath_spot gammathworks/gammath_spot /bin/bash
pwd
on the command prompt. This should show you "/gammath_spot/gammath_spot". You can run ls
command on the command prompt and it should show you all the files with .py
extension. If you see this then it means you are ready to run the Gammath SPOT commands as described in "HOWTO run these apps" section above.docker image prune -f
to free up space by removing unused images.docker builder prune -f
to remove build cache.If you want to see a free example of how gScore is being used in manual decision-making then checkout DIY Investment blog.
If you have any questions, then please contact me using this form.
Note: This version of Gammath SPOT is free and open source. If you would like to contribute to this project through your expertise in Python and/or world of finance/investing then please contact me using this form indicating your area of interest and expertise
Gammath, SPOT and logo showing stylized g(m) are registered trade/service marks.