Package: gammath-spot
Gammath SPOTStockPrice-OpiningToolset 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 totally different stock analysis and scoring system).How does it do that? It does this in six parts:It provides agammath_stocks_data_scraper.pyapp that scrapes the web to obtain stock information necessary for algorithmic analysis and scoring.It provides agammath_stocks_analyzer_and_scorer.pyapp 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.It provides agammath_stocks_pep.pyapp 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.It provides agammath_stocks_gscores_historian.pyapp that generates gScore and micro-gScores history for correlation and backtesting.It provides agammath_stocks_backtesting.pyapp 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.All the above apps take a watchlist as an input. A sample watch list is provided insample_watchlist.csvthat can be used and updated for your watchlist.It provides agammath_stocks_screener.pyapp that helps screen stocks based on micro-gScores.In addition to all the above tools, it also provides agammath_gui_app.py-- an "all-in-one" application -- that provides a graphical user interface to the toolset.External dependenciesThis project uses following free tools that need to be installed (you can use pip install) to be able to use this tool:numpypandaspandas_datareaderyfinancepykalmanstatsmodelsscikit-learnmatplotlibtextblobtensorflowkeras-tunergymnasiumHOWTO installInstall Python version3.10and then use following commands in your shell for installing gammath-spot:pip install gammath-spot --prefer-binaryIf you want to use CLI (instead of GUI) then you can use docker container. For using prebuilt docker image, please see the the instruction videoshere.WHERE to get source code without installingGet source code from GIT repo. (git clone https://github.com/salylgw/gammath_spot.git).HOWTO build docker image to use CLIGet Docker desktop (for MAC or Windows) or Docker Engine (for Linux) fromhere.Run it.Open terminal (MAC/Linux) or Power Shell (Windows)Use thisDockerfilein the directory where you want to build the image.Rundocker build --no-cache=true --tag=gammathworks/gammath_spot ..HOWTO get prebuilt Gammath SPOT docker image to use CLIRepeat first three steps above.Rundocker pull gammathworks/gammath_spot.HOWTO resolve typical environment issues when using dockerIf running out of space, one could see related error message when pulling docker image. Try runningdocker image prune -fto free up space by removing unused images.If signature mismatch error is seen for a component image when building your own docker image then try usingdocker builder prune -fto remove build cache.Generally speaking, it is a good idea to use latest version of docker desktop.HOWTO to run containerized Gammath SPOT with CLIRun docker desktop/engine that you installed.Open terminal or command prompt.Rundocker 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.Note: You can replace the value for TZ to match your timezone.HOWTO run these appsIf you installed this software to use it with the GUI then run: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.txtshould 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 information on 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.If you want to use the CLI and installed this software then run:gammath_scraper sample_watchlist.csv > log_scraper.txt. Seesample_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.Above step will save the scraper log inlog_scraper.txtand save the scraped, formatted data intickerssub-directory. Running the data scraper is essential to be able to use rest of the tools.If you want to use the CLI and installed this software then run:gammath_scorer sample_watchlist.csv > log_scorer.txt. If not installed but just obtained the source code then go to the directorygammath_spot/gammath_spot/where all the source files are and run:python gammath_stocks_analyzer_and_scorer.py sample_watchlist.csv > log_scorer.txt.Above step will save the scorer log inlog_scorer.txtand all of the Gammath SPOT's analysis and scoring data intickersandtickers/<ticker-symbol>sub-directories. Go totickers/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 intickers/<ticker-symbol>dir that can be checked for details.<ticker-symbol>_signal.txtshows details of the analysis results and<ticker-symbol>_charts.pdfshows the plotted charts. This tool also generates current moving estimated support and resistance lines for the stock and saves<ticker-symbol>_tc.pdfintickers/<ticker-symbol>dir.If you want to use the CLI and want to generate estimated price projection and have installed this software then run:gammath_projector sample_watchlist.csv > log_projector.txt. If not installed but just obtained the source code then go to the directorygammath_spot/gammath_spot/where all the source files are and run:python gammath_stocks_pep.py sample_watchlist.csv > log_projector.txt.Price projection chart and projections are saved intickers/<ticker-symbol>dir. Chart and projection for S&P500 are saved intickersdir.<ticker-symbol>_pep.pdfshows the chart and<ticker-symbol>_pp.csvshows the projected values. A sorted list of moving estimated projected 5Y returns are saved intickers/MPEP.csv.If you want to use the CLI and want to use the multi-purpose single-stock estimator (please note that this is work-in-progress with limited testing) and have installed this software then run: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 directorygammath_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 <item_type> is one of Price or SH_gScore.Estimates and tuning data are saved intickers/<ticker-symbol>dir.<ticker-symbol>_estimated_<item_type>.csvshows the estimated values.If you want to use the CLI and you want to generate historical gscores (for correlation, past performance, backtesting etc.) then you can do so by using the gScores historian tool. Please note that this tool takes a long time to run so limit the watchlist for this tool to few selected stocks that you want to zoom into. If you installed this software then run:gammath_historian sample_watchlist.csv > log_historian.txt. If not installed but just obtained the source code then go to the directorygammath_spot/gammath_spot/where all the source files are and run:python gammath_stocks_gscores_historian.py sample_watchlist.csv > log_historian.txt.You can check thetickers/<ticker-symbol>/<ticker-symbol>_micro_gscores.csv(for stock history based micro-gScores and corresponding total gScore) andtickers/<ticker-symbol>/<ticker-symbol>_gscores_charts.pdfthat shows the plotted charts of price, overall stock history based gScore and micro-gScores.You can do backtesting on provided watchlist. If you want to use the CLI and if you installed this software then run:gammath_backtester sample_watchlist.csv > log_backtester.txt. If not installed but just obtained the source code then go to the directorygammath_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.For each stock, backtester processes (based on a strategy you implement/use) the data collected by scraper app and processes the stock history based gScore/micro-gScores for approximately last 5 years (that were saved from the gscore historian) and saves the backtesting stats intickers/<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 intickers/Todays_Actions.csv.If you want to use the CLI and want to screen stocks based on micro-gScores and have installed this software then run:gammath_screener screener.csv > log_screener.txt. If not installed but just obtained the source code then go to the directorygammath_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 inscreener.csvand the results can be found intickers/screened_watchlist.csv.If you want to use the CLI and want to use the SPOT trade simulator (please note that this is work-in-progress with limited testing) and have installed this software then run:gammath_trading_simulator log_trader.csv > log_screener.txt. If not installed but just obtained the source code then go to the directorygammath_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.HOWTO to get Gammath SPOT data from Docker desktop to your PC/MACRun docker desktopClick on "Volumes"Click on the Volume nameClick on DataScroll down to see tickers directoryMove the cursor to tickers. Notice the three dots on the right. Click on itClick on "Save as"Click on SaveUnzip the tickers.zip fileYou should be able to view files using your favorite programs (e.g. Excel, Acrobat etc)Investment blogIf you want to see a free example of how gScore is being used in manual decision-making then checkoutDIY Investment blog.QuestionsIf you have any questions, then please contact me using thisform.Happy SPOTing!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 thisformindicating your area of interest and expertiseGammath, SPOT and logo showing stylized g(m) are registered trade/service marks.