From 3df6da2889add06e8f61051dcbb2b73d5c6e9415 Mon Sep 17 00:00:00 2001 From: didier Date: Sat, 1 May 2021 00:53:16 +0100 Subject: [PATCH 01/19] Increase robustness of load command --- gamestonk_terminal/main_helper.py | 136 +++++++++++++++++------------- terminal.py | 2 +- 2 files changed, 80 insertions(+), 58 deletions(-) diff --git a/gamestonk_terminal/main_helper.py b/gamestonk_terminal/main_helper.py index 2c813d24a46..526a37c2a60 100644 --- a/gamestonk_terminal/main_helper.py +++ b/gamestonk_terminal/main_helper.py @@ -181,41 +181,40 @@ def load(l_args, s_ticker, s_start, s_interval, df_stock): if not ns_parser: return [s_ticker, s_start, s_interval, df_stock] - except SystemExit: - print("") - return [s_ticker, s_start, s_interval, df_stock] - - # Update values: - s_ticker = ns_parser.s_ticker.upper() - s_start = ns_parser.s_start_date - s_interval = str(ns_parser.n_interval) + "min" - - try: # Daily - if s_interval == "1440min": + if ns_parser.n_interval == 1440: + # Alpha Vantage Source if ns_parser.source == "av": ts = TimeSeries(key=cfg.API_KEY_ALPHAVANTAGE, output_format="pandas") # pylint: disable=unbalanced-tuple-unpacking - df_stock, _ = ts.get_daily_adjusted( + df_stock_candidate, _ = ts.get_daily_adjusted( symbol=ns_parser.s_ticker, outputsize="full" ) - # pylint: disable=no-member - df_stock.sort_index(ascending=True, inplace=True) - # Slice dataframe from the starting date YYYY-MM-DD selected - df_stock = df_stock[ns_parser.s_start_date :] - - elif ns_parser.source == "yf": - df_stock = yf.download( - ns_parser.s_ticker, start=ns_parser.s_start_date, progress=False - ) - # Check that a stock was successfully retrieved - if df_stock.empty: + # Check that loading a stock was not successful + if df_stock_candidate.empty: print("") return [s_ticker, s_start, s_interval, df_stock] - df_stock = df_stock.rename( + # pylint: disable=no-member + df_stock_candidate.sort_index(ascending=True, inplace=True) + + # Slice dataframe from the starting date YYYY-MM-DD selected + df_stock_candidate = df_stock_candidate[ns_parser.s_start_date :] + + # Yahoo Finance Source + elif ns_parser.source == "yf": + df_stock_candidate = yf.download( + ns_parser.s_ticker, start=ns_parser.s_start_date, progress=False + ) + + # Check that loading a stock was not successful + if df_stock_candidate.empty: + print("") + return [s_ticker, s_start, s_interval, df_stock] + + df_stock_candidate = df_stock_candidate.rename( columns={ "Open": "1. open", "High": "2. high", @@ -225,41 +224,57 @@ def load(l_args, s_ticker, s_start, s_interval, df_stock): "Volume": "6. volume", } ) - df_stock.index.name = "date" + df_stock_candidate.index.name = "date" - if df_stock.index[0] > s_start: - s_start = df_stock.index[0] + # Check if start time from dataframe is more recent than specified + if df_stock_candidate.index[0] > pd.to_datetime(ns_parser.s_start_date): + s_start = df_stock_candidate.index[0] + else: + s_start = ns_parser.s_start_date # Intraday else: + + # Alpha Vantage Source if ns_parser.source == "av": ts = TimeSeries(key=cfg.API_KEY_ALPHAVANTAGE, output_format="pandas") # pylint: disable=unbalanced-tuple-unpacking - df_stock, _ = ts.get_intraday( - symbol=ns_parser.s_ticker, outputsize="full", interval=s_interval + df_stock_candidate, _ = ts.get_intraday( + symbol=ns_parser.s_ticker, + outputsize="full", + interval=str(ns_parser.n_interval) + "min", ) + + # Check that loading a stock was not successful + if df_stock_candidate.empty: + print("") + return [s_ticker, s_start, s_interval, df_stock] + # pylint: disable=no-member - df_stock.sort_index(ascending=True, inplace=True) + df_stock_candidate.sort_index(ascending=True, inplace=True) # Slice dataframe from the starting date YYYY-MM-DD selected - df_stock = df_stock[ns_parser.s_start_date :] + df_stock_candidate = df_stock_candidate[ns_parser.s_start_date :] + # Check if start time from dataframe is more recent than specified + if df_stock_candidate.index[0] > pd.to_datetime(ns_parser.s_start_date): + s_start = df_stock_candidate.index[0] + else: + s_start = ns_parser.s_start_date + + # Yahoo Finance Source elif ns_parser.source == "yf": - s_int = s_interval[:-2] + s_int = str(ns_parser.n_interval) + "m" d_granularity = {"1m": 6, "5m": 59, "15m": 59, "30m": 59, "60m": 729} s_start_dt = datetime.utcnow() - timedelta(days=d_granularity[s_int]) s_date_start = s_start_dt.strftime("%Y-%m-%d") - s_start = pytz.utc.localize(s_start_dt) - if s_start_dt > ns_parser.s_start_date: - print( - f"Using Yahoo Finance with granularity {s_int} the starting date is set to: {s_date_start}\n" - ) + # Using Yahoo Finance with granularity {s_int} the starting date is set to: {s_date_start} - df_stock = yf.download( + df_stock_candidate = yf.download( ns_parser.s_ticker, start=s_date_start, progress=False, @@ -268,7 +283,7 @@ def load(l_args, s_ticker, s_start, s_interval, df_stock): ) else: - df_stock = yf.download( + df_stock_candidate = yf.download( ns_parser.s_ticker, start=ns_parser.s_start_date.strftime("%Y-%m-%d"), progress=False, @@ -276,12 +291,17 @@ def load(l_args, s_ticker, s_start, s_interval, df_stock): prepost=ns_parser.b_prepost, ) - # Check that a stock was successfully retrieved - if df_stock.empty: + # Check that loading a stock was not successful + if df_stock_candidate.empty: print("") return [s_ticker, s_start, s_interval, df_stock] - df_stock = df_stock.rename( + if s_start_dt > ns_parser.s_start_date: + s_start = pytz.utc.localize(s_start_dt) + else: + s_start = ns_parser.s_start_date + + df_stock_candidate = df_stock_candidate.rename( columns={ "Open": "1. open", "High": "2. high", @@ -291,26 +311,28 @@ def load(l_args, s_ticker, s_start, s_interval, df_stock): "Volume": "6. volume", } ) - df_stock.index.name = "date" + df_stock_candidate.index.name = "date" - return [s_ticker, s_start, s_interval, df_stock] + s_intraday = (f"Intraday {s_interval}", "Daily")[ns_parser.n_interval == 1440] + + print( + f"Loading {s_intraday} {ns_parser.s_ticker.upper()} stock with starting period {s_start.strftime('%Y-%m-%d')} for analysis.\n" + ) + + return [ + ns_parser.s_ticker.upper(), + s_start, + str(ns_parser.n_interval) + "min", + df_stock_candidate, + ] except Exception as e: - print(e) - print("Either the ticker or the API_KEY are invalids. Try again!\n") + print(e, "\nEither the ticker or the API_KEY are invalids. Try again!\n") return [s_ticker, s_start, s_interval, df_stock] - s_intraday = (f"Intraday {s_interval}", "Daily")[s_interval == "1440min"] - - if s_start: - print( - f"Loading {s_intraday} {s_ticker} stock with starting period {s_start.strftime('%Y-%m-%d')} for analysis." - ) - else: - print(f"Loading {s_intraday} {s_ticker} stock for analysis.") - - print("") - return [s_ticker, s_start, s_interval, df_stock] + except SystemExit: + print("") + return [s_ticker, s_start, s_interval, df_stock] def candle(s_ticker: str, s_start: str): diff --git a/terminal.py b/terminal.py index 6765b0f68f5..c8a6e8b85f6 100644 --- a/terminal.py +++ b/terminal.py @@ -47,7 +47,7 @@ def main(): os.system("") s_ticker = "" - s_start = "" + s_start = "2015-01-01" df_stock = pd.DataFrame() s_interval = "1440min" From 712da6912161b8af9fa186a2dccbb3f15b8cee18 Mon Sep 17 00:00:00 2001 From: didier Date: Sat, 1 May 2021 01:21:48 +0100 Subject: [PATCH 02/19] refactor menus print and goodbye message --- gamestonk_terminal/main_helper.py | 70 +++++++++++++++++++++---------- terminal.py | 17 +++++--- 2 files changed, 61 insertions(+), 26 deletions(-) diff --git a/gamestonk_terminal/main_helper.py b/gamestonk_terminal/main_helper.py index 526a37c2a60..8530c704286 100644 --- a/gamestonk_terminal/main_helper.py +++ b/gamestonk_terminal/main_helper.py @@ -1,5 +1,6 @@ import argparse from sys import stdout +import random from datetime import datetime, timedelta import matplotlib.pyplot as plt import pandas as pd @@ -45,57 +46,58 @@ def print_help(s_ticker, s_start, s_interval, b_is_market_open): print(f"\n{s_intraday} Stock: {s_ticker}") else: print("\nStock: ?") - print(f"Market {('CLOSED', 'OPEN')[b_is_market_open]}.") + print(f"Market {('CLOSED', 'OPEN')[b_is_market_open]}.\n") - print("\nMenus:") print( - " disc discover trending stocks, \t e.g. map, sectors, high short interest" + " > disc discover trending stocks, \t e.g. map, sectors, high short interest" ) print( - " scr screener stocks, \t\t e.g. overview/performance, using preset filters" + " > scr screener stocks, \t\t e.g. overview/performance, using preset filters" ) - print(" mill papermill menu, \t\t\t menu to generate notebook reports") - print(" econ economic data, \t\t\t from: FRED, VIX") - print(" pa portfolio analysis, \t\t supports: robinhood, alpaca, ally ") - print(" crypto cryptocurrencies, \t\t uses coingecko api") + print(" > mill papermill menu, \t\t menu to generate notebook reports") + print(" > econ economic data, \t\t from: FRED, VIX") print( - " po portfolio optimization, \t\t optimal portfolio weights from pyportfolioopt" + " > pa portfolio analysis, \t\t supports: robinhood, alpaca, ally " ) - print(" fx forex menu, \t\t\t forex support through Oanda") + print(" > crypto cryptocurrencies, \t\t uses coingecko api") + print( + " > po portfolio optimization, \t optimal portfolio weights from pyportfolioopt" + ) + print(" > fx forex menu, \t\t\t forex support through Oanda") if s_ticker: print( - " ba behavioural analysis, \t from: reddit, stocktwits, twitter, google" + " > ba behavioural analysis, \t from: reddit, stocktwits, twitter, google" ) print( - " res research web page, \t e.g.: macroaxis, yahoo finance, fool" + " > res research web page, \t e.g.: macroaxis, yahoo finance, fool" ) print( - " ca comparison analysis, \t e.g.: historical, correlation, financials" + " > ca comparison analysis, \t e.g.: historical, correlation, financials" ) print( - " fa fundamental analysis, \t e.g.: income, balance, cash, earnings" + " > fa fundamental analysis, \t e.g.: income, balance, cash, earnings" ) print( - " ta technical analysis, \t e.g.: ema, macd, rsi, adx, bbands, obv" + " > ta technical analysis, \t e.g.: ema, macd, rsi, adx, bbands, obv" ) print( - " bt strategy backtester, \t e.g.: simple ema, ema cross, rsi strategies" + " > bt strategy backtester, \t e.g.: simple ema, ema cross, rsi strategies" ) print( - " dd in-depth due-diligence, \t e.g.: news, analyst, shorts, insider, sec" + " > dd in-depth due-diligence, \t e.g.: news, analyst, shorts, insider, sec" ) print( - " eda exploratory data analysis,\t e.g.: decompose, cusum, residuals analysis" + " > eda exploratory data analysis,\t e.g.: decompose, cusum, residuals analysis" ) print( - " pred prediction techniques, \t e.g.: regression, arima, rnn, lstm, prophet" + " > pred prediction techniques, \t e.g.: regression, arima, rnn, lstm, prophet" ) print( - " ra residuals analysis, \t e.g.: model fit, qqplot, hypothesis test" + " > ra residuals analysis, \t e.g.: model fit, qqplot, hypothesis test" ) print( - " op options info, \t e.g.: volume and open interest" + " > op options info, \t e.g.: volume and open interest" ) print("") @@ -535,3 +537,29 @@ def export(l_args, df_stock): df_stock.to_clipboard() print("") + + +def print_goodbye(): + goodbye_msg = [ + "An informed ape, is a strong ape. ", + "Remember that stonks only go up. ", + "Diamond hands. ", + "Apes together strong. ", + "This is our way. ", + "Keep the spacesuit ape, we haven't reached the moon yet. ", + "I am not a cat. I'm an ape. ", + ] + + goodbye_hr = datetime.now().hour + if goodbye_hr < 5: + goodbye_msg_time = "Go get some rest soldier!" + elif goodbye_hr < 11: + goodbye_msg_time = "Rise and shine baby!" + elif goodbye_hr < 17: + goodbye_msg_time = "Enjoy your day!" + elif goodbye_hr < 23: + goodbye_msg_time = "Tomorrow's another day!" + else: + goodbye_msg_time = "Go get some rest soldier!" + + print(goodbye_msg[random.randint(0, len(goodbye_msg))] + goodbye_msg_time + "\n") diff --git a/terminal.py b/terminal.py index c8a6e8b85f6..e3ded45625d 100644 --- a/terminal.py +++ b/terminal.py @@ -4,6 +4,7 @@ import argparse import sys import os +import random from datetime import datetime, timedelta import pandas as pd import yfinance as yf @@ -18,7 +19,15 @@ from gamestonk_terminal.discovery import disc_controller from gamestonk_terminal.due_diligence import dd_controller from gamestonk_terminal.fundamental_analysis import fa_controller from gamestonk_terminal.helper_funcs import b_is_stock_market_open, get_flair -from gamestonk_terminal.main_helper import clear, export, load, print_help, view, candle +from gamestonk_terminal.main_helper import ( + clear, + export, + load, + print_help, + view, + candle, + print_goodbye, +) from gamestonk_terminal.menu import session from gamestonk_terminal.papermill import papermill_controller as mill from gamestonk_terminal.behavioural_analysis import ba_controller @@ -102,7 +111,7 @@ def main(): print(e, "\n") # Print first welcome message and help - print("\nWelcome to Gamestonk Terminal 🚀\n") + print("\nWelcome to Gamestonk Terminal Ape.\n") should_print_help = True parsed_stdin = False @@ -375,9 +384,7 @@ def main(): if not main_cmd: should_print_help = True - print( - "Hope you enjoyed the terminal. Remember that stonks only go up. Diamond hands.\n" - ) + print_goodbye() if __name__ == "__main__": From 76f4338882bb0f81bc1c4bb68feb1b5481c2b6a3 Mon Sep 17 00:00:00 2001 From: didier Date: Sat, 1 May 2021 01:29:53 +0100 Subject: [PATCH 03/19] fix linters --- gamestonk_terminal/main_helper.py | 3 ++- terminal.py | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gamestonk_terminal/main_helper.py b/gamestonk_terminal/main_helper.py index 8530c704286..4612171e66f 100644 --- a/gamestonk_terminal/main_helper.py +++ b/gamestonk_terminal/main_helper.py @@ -318,7 +318,8 @@ def load(l_args, s_ticker, s_start, s_interval, df_stock): s_intraday = (f"Intraday {s_interval}", "Daily")[ns_parser.n_interval == 1440] print( - f"Loading {s_intraday} {ns_parser.s_ticker.upper()} stock with starting period {s_start.strftime('%Y-%m-%d')} for analysis.\n" + f"Loading {s_intraday} {ns_parser.s_ticker.upper()} stock " + f"with starting period {s_start.strftime('%Y-%m-%d')} for analysis.\n" ) return [ diff --git a/terminal.py b/terminal.py index e3ded45625d..171ce763a1c 100644 --- a/terminal.py +++ b/terminal.py @@ -4,7 +4,6 @@ import argparse import sys import os -import random from datetime import datetime, timedelta import pandas as pd import yfinance as yf From cc84366ca3c99225380f0340f3f8671fb54cd763 Mon Sep 17 00:00:00 2001 From: DidierRLopes Date: Sat, 1 May 2021 01:35:44 +0100 Subject: [PATCH 04/19] Add disclaimer to README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2809b6a6025..3d095b72303 100644 --- a/README.md +++ b/README.md @@ -327,6 +327,8 @@ Distributed under the MIT License. See [LICENSE](https://github.com/DidierRLopes "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](https://www.linkedin.com/in/didier-lopes/) - dro.lopes@campus.fct.unl.pt From b1037b391e04273795f2b511f7b8daac9b9a2629 Mon Sep 17 00:00:00 2001 From: DidierRLopes Date: Sat, 1 May 2021 02:05:55 +0100 Subject: [PATCH 05/19] Add installing/updating Microsoft C++ Build tools --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3d095b72303..e1e28ee3031 100644 --- a/README.md +++ b/README.md @@ -136,13 +136,15 @@ cd GamestonkTerminal/ conda install poetry ``` -7.5. If installing python 3.8 +7.1. If installing python 3.8 ``` conda deactivate conda activate gst ``` *The `conda deactivate` -> `conda activate` in the middle is on purpose, this is sometimes required to avoid issues with poetry* +7.2. If on Windows, install/update Microsoft C++ Build Tools from here: https://visualstudio.microsoft.com/visual-cpp-build-tools/ + 8. Install poetry dependencies ``` poetry install From 9fe6eb213f554f1538d38c541bcdaeaccf6da6e8 Mon Sep 17 00:00:00 2001 From: DidierRLopes Date: Sat, 1 May 2021 02:14:34 +0100 Subject: [PATCH 06/19] Update ROADMAP.md --- ROADMAP.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ROADMAP.md b/ROADMAP.md index 64a4900b9e2..3127e8822a7 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -15,7 +15,7 @@ * [Residual Analysis](#Residual-Analysis) * [Portfolio Analysis](#Portfolio-Analysis) * [Portfolio Optimization](#Portfolio-Optimization) -* [FRED](#FRED) +* [Economy](#Economy) * [Options](#Options) * [Credit Analysis](#Credit-Analysis) * [Cryptocurrencies](#Cryptocurrencies) @@ -146,6 +146,7 @@ * [x] Add alpaca (@jmaslek) - [PR #259](https://github.com/DidierRLopes/GamestonkTerminal/pull/229) * [x] Add robinhood (@jmaslek) - [PR #229](https://github.com/DidierRLopes/GamestonkTerminal/pull/229) * [x] Add Ally Invest (@jmaslek) - [PR #267](https://github.com/DidierRLopes/GamestonkTerminal/pull/267) +* [x] Degiro support (@deel) - [PR #381](https://github.com/DidierRLopes/GamestonkTerminal/pull/381) **NEXT** * [ ] Merge data from different brokers (@jmaslek) @@ -166,8 +167,9 @@ ___ --- -## FRED +## Economy * [x] Implement Economic data (gpd, unemployment rate, ...) (@jmaslek) - [PR #167](https://github.com/DidierRLopes/GamestonkTerminal/pull/167) +* [x] Refactor FRED to ECON menu and add VIX view (@jmaslek) - [PR #405](https://github.com/DidierRLopes/GamestonkTerminal/pull/405) **NEXT** @@ -208,6 +210,7 @@ ___ * [x] Add screener signals (e.g. top gainers, new highs, most volatile, oversold, major news, ...) from Finviz (@didier) - [PR #314](https://github.com/DidierRLopes/GamestonkTerminal/pull/314) * [x] Plot screener historical using Yahoo Finance data (@didier) - [PR #319](https://github.com/DidierRLopes/GamestonkTerminal/pull/319) * [x] Add command to take tickers to portfolio optimization (@didier) - [PR #349](https://github.com/DidierRLopes/GamestonkTerminal/pull/349) +* [x] Add flags to save screeners and run papermill on returned tickers (@alokan) - [PR #414](https://github.com/DidierRLopes/GamestonkTerminal/pull/414) **NEXT** @@ -215,6 +218,7 @@ ___ ## Forex * [x] Add entire forex menu through Oanda (@alokan) - [PR #360](https://github.com/DidierRLopes/GamestonkTerminal/pull/360) +* [x] Add EDA menu, Behavioural Analysis menu, Due Diligence from other users in Reddit, and latest news regarding currency provided. (@alokan) - [PR #387](https://github.com/DidierRLopes/GamestonkTerminal/pull/387) **NEXT** @@ -250,6 +254,7 @@ ___ * [x] Add Feature Flags (@aia) - [PR #158](https://github.com/DidierRLopes/GamestonkTerminal/pull/158) * [x] Add ad-hoc builds (@aia) - [PR #192](https://github.com/DidierRLopes/GamestonkTerminal/pull/192) * [x] Add test generators and test parametrization helpers (@aia) - [PR #264](https://github.com/DidierRLopes/GamestonkTerminal/pull/264) +* [x] Sphinx documentation https://gamestonk-terminal.readthedocs.io/en/latest/index.html (@piiq) - [PR #413](https://github.com/DidierRLopes/GamestonkTerminal/pull/413) **NEXT** * [ ] Write a developer guide From 9df49ec25cf2702a72bde6bc5fc85e791b07844a Mon Sep 17 00:00:00 2001 From: DidierRLopes Date: Sat, 1 May 2021 02:54:01 +0100 Subject: [PATCH 07/19] Update README.md --- gamestonk_terminal/econ/README.md | 44 ++++++++++++++++++------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/gamestonk_terminal/econ/README.md b/gamestonk_terminal/econ/README.md index b2b8149b044..a100cbe63cb 100644 --- a/gamestonk_terminal/econ/README.md +++ b/gamestonk_terminal/econ/README.md @@ -1,24 +1,30 @@ -# ECON +# ECONONMY -## FRED +This menu aims to assess economy data, and the usage of the following commands along with an example will be exploited below. -https://fred.stlouisfed.org +* [fred](#fred) + * Get customized Federal Reserve Economic Data (FRED) from https://fred.stlouisfed.org. +* [gdp](#gdp) + * Gross domestic product +* [vix](#vix) + * Volatility index +* [t1](#t1) + * 1-Year Treasury Constant Maturity Rate +* [t5](#t5) + * 5-Year Treasury Constant Maturity Rate +* [t10](#t10) + * 10-Year Treasury Constant Maturity Rate +* [t30](#t30) + * 30-Year Treasury Constant Maturity Rate +* [mort30](#mort30) + * 30-Year Fixed Rate Mortgage Average +* [fedrate](#fedrate) + * Effective Federal Funds Rate +* [moodAAA](#moodAAA) + * Moody's Seasoned AAA Corporate Bond Yield +* [usdcad](#usdcad) + * Canada / U.S. Foreign Exchange Rate (CAD per 1 USD) -The purpose of fred is to have the ability to look at economic data. This page offers 2 options: - -* [predefined](#gdp) - * Get predefined data -* [cust](#cust) - * Get custom fred data - -The current predefined options are -* GDP -* 1,5,10,30 Year Treasury Rates -* 30 Year Mortgage Rates -* Unemployment Rate -* Effective Federal Funds rate -* Moody's AAA Corporate Bond -* CAD to USD Conversion. ## predefined ```text @@ -131,4 +137,4 @@ This command pulls historical VIX data from yfinance module. ```` usage: view [-s START_DATE] ```` -* -s Start date to plot historical VIX data \ No newline at end of file +* -s Start date to plot historical VIX data From 35b0abf60af5ff164c987854f8883bb928f76526 Mon Sep 17 00:00:00 2001 From: didier Date: Sat, 1 May 2021 03:50:21 +0100 Subject: [PATCH 08/19] Refactor FRED code --- gamestonk_terminal/econ/econ_controller.py | 129 ++++++++------ gamestonk_terminal/econ/fred_view.py | 195 ++++++--------------- gamestonk_terminal/econ/vix_view.py | 63 ------- gamestonk_terminal/main_helper.py | 3 +- 4 files changed, 128 insertions(+), 262 deletions(-) delete mode 100644 gamestonk_terminal/econ/vix_view.py diff --git a/gamestonk_terminal/econ/econ_controller.py b/gamestonk_terminal/econ/econ_controller.py index 1e5eccc3c27..3a42e4be093 100644 --- a/gamestonk_terminal/econ/econ_controller.py +++ b/gamestonk_terminal/econ/econ_controller.py @@ -8,7 +8,7 @@ from prompt_toolkit.completion import NestedCompleter from gamestonk_terminal import feature_flags as gtff from gamestonk_terminal.helper_funcs import get_flair from gamestonk_terminal.menu import session -from gamestonk_terminal.econ import fred_view, vix_view +from gamestonk_terminal.econ import fred_view class EconController: @@ -19,24 +19,24 @@ class EconController: "help", "q", "quit", + "fred", + "vixcls", "gdp", - "unemp", - "t1", - "t5", - "t10", - "t30", - "mort30", - "fedrate", - "moodAAA", - "usdcad", - "cust", - "view", + "unrate", + "dgs1", + "dgs5", + "dgs10", + "dgs30", + "mortgage30us", + "fedfunds", + "aaa", + "dexcaus", ] def __init__(self): """Constructor""" - self.disc_parser = argparse.ArgumentParser(add_help=False, prog="econ") - self.disc_parser.add_argument( + self.econ_parser = argparse.ArgumentParser(add_help=False, prog="econ") + self.econ_parser.add_argument( "cmd", choices=self.CHOICES, ) @@ -50,21 +50,20 @@ class EconController: print(" q quit this menu, and shows back to main menu") print(" quit quit to abandon program") print(" ") - print("VIX:") - print(" view plot VIX") - print(" ") - print("FRED:") - print(" gdp GDP") - print(" unemp Unemployment Rate") - print(" t1 1-Year Treasury Constant Maturity Rate") - print(" t5 5-Year Treasury Constant Maturity Rate") - print(" t10 10-Year Treasury Constant Maturity Rate") - print(" t30 30-Year Treasury Constant Maturity Rate") - print(" mort30 30-Year Fixed Rate Mortgage Average") - print(" fedrate Effective Federal Funds Rate") - print(" moodAAA Moody's Seasoned AAA Corporate Bond Yield") - print(" usdcad Canada / U.S. Foreign Exchange Rate (CAD per 1 USD)") - print(" cust User Specified FRED Data - Please Specify --id") + print( + " fred display customized FRED data from https://fred.stlouisfed.org." + ) + print(" vixcls volatility index") + print(" gdp gross domestic product") + print(" unrate unemployment Rate") + print(" dgs1 1-Year Treasury Constant Maturity Rate") + print(" dgs5 5-Year Treasury Constant Maturity Rate") + print(" dgs10 10-Year Treasury Constant Maturity Rate") + print(" dgs30 30-Year Treasury Constant Maturity Rate") + print(" mortgage30us 30-Year Fixed Rate Mortgage Average") + print(" fedfunds effective Federal Funds Rate") + print(" aaa moody's Seasoned AAA Corporate Bond Yield") + print(" dexcaus Canada / U.S. Foreign Exchange Rate (CAD per 1 USD)") print("") return @@ -78,23 +77,7 @@ class EconController: True - quit the program None - continue in the menu """ - (known_args, other_args) = self.disc_parser.parse_known_args(an_input.split()) - - fred_data_list = [ - "gdp", - "unemp", - "t1", - "t5", - "t10", - "t30", - "mort30", - "fedrate", - "moodAAA", - "usdcad", - ] - - if known_args.cmd in fred_data_list: - return getattr(self, "call_fred_api")(other_args, known_args.cmd) + (known_args, other_args) = self.econ_parser.parse_known_args(an_input.split()) return getattr( self, "call_" + known_args.cmd, lambda: "Command not recognized!" @@ -112,17 +95,53 @@ class EconController: """Process Quit command - quit the program""" return True - def call_fred_api(self, other_args: List[str], cmd: str): - """Process Fred Data call""" - fred_view.get_fred_data(other_args, cmd) + def call_fred(self, other_args: List[str]): + """Process fred command""" + fred_view.display_fred(other_args, "") - def call_view(self, other_args: List[str]): - """Process view for VIX Data.""" - vix_view.view_vix(other_args) + def call_vixcls(self, other_args: List[str]): + """Process vixcls command""" + fred_view.display_fred(other_args, "VIXCLS") - def call_cust(self, other_args: List[str]): - """Process cust call""" - fred_view.custom_data(other_args) + def call_gdp(self, other_args: List[str]): + """Process gdp command""" + fred_view.display_fred(other_args, "GDP") + + def call_unrate(self, other_args: List[str]): + """Process unrate command""" + fred_view.display_fred(other_args, "UNRATE") + + def call_dgs1(self, other_args: List[str]): + """Process dgs1 command""" + fred_view.display_fred(other_args, "DGS1") + + def call_dgs5(self, other_args: List[str]): + """Process dgs5 command""" + fred_view.display_fred(other_args, "DGS5") + + def call_dgs10(self, other_args: List[str]): + """Process dgs10 command""" + fred_view.display_fred(other_args, "DGS10") + + def call_dgs30(self, other_args: List[str]): + """Process dgs30 command""" + fred_view.display_fred(other_args, "DGS30") + + def call_mortgage30us(self, other_args: List[str]): + """Process mortgage30us command""" + fred_view.display_fred(other_args, "MORTGAGE30US") + + def call_fedfunds(self, other_args: List[str]): + """Process fedfunds command""" + fred_view.display_fred(other_args, "FEDFUNDS") + + def call_aaa(self, other_args: List[str]): + """Process aaa command""" + fred_view.display_fred(other_args, "AAA") + + def call_dexcaus(self, other_args: List[str]): + """Process dexcaus command""" + fred_view.display_fred(other_args, "DEXCAUS") def menu(): diff --git a/gamestonk_terminal/econ/fred_view.py b/gamestonk_terminal/econ/fred_view.py index 76f57f57a23..95e67b49047 100644 --- a/gamestonk_terminal/econ/fred_view.py +++ b/gamestonk_terminal/econ/fred_view.py @@ -18,138 +18,50 @@ from gamestonk_terminal import feature_flags as gtff register_matplotlib_converters() -api_map = { - "gdp": "GDP", - "t10": "DGS10", - "t1": "DGS1", - "t5": "DGS5", - "t30": "DGS30", - "mort30": "MORTGAGE30US", - "fedrate": "FEDFUNDS", - "moodAAA": "AAA", - "usdcad": "DEXCAUS", - "unemp": "UNRATE", -} -title_map = { - "gdp": "Gross Domestic Product", - "t10": "10-Year Treasury Constant Maturity Rate", - "t1": "1-Year Treasury Constant Maturity Rate", - "t5": "5-Year Treasury Constant Maturity Rate", - "t30": "30-Year Treasury Constant Maturity Rate", - "mort30": "30-Year Mortgage Rate", - "fedrate": "Effective Federal Funds Rate", - "moodAAA": "Moody's Seasoned AAA Corporate Bond Yield", - "usdcad": "Canada / U.S. Foreign Exchange Rate", - "unemp": "Unemployment Rate", +fred_series_description = { + "VIXCLS": "Volatility Index", + "GDP": "Gross Domestic Product", + "UNRATE": "Unemployment Rate", + "DGS1": "1-Year Treasury Constant Maturity Rate", + "DGS5": "5-Year Treasury Constant Maturity Rate", + "DGS10": "10-Year Treasury Constant Maturity Rate", + "DGS30": "30-Year Treasury Constant Maturity Rate", + "MORTGAGE30US": "30-Year Mortgage Rate", + "FEDFUNDS": "Effective Federal Funds Rate", + "AAA": "Moody's Seasoned AAA Corporate Bond Yield", + "DEXCAUS": "Canada / U.S. Foreign Exchange Rate", } -def get_fred_data(other_args: List[str], choice: str): - """Displace Fred data and graph for a selected chosen data series +def display_fred(other_args: List[str], choice: str): + """Display customized Federal Reserve Economic Data (FRED) from https://fred.stlouisfed.org. Parameters ---------- other_args : List[str] argparse other args choice : str - Fred data series: "gdp","unemp", "t1", "t5", "t10", "t30", "mort30", - "fedrate", "moodAAA", "usdcad", + Fred data series: "VIX", "GDP", "DGS1", "DGS5", "DGS10", "DGS30", "MORTGAGE30US", "FEDFUNDS", + "AAA", "DEXCAUS", "UNRATE", """ - fred = Fred(api_key=API_FRED_KEY) - parser = argparse.ArgumentParser( add_help=False, - prog="Custom", + prog=choice if choice else "fred", description=""" - Custom Data + Display customized Federal Reserve Economic Data (FRED) from https://fred.stlouisfed.org. """, ) parser.add_argument( - "-s", - dest="start_date", - type=valid_date, - default="2019-01-01", - required=False, - help="Starting date (YYYY-MM-DD) of data", - ) - - parser.add_argument( - "--noplot", - action="store_false", - default=True, - dest="noplot", - help="Suppress output plot", - ) - - parser.add_argument( - "--hidedata", - action="store_false", - default=True, - dest="hidedata", - help="Suppress data display plot", - ) - - try: - ns_parser = parse_known_args_and_warn(parser, other_args) - - if not ns_parser: - return - - string_to_get = api_map[choice] - title = title_map[choice] - data = fred.get_series(string_to_get, ns_parser.start_date) - - data = pd.DataFrame(data, columns=[f"{string_to_get}"]) - data.index.name = "Date" - if ns_parser.hidedata: - print(data) - print("") - if ns_parser.noplot: - plt.figure(figsize=plot_autoscale(), dpi=PLOT_DPI) - plt.plot(data.index, data.iloc[:, 0], "-ok") - plt.xlabel("Time") - plt.xlim(data.index[0], data.index[-1]) - plt.ylabel(f"{string_to_get}") - plt.grid(b=True, which="major", color="#666666", linestyle="-") - plt.minorticks_on() - plt.grid(b=True, which="minor", color="#999999", linestyle="-", alpha=0.2) - plt.title(title) - plt.show() - print("") - - if gtff.USE_ION: - plt.ion() - - except SystemExit: - print("") - except Exception as e: - print(e) - print("") - return - - -def custom_data(other_args: List[str]): - """Displace Fred data for a custom series request - - Parameters - ---------- - other_args : List[str] - argparse other args - """ - fred = Fred(api_key=API_FRED_KEY) - - parser = argparse.ArgumentParser( - add_help=False, - prog="Custom", - description=""" - Custom Data - """, - ) - parser.add_argument( - "-i", "--id", dest="series_id", required=True, type=str, help="FRED Series ID" + "-i", + "--id", + dest="series_id", + required=False if choice else True, + type=str, + default=choice.upper(), + help="FRED Series ID from https://fred.stlouisfed.org", ) parser.add_argument( @@ -157,58 +69,55 @@ def custom_data(other_args: List[str]): dest="start_date", type=valid_date, default="2019-01-01", - required=False, help="Starting date (YYYY-MM-DD) of data", ) parser.add_argument( - "--noplot", - action="store_false", - default=True, - dest="noplot", - help="Suppress output plot", - ) - - parser.add_argument( - "--hidedata", - action="store_false", - default=True, - dest="hidedata", - help="Suppress data display plot", + "-t", + "--text", + action="store_true", + dest="text", + help="Only output text data", ) try: + if not choice: + if other_args: + if "-" not in other_args[0]: + other_args.insert(0, "-i") ns_parser = parse_known_args_and_warn(parser, other_args) if not ns_parser: return - data = fred.get_series(ns_parser.series_id, ns_parser.start_date) + fred = Fred(api_key=API_FRED_KEY) + d_data = fred.get_series(ns_parser.series_id, ns_parser.start_date) - data = pd.DataFrame(data, columns=[f"{ns_parser.series_id}"]) - data.index.name = "Date" - if ns_parser.hidedata: - print(data) - print("") - if ns_parser.noplot: + df_fred = pd.DataFrame(d_data, columns=[f"{ns_parser.series_id}"]) + df_fred.index.name = "Date" + + if ns_parser.text: + print(df_fred.to_string()) + + else: plt.figure(figsize=plot_autoscale(), dpi=PLOT_DPI) - plt.plot(data.index, data.iloc[:, 0], "-ok") + plt.plot(df_fred.index, df_fred.iloc[:, 0]) plt.xlabel("Time") - plt.xlim(data.index[0], data.index[-1]) - plt.ylabel(f"{ns_parser.series_id}") + plt.xlim(df_fred.index[0], df_fred.index[-1]) + plt.ylabel(f"{ns_parser.series_id.upper()}") plt.grid(b=True, which="major", color="#666666", linestyle="-") plt.minorticks_on() plt.grid(b=True, which="minor", color="#999999", linestyle="-", alpha=0.2) - plt.title(f"FRED {ns_parser.series_id} Series") - plt.show() - print("") - + if choice: + plt.title(fred_series_description[ns_parser.series_id]) if gtff.USE_ION: plt.ion() + plt.show() + + print("") except SystemExit: print("") except Exception as e: - print(e) - print("") + print(e, "\n") return diff --git a/gamestonk_terminal/econ/vix_view.py b/gamestonk_terminal/econ/vix_view.py deleted file mode 100644 index 82565e0338b..00000000000 --- a/gamestonk_terminal/econ/vix_view.py +++ /dev/null @@ -1,63 +0,0 @@ -""" VIX View """ -__docformat__ = "numpy" -import argparse - -from typing import List -from pandas.plotting import register_matplotlib_converters -import matplotlib.pyplot as plt -import yfinance as yf -from gamestonk_terminal.helper_funcs import ( - parse_known_args_and_warn, - valid_date, - plot_autoscale, -) -from gamestonk_terminal.config_plot import PLOT_DPI -from gamestonk_terminal import feature_flags as gtff - -register_matplotlib_converters() - - -def view_vix(other_args: List[str]): - """ - Plot vix from a starting date using yfinance - Parameters - ---------- - other_args: List[str] - List of argparse arguments - Returns - ------- - Plots VIX historical data - """ - parser = argparse.ArgumentParser(prog="vix_plot", add_help=False) - parser.add_argument( - "-s", - "--start", - type=valid_date, - default="2020-01-01", - dest="start_date", - help="The starting date (format YYYY-MM-DD) of the plot", - ) - - try: - ns_parser = parse_known_args_and_warn(parser, other_args) - if not ns_parser: - return - - vix = yf.download("^VIX", start=ns_parser.start_date, progress=False) - _, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI) - vix.plot(y="Adj Close", ax=ax) - plt.ylabel("VIX") - plt.grid(b=True, which="major", color="#666666", linestyle="-") - plt.minorticks_on() - plt.grid(b=True, which="minor", color="#999999", linestyle="-", alpha=0.2) - plt.title("Historical VIX Data") - - print("") - - if gtff.USE_ION: - plt.ion() - plt.show() - - except Exception as e: - print(e) - print("") diff --git a/gamestonk_terminal/main_helper.py b/gamestonk_terminal/main_helper.py index 4612171e66f..ef1243cec11 100644 --- a/gamestonk_terminal/main_helper.py +++ b/gamestonk_terminal/main_helper.py @@ -549,6 +549,7 @@ def print_goodbye(): "This is our way. ", "Keep the spacesuit ape, we haven't reached the moon yet. ", "I am not a cat. I'm an ape. ", + "We like the terminal. ", ] goodbye_hr = datetime.now().hour @@ -563,4 +564,4 @@ def print_goodbye(): else: goodbye_msg_time = "Go get some rest soldier!" - print(goodbye_msg[random.randint(0, len(goodbye_msg))] + goodbye_msg_time + "\n") + print(goodbye_msg[random.randint(0, len(goodbye_msg)-1)] + goodbye_msg_time + "\n") From 1ee7b01382910003def0b5eae3289a8a782efc8b Mon Sep 17 00:00:00 2001 From: DidierRLopes Date: Sat, 1 May 2021 04:04:44 +0100 Subject: [PATCH 09/19] Update README.md --- gamestonk_terminal/econ/README.md | 263 +++++++++++++++++------------- 1 file changed, 153 insertions(+), 110 deletions(-) diff --git a/gamestonk_terminal/econ/README.md b/gamestonk_terminal/econ/README.md index a100cbe63cb..1e6bb26f4b9 100644 --- a/gamestonk_terminal/econ/README.md +++ b/gamestonk_terminal/econ/README.md @@ -3,138 +3,181 @@ This menu aims to assess economy data, and the usage of the following commands along with an example will be exploited below. * [fred](#fred) - * Get customized Federal Reserve Economic Data (FRED) from https://fred.stlouisfed.org. + * display customized FRED from https://fred.stlouisfed.org +* [vixcls](#vixcls) + * Volatility Index * [gdp](#gdp) - * Gross domestic product -* [vix](#vix) - * Volatility index -* [t1](#t1) + * Gross Domestic Product +* [unrate](#unrate) + * Unemployment Rate +* [dgs1](#dgs1) * 1-Year Treasury Constant Maturity Rate -* [t5](#t5) +* [dgs5](#dgs5) * 5-Year Treasury Constant Maturity Rate -* [t10](#t10) +* [dgs10](#dgs10) * 10-Year Treasury Constant Maturity Rate -* [t30](#t30) +* [dgs30](#dgs30) * 30-Year Treasury Constant Maturity Rate -* [mort30](#mort30) +* [mortgage30us](#mortgage30us) * 30-Year Fixed Rate Mortgage Average -* [fedrate](#fedrate) +* [fedfunds](#fedfunds) * Effective Federal Funds Rate -* [moodAAA](#moodAAA) +* [aaa](#aaa) * Moody's Seasoned AAA Corporate Bond Yield -* [usdcad](#usdcad) +* [dexcaus](#dexcaus) * Canada / U.S. Foreign Exchange Rate (CAD per 1 USD) -## predefined +## fred ```text -usage: selected [-n N_TO_GET] [-s START_DATE] [--noplot] [--hidedata] +usage: fred [-i SERIES_ID] [-s START_DATE] [-t] ``` -Gets predefined data. Arguments -* selected : Key from the predefined list. -* -s : Start Date. Format YYYY-mm-dd. First point to get. Defaults to Jan 1 2019 -* --noplot : Flag to hide plot -* --hidedata : Flag to suppress printing output. Useful for data released daily/weekly. -To plot the 30-Year Mortgage rates since 2018-01-01 suppressing the output. -```` -mort30 -s 2018-01-01 --hidedata -```` +Display customized Federal Reserve Economic Data (FRED) from https://fred.stlouisfed.org. -![mort30](https://user-images.githubusercontent.com/18151143/111521185-3d80dc80-872f-11eb-989d-c2bb256aa213.png) - -To show all GDP data since 1/1/2016, with no plot. -```` -gdp -s 2016-01-01 --noplot -```` -Output: -```` - GDP -Date -2016-01-01 18470.156 -2016-04-01 18656.207 -2016-07-01 18821.359 -2016-10-01 19032.580 -2017-01-01 19237.435 -2017-04-01 19379.232 -2017-07-01 19617.288 -2017-10-01 19937.963 -2018-01-01 20242.215 -2018-04-01 20552.653 -2018-07-01 20742.723 -2018-10-01 20909.853 -2019-01-01 21115.309 -2019-04-01 21329.877 -2019-07-01 21540.325 -2019-10-01 21747.394 -2020-01-01 21561.139 -2020-04-01 19520.114 -2020-07-01 21170.252 -2020-10-01 21487.896 -```` +* -i : FRED Series ID from https://fred.stlouisfed.org. +* -s : Starting date (YYYY-MM-DD) of data. Default: 2019-01-01. +* -t : Only output text data. -## cust +## vixcls +```text +usage: vixcls [-s START_DATE] [-t] +``` -The fred database has many different datasets freely available. They each have their own custom SERIES_ID which can be obtained through the website. +Volatility Index -```` -usage: cust [-i --id] [-s START_DATE] [--noplot] [--hidedata] -```` -* -i/--id : Series ID for FRED data. Required argument -* -s : Start Date. Format YYYY-mm-dd. First point to get. Defaults to Jan 1 2015. -* --noplot : Flag to suppress output plot. -* --hidedata : Flag to suppress data output +* -s : Starting date (YYYY-MM-DD) of data. Default: 2019-01-01. +* -t : Only output text data. -An example of custom data could be the USD/EURO exchange rate. -According to https://fred.stlouisfed.org/series/DEXUSEU , the series ID is DEXUSEU. So to plot this from the start of February 2021 to now (3/17) +![vixcls](https://user-images.githubusercontent.com/25267873/116769167-160d7700-aa32-11eb-8874-3b864908c9c2.png) -```` -cust --id DEXUSEU -s 2021-02-01 -```` -This will plot and display: -![cust](https://user-images.githubusercontent.com/18151143/111521481-92bcee00-872f-11eb-8a02-e7346e56e462.png) -```` - DEXUSEU -Date -2021-02-01 1.2070 -2021-02-02 1.2020 -2021-02-03 1.2025 -2021-02-04 1.1974 -2021-02-05 1.2035 -2021-02-08 1.2045 -2021-02-09 1.2106 -2021-02-10 1.2132 -2021-02-11 1.2127 -2021-02-12 1.2126 -2021-02-15 NaN -2021-02-16 1.2107 -2021-02-17 1.2042 -2021-02-18 1.2078 -2021-02-19 1.2136 -2021-02-22 1.2155 -2021-02-23 1.2142 -2021-02-24 1.2143 -2021-02-25 1.2229 -2021-02-26 1.2093 -2021-03-01 1.2054 -2021-03-02 1.2079 -2021-03-03 1.2073 -2021-03-04 1.2045 -2021-03-05 1.1914 -2021-03-08 1.1849 -2021-03-09 1.1885 -2021-03-10 1.1900 -2021-03-11 1.1978 -```` +## gdp +```text +usage: gdp [-s START_DATE] [-t] +``` -Note the NaN on 2-15, which corresponds to President's Day. +Gross Domestic Product -## VIX +* -s : Starting date (YYYY-MM-DD) of data. Default: 2019-01-01. +* -t : Only output text data. -This command pulls historical VIX data from yfinance module. -```` -usage: view [-s START_DATE] -```` -* -s Start date to plot historical VIX data +![gdp](https://user-images.githubusercontent.com/25267873/116769162-14dc4a00-aa32-11eb-886a-b5368146ed37.png) + + +## unrate +```text +usage: unrate [-s START_DATE] [-t] +``` + +Unemployment Rate + +* -s : Starting date (YYYY-MM-DD) of data. Default: 2019-01-01. +* -t : Only output text data. + +![unrate](https://user-images.githubusercontent.com/25267873/116769161-14dc4a00-aa32-11eb-91f3-a0f80d687a12.png) + + +## dgs1 +```text +usage: dgs1 [-s START_DATE] [-t] +``` + +1-year Treasury Constant Maturity Rate + +* -s : Starting date (YYYY-MM-DD) of data. Default: 2019-01-01. +* -t : Only output text data. + +![dgs1](https://user-images.githubusercontent.com/25267873/116769166-160d7700-aa32-11eb-9247-78156af4d527.png) + + +## dgs5 +```text +usage: dgs5 [-s START_DATE] [-t] +``` + +5-year Treasury Constant Maturity Rate + +* -s : Starting date (YYYY-MM-DD) of data. Default: 2019-01-01. +* -t : Only output text data. + +![dgs5](https://user-images.githubusercontent.com/25267873/116769165-1574e080-aa32-11eb-96ee-c57728d8f57c.png) + + +## dgs10 +```text +usage: dgs10 [-s START_DATE] [-t] +``` + +10-year Treasury Constant Maturity Rate + +* -s : Starting date (YYYY-MM-DD) of data. Default: 2019-01-01. +* -t : Only output text data. + +![dgs10](https://user-images.githubusercontent.com/25267873/116769164-1574e080-aa32-11eb-93a0-3b8a2b7cb3d2.png) + + +## dgs30 +```text +usage: dgs30 [-s START_DATE] [-t] +``` + +30-year Treasury Constant Maturity Rate + +* -s : Starting date (YYYY-MM-DD) of data. Default: 2019-01-01. +* -t : Only output text data. + +![dgs30](https://user-images.githubusercontent.com/25267873/116769159-13ab1d00-aa32-11eb-8c3d-e53c8d1f1a19.png) + + +## mortgage30us +```text +usage: mortgage30us [-s START_DATE] [-t] +``` + +30-year Fixed Rate Mortgage Average + +* -s : Starting date (YYYY-MM-DD) of data. Default: 2019-01-01. +* -t : Only output text data. + +![mortgage30us](https://user-images.githubusercontent.com/25267873/116769157-13128680-aa32-11eb-8826-ccb2e6ae764e.png) + + +## fedfunds +```text +usage: fedfunds [-s START_DATE] [-t] +``` + +Effective Federal Funds Rate + +* -s : Starting date (YYYY-MM-DD) of data. Default: 2019-01-01. +* -t : Only output text data. + +![fedfunds](https://user-images.githubusercontent.com/25267873/116769158-13ab1d00-aa32-11eb-9dc2-8296bc4f7e2c.png) + + +## aaa +```text +usage: aaa [-s START_DATE] [-t] +``` + +Moody's Seasoned AAA Corporate Bond Yield + +* -s : Starting date (YYYY-MM-DD) of data. Default: 2019-01-01. +* -t : Only output text data. + +![aaa](https://user-images.githubusercontent.com/25267873/116769160-1443b380-aa32-11eb-84a8-036e15b47c9b.png) + + +## dexcaus +```text +usage: dexcaus [-s START_DATE] [-t] +``` + +Canada / U.S. Foreign Exchange Rate (CAD per 1 USD) + +* -s : Starting date (YYYY-MM-DD) of data. Default: 2019-01-01. +* -t : Only output text data. + +![dexcaus](https://user-images.githubusercontent.com/25267873/116769155-10b02c80-aa32-11eb-8ece-d8e92b8df1af.png) From c2676198b0a16010401e106d9c98ba6f3fb22c56 Mon Sep 17 00:00:00 2001 From: DidierRLopes Date: Sat, 1 May 2021 04:09:08 +0100 Subject: [PATCH 10/19] Update README.md --- gamestonk_terminal/README.md | 37 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/gamestonk_terminal/README.md b/gamestonk_terminal/README.md index a3aab2939c8..6b810b8fae7 100644 --- a/gamestonk_terminal/README.md +++ b/gamestonk_terminal/README.md @@ -14,7 +14,7 @@ * [Comparison Analysis](#Comparison-Analysis-) * [Exploratory Data Analysis](#Exploratory-Data-Analysis-) * [Residual Analysis](#Residual-Analysis-) -* [Economic Data](#Econ-) +* [Economy](#Economy) * [Options](#Options-) * [Screener](#Screener-) * [Forex](#Forex-) @@ -237,6 +237,7 @@ Command|Technique|Sources `lstm` |Long Short-Term Memory | [Wikipedia](https://en.wikipedia.org/wiki/Long_short-term_memory), [Details](https://colah.github.io/posts/2015-08-Understanding-LSTMs/)   + ## Portfolio Analysis [»](portfolio/README.md) Command|Description|Brokers @@ -250,6 +251,7 @@ Command|Description|Brokers `hold` | view net holdings across all logins   + ## Portfolio Optimization [»](portfolio_optimization/README.md) Command|Description @@ -267,7 +269,6 @@ Command|Description   - ## Cryptocurrency [»](cryptocurrency/README.md) Command|Description @@ -277,6 +278,7 @@ Command|Description `top` | view top coins from coinmarketcap   + ## Comparison Analysis [»](comparison_analysis/README.md) Command|Description|Source ------ | --------|---- @@ -323,23 +325,22 @@ Command|Description|Source `independence` |tests independent and identically distributed (BDS) | [Wikipedia](https://en.wikipedia.org/wiki/Pearson%27s_chi-squared_test#Testing_for_statistical_independence)   -## ECON [»](econ/README.md) + +## Economy [»](econ/README.md) Command|Description ------ | -------- -FRED Data | -`gdp` | GDP -`unemp` | Unemployment Rate -`t1` | 1-Year Treasury Constant Maturity Rate -`t5` | 5-Year Treasury Constant Maturity Rate -`t10` | 10-Year Treasury Constant Maturity Rate -`t30` | 30-Year Treasury Constant Maturity Rate -`mort30` | 30-Year Fixed Rate Mortgage Average -`fedrate` | Effective Federal Funds Rate -`moodAAA` | Moody's Seasoned AAA Corporate Bond Yield -`usdcad` | Canada / U.S. Foreign Exchange Rate (CAD per 1 USD) -`cust` | User Specified FRED Data - Please Specify --id -VIX Data | -`view` | Plots VIX Historical Data +`vixcls` | Volatility Index +`gdp` | Gross Domestic Product +`unrate` | Unemployment Rate +`dgs1` | 1-Year Treasury Constant Maturity Rate +`dgs5` | 5-Year Treasury Constant Maturity Rate +`dgs10` | 10-Year Treasury Constant Maturity Rate +`dgs30` | 30-Year Treasury Constant Maturity Rate +`mortgage30us` | 30-Year Fixed Rate Mortgage Average +`fedfunds` | Effective Federal Funds Rate +`aaa` | Moody's Seasoned AAA Corporate Bond Yield +`dexcaus` | Canada / U.S. Foreign Exchange Rate (CAD per 1 USD) +   ## Options [»](options/README.md) @@ -371,7 +372,6 @@ signals |view filter signals (e.g. -s top_gainers)   - ## Forex [»](forex/README.md) Command|Description ------ | -------- @@ -390,5 +390,4 @@ order |place a limit order orderbook |display the orderbook if Oanda provides one for the forex instrument positionbook |display the positionbook if Oanda provides one for the forex instrument -   From b4c27423afc44226a241bfa07c7f7a3cabc53842 Mon Sep 17 00:00:00 2001 From: didier Date: Sat, 1 May 2021 04:11:07 +0100 Subject: [PATCH 11/19] minor fixes on economy folder --- gamestonk_terminal/econ/econ_controller.py | 22 +++++++++++----------- gamestonk_terminal/econ/fred_view.py | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/gamestonk_terminal/econ/econ_controller.py b/gamestonk_terminal/econ/econ_controller.py index 3a42e4be093..2bdaf1e8727 100644 --- a/gamestonk_terminal/econ/econ_controller.py +++ b/gamestonk_terminal/econ/econ_controller.py @@ -51,18 +51,18 @@ class EconController: print(" quit quit to abandon program") print(" ") print( - " fred display customized FRED data from https://fred.stlouisfed.org." + " fred display customized FRED data from https://fred.stlouisfed.org" ) - print(" vixcls volatility index") - print(" gdp gross domestic product") - print(" unrate unemployment Rate") - print(" dgs1 1-Year Treasury Constant Maturity Rate") - print(" dgs5 5-Year Treasury Constant Maturity Rate") - print(" dgs10 10-Year Treasury Constant Maturity Rate") - print(" dgs30 30-Year Treasury Constant Maturity Rate") - print(" mortgage30us 30-Year Fixed Rate Mortgage Average") - print(" fedfunds effective Federal Funds Rate") - print(" aaa moody's Seasoned AAA Corporate Bond Yield") + print(" vixcls Volatility Index") + print(" gdp Gross Domestic Product") + print(" unrate Unemployment Rate") + print(" dgs1 1-year Treasury Constant Maturity Rate") + print(" dgs5 5-year Treasury Constant Maturity Rate") + print(" dgs10 10-year Treasury Constant Maturity Rate") + print(" dgs30 30-year Treasury Constant Maturity Rate") + print(" mortgage30us 30-year Fixed Rate Mortgage Average") + print(" fedfunds Effective Federal Funds Rate") + print(" aaa Moody's Seasoned AAA Corporate Bond Yield") print(" dexcaus Canada / U.S. Foreign Exchange Rate (CAD per 1 USD)") print("") return diff --git a/gamestonk_terminal/econ/fred_view.py b/gamestonk_terminal/econ/fred_view.py index 95e67b49047..6304d678915 100644 --- a/gamestonk_terminal/econ/fred_view.py +++ b/gamestonk_terminal/econ/fred_view.py @@ -42,7 +42,7 @@ def display_fred(other_args: List[str], choice: str): other_args : List[str] argparse other args choice : str - Fred data series: "VIX", "GDP", "DGS1", "DGS5", "DGS10", "DGS30", "MORTGAGE30US", "FEDFUNDS", + Fred data series: "VIXCLS", "GDP", "DGS1", "DGS5", "DGS10", "DGS30", "MORTGAGE30US", "FEDFUNDS", "AAA", "DEXCAUS", "UNRATE", """ From 4578d3de7f0954aee0157f0f4fb00fcd84a4db73 Mon Sep 17 00:00:00 2001 From: DidierRLopes Date: Sat, 1 May 2021 04:26:48 +0100 Subject: [PATCH 12/19] Improve backtesting readme --- gamestonk_terminal/backtesting/README.md | 51 ++++++++++++------------ 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/gamestonk_terminal/backtesting/README.md b/gamestonk_terminal/backtesting/README.md index 6a567e027e4..ee38b09b63a 100644 --- a/gamestonk_terminal/backtesting/README.md +++ b/gamestonk_terminal/backtesting/README.md @@ -1,53 +1,52 @@ # Backtesting -The goal of this menu is to allow super simple research into potential strategies. -We currently provides a couple basic options for starting with backtesting strategies. Note that this is currently just a -simple logic (i.e price comparisons). Obviously these strategies should not be used immediately and should be researched, -improved and further tested on your own. +This menu aims to apply backtesting strategies regarding a pre-loaded ticker, and the usage of the following commands along with an example will be exploited below. Note that this is currently just a simple logic (i.e price comparisons). These strategies should not be used immediately and should be researched, improved and further tested on your own. -The current implementation uses the [bt](#http://pmorissette.github.io/bt/index.html) library. +* [ema](#ema) + * buy when price exceeds EMA(l) +* [ema_cross](#ema_cross) + * buy when EMA(short) > EMA(long) +* [rsi](#rsi) + * buy when RSI < low and sell when RSI > high -Current strategies are: -* [Simple EMA](#SimpleEMA) - * Buys the stock when `price > EMA(l)` - -* [EMA Cross](#EMA Cross) - * Buys when EMA(short) > EMA(long) and sells when the opposite is true - -* [RSI](#RSI) - * Momentum strategy that longs when RSI < threshold (oversold) and shorts when +NOTE: The current implementation uses the [bt](#http://pmorissette.github.io/bt/index.html) library. -### SimpleEMA -This strategy buys when price > EMA(l) +### ema ```` usage: ema [-l] [--spy] [--no_bench] ```` + +This strategy buys when price > EMA(l). * -l: Period of EMA to use. Default = 20. * [--spy]: Flag that overlays the results if you buy and hold SPY * [--no_bench]: Flag that removes the benchmark comparison of just buy and hold the stock. -im: +![ema](https://user-images.githubusercontent.com/25267873/116769584-1eb37c80-aa35-11eb-898b-efa36d4a8f5c.png) +ema2 -### EMA Cross -This strategy goes long when EMA(short) > EMA(long) and goes short when -EMA(short) < EMA(long). I provide the option to go long only through the --no_short flag +### ema_cross ```` usage: ema_cross [-l] [-s] [--spy] [--no_bench] [--no_short] ```` + +This strategy goes long when EMA(short) > EMA(long) and goes short when EMA(short) < EMA(long). It provides the option to go long only through the --no_short flag. * -l/--long: Long period of EMA to use. Default = 50. * -s/--short: Short period of EMA to use. Default = 20. * [--spy]: Flag that overlays the results if you buy and hold SPY * [--no_bench]: Flag that removes the benchmark comparison of just buy and hold the stock. * [--no_short]: Flag that removes the shortable option. Will just be long positions when short > long EMAs. -im -### RSI -This strategy goes long when the RSI is "oversold" - defined as the low parameter. It goes short when -the RSI is "overbought" - defined as the high (upper) parameter +![ema_cross](https://user-images.githubusercontent.com/25267873/116769581-1ce9b900-aa35-11eb-85e9-133b3c0b09ad.png) +ema_cross2 + + +### rsi ```` usage: rsi [-u] [-l] [-p] [--spy] [--no_bench] [--no_short] ```` + +This strategy goes long when the RSI is "oversold" - defined as the low parameter. It goes short when the RSI is "overbought" - defined as the high (upper) parameter * -u/--high: High (upper) value to consider overbought. Default = 70 * -s/--short: Short period of EMA to use. Default = 30 * -p/--periods: Periods to use for RSI calculation. Default = 14. @@ -55,5 +54,5 @@ usage: rsi [-u] [-l] [-p] [--spy] [--no_bench] [--no_short] * [--no_bench]: Flag that removes the benchmark comparison of just buy and hold the stock. * [--no_short]: Flag that removes the shortable option. Will just be long positions when short > long EMAs. - - +![rsi](https://user-images.githubusercontent.com/25267873/116769576-19eec880-aa35-11eb-9e60-f77a31e51db0.png) +rsi2 From c93ec6797f213432816feac851a176d3b18030b2 Mon Sep 17 00:00:00 2001 From: DidierRLopes Date: Sat, 1 May 2021 04:29:23 +0100 Subject: [PATCH 13/19] Update README.md --- gamestonk_terminal/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gamestonk_terminal/README.md b/gamestonk_terminal/README.md index 6b810b8fae7..498881d5a53 100644 --- a/gamestonk_terminal/README.md +++ b/gamestonk_terminal/README.md @@ -18,6 +18,7 @@ * [Options](#Options-) * [Screener](#Screener-) * [Forex](#Forex-) +* [Backtesting](#Backtesting-) ## Main @@ -391,3 +392,10 @@ orderbook |display the orderbook if Oanda provides one for the forex instrume positionbook |display the positionbook if Oanda provides one for the forex instrument   + +## Backtesting [»](backtesting/README.md) +Command|Description +------ | -------- +`ema` | buy when price exceeds EMA(l) +`ema_cross` | buy when EMA(short) > EMA(long) +`rsi` | buy when RSI < low and sell when RSI > high From cf849e6395a64f2dceb9042584a1fda995e4b9d8 Mon Sep 17 00:00:00 2001 From: didier Date: Sat, 1 May 2021 04:32:52 +0100 Subject: [PATCH 14/19] black fix --- gamestonk_terminal/main_helper.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gamestonk_terminal/main_helper.py b/gamestonk_terminal/main_helper.py index ef1243cec11..0fd4fe4d441 100644 --- a/gamestonk_terminal/main_helper.py +++ b/gamestonk_terminal/main_helper.py @@ -564,4 +564,6 @@ def print_goodbye(): else: goodbye_msg_time = "Go get some rest soldier!" - print(goodbye_msg[random.randint(0, len(goodbye_msg)-1)] + goodbye_msg_time + "\n") + print( + goodbye_msg[random.randint(0, len(goodbye_msg) - 1)] + goodbye_msg_time + "\n" + ) From 81d95073282f0c6b288fe6b1d514a283341e5d07 Mon Sep 17 00:00:00 2001 From: didier Date: Sat, 1 May 2021 04:40:24 +0100 Subject: [PATCH 15/19] fix fred test --- tests/test_fred_fred_view.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/test_fred_fred_view.py b/tests/test_fred_fred_view.py index 9187649de93..a24db3fd0a2 100644 --- a/tests/test_fred_fred_view.py +++ b/tests/test_fred_fred_view.py @@ -5,7 +5,7 @@ from io import StringIO import pandas as pd # pylint: disable=unused-import -from gamestonk_terminal.econ.fred_view import get_fred_data # noqa: F401 +from gamestonk_terminal.econ.fred_view import display_fred # noqa: F401 fred_data_mock = """ ,GDP @@ -17,14 +17,15 @@ fred_data_mock = """ 2020-04-01,19520.114 2020-07-01,21170.252 2020-10-01,21494.731 +2021-01-01,22048.894 """ class TestFredFredView(unittest.TestCase): @mock.patch("gamestonk_terminal.econ.fred_view.Fred.get_series") - def test_get_fred_data(self, mock_get_series): + def test_display_fred(self, mock_get_series): fred_data = pd.read_csv(StringIO(fred_data_mock), header=0, index_col=0) mock_get_series.return_value = fred_data - get_fred_data(["--noplot"], "gdp") + display_fred(["-t"], "gdp") From af6f0b3077e569268dec9d038361c5993e237f15 Mon Sep 17 00:00:00 2001 From: didier Date: Sat, 1 May 2021 04:46:46 +0100 Subject: [PATCH 16/19] pylint chill please --- gamestonk_terminal/econ/fred_view.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gamestonk_terminal/econ/fred_view.py b/gamestonk_terminal/econ/fred_view.py index 6304d678915..59ccd2c2682 100644 --- a/gamestonk_terminal/econ/fred_view.py +++ b/gamestonk_terminal/econ/fred_view.py @@ -58,7 +58,7 @@ def display_fred(other_args: List[str], choice: str): "-i", "--id", dest="series_id", - required=False if choice else True, + required=bool(choice), type=str, default=choice.upper(), help="FRED Series ID from https://fred.stlouisfed.org", From 6d7caf57584d93d50e828ab66308a8e261cc65ff Mon Sep 17 00:00:00 2001 From: DidierRLopes Date: Sat, 1 May 2021 16:49:25 +0100 Subject: [PATCH 17/19] Add new gst logo designed by @crspy --- images/gst_logo.png | Bin 0 -> 145881 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/gst_logo.png diff --git a/images/gst_logo.png b/images/gst_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..dbb05e0d2b56b091b3f79590da16126e2343e290 GIT binary patch literal 145881 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 z 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≦BF&0AW{g6UKVOEEx&177Jr{b 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 literal 0 HcmV?d00001 From c46ba34369ed7af09770bce43041e7d5836c694c Mon Sep 17 00:00:00 2001 From: DidierRLopes Date: Sat, 1 May 2021 16:49:59 +0100 Subject: [PATCH 18/19] Update latest logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e1e28ee3031..42573c13649 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@

- Logo + Logo

Gamestonk Terminal 🚀

From cf569a6c351cf57bbde966151729829efe44a0dd Mon Sep 17 00:00:00 2001 From: DidierRLopes Date: Sat, 1 May 2021 16:50:42 +0100 Subject: [PATCH 19/19] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 42573c13649..8762e803001 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@

- Logo + Logo

Gamestonk Terminal 🚀