diff options
author | DidierRLopes <dro.lopes@campus.fct.unl.pt> | 2021-09-25 17:03:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-25 17:03:21 +0100 |
commit | 35f82f24bad2b8a93fc8a0b0ad86504ae99e303a (patch) | |
tree | 6ecb0de11c2186c9574ea484db5776cf22b01d86 | |
parent | 71b9e82f3645c25ba4f2c3e552d9cbced44f91bb (diff) |
Add fa/analysis command to analyse filings using NLP (#761)
* Add alpaca keys to cfg_terminal
* Add fa/analysis command for sec filings
* no need for alpaca keys on config_terminal
* fix eclect naming
6 files changed, 92 insertions, 0 deletions
diff --git a/gamestonk_terminal/config_terminal.py b/gamestonk_terminal/config_terminal.py index e112bae9633..832b54718e1 100644 --- a/gamestonk_terminal/config_terminal.py +++ b/gamestonk_terminal/config_terminal.py @@ -91,6 +91,8 @@ API_COINBASE_KEY = os.getenv("GT_API_COINBASE_KEY") or "REPLACE_ME" API_COINBASE_SECRET = os.getenv("GT_API_COINBASE_SECRET") or "REPLACE_ME" API_COINBASE_PASS_PHRASE = os.getenv("GT_API_COINBASE_PASS_PHRASE") or "REPLACE_ME" +# https://alpaca.markets/docs/api-documentation/api-v2/ +# GT_APCA_API_BASE_URL, GT_APCA_API_KEY_ID and GT_APCA_API_SECRET_KEY need to be set as env variable # https://docs.whale-alert.io/ API_WHALE_ALERT_KEY = os.getenv("GT_API_WHALE_ALERT_KEY") or "REPLACE_ME" diff --git a/gamestonk_terminal/stocks/fundamental_analysis/eclect_us_model.py b/gamestonk_terminal/stocks/fundamental_analysis/eclect_us_model.py new file mode 100644 index 00000000000..f72b927a31c --- /dev/null +++ b/gamestonk_terminal/stocks/fundamental_analysis/eclect_us_model.py @@ -0,0 +1,33 @@ +"""Eclect.us model""" +__docformat__ = "numpy" + +import requests + +# pylint: disable=R1718 + + +def get_filings_analysis(ticker: str) -> str: + """Save time reading SEC filings with the help of machine learning. [Source: https://eclect.us] + + Parameters + ---------- + ticker: str + Ticker to see analysis of filings + + Returns + ------- + str + Analysis of filings text + """ + result = requests.get(f"https://api.eclect.us/symbol/{ticker.lower()}?page=1") + + if result.status_code == 200: + if result.json(): + return "\n\n".join( + { + sentence["sentence"] + for sentence in result.json()[0]["daa_highlights"] + } + ) + + return "" diff --git a/gamestonk_terminal/stocks/fundamental_analysis/eclect_us_view.py b/gamestonk_terminal/stocks/fundamental_analysis/eclect_us_view.py new file mode 100644 index 00000000000..a67570ad920 --- /dev/null +++ b/gamestonk_terminal/stocks/fundamental_analysis/eclect_us_view.py @@ -0,0 +1,24 @@ +"""Eclect.us view""" +__docformat__ = "numpy" + +from gamestonk_terminal.stocks.fundamental_analysis import eclect_us_model + + +def display_analysis( + ticker: str, +) -> None: + """Display analysis of SEC filings based on NLP model. [Source: https://eclect.us] + + Parameters + ---------- + ticker: str + Ticker to do SEC filings analysis from + """ + + analysis = eclect_us_model.get_filings_analysis(ticker) + + if analysis: + print(analysis) + else: + print("No SEC filings analysis found for this ticker") + print("") diff --git a/gamestonk_terminal/stocks/fundamental_analysis/fa_controller.py b/gamestonk_terminal/stocks/fundamental_analysis/fa_controller.py index 80fdda20e70..ed58366de0b 100644 --- a/gamestonk_terminal/stocks/fundamental_analysis/fa_controller.py +++ b/gamestonk_terminal/stocks/fundamental_analysis/fa_controller.py @@ -11,6 +11,7 @@ from gamestonk_terminal.stocks.fundamental_analysis.financial_modeling_prep impo fmp_view, ) from gamestonk_terminal.stocks.fundamental_analysis import ( + eclect_us_view, finviz_view, yahoo_finance_view, av_view, @@ -37,6 +38,7 @@ class FundamentalAnalysisController: ] CHOICES_COMMANDS = [ + "analysis", "score", "dcf", "screener", @@ -108,6 +110,7 @@ Fundamental Analysis: screener screen info about the company [Finviz] mgmt management team of the company [Business Insider] + analysis analyse SEC filings with the help of machine learning [Elect.us] score investing score from Warren Buffett, Joseph Piotroski and Benjamin Graham [FMP] warnings company warnings according to Sean Seah book [Market Watch] dcf a customizable discounted cash flow created in excel [stockanalysis] @@ -181,6 +184,24 @@ Other Sources: """Process Quit command - quit the program""" return True + def call_analysis(self, other_args: List[str]): + """Process analysis command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="analysis", + description="""Display analysis of SEC filings based on NLP model. [Source: https://eclect.us]""", + ) + try: + ns_parser = parse_known_args_and_warn(parser, other_args) + if not ns_parser: + return + + eclect_us_view.display_analysis(self.ticker) + + except Exception as e: + print(e, "\n") + def call_mgmt(self, other_args: List[str]): """Process mgmt command""" business_insider_view.management(other_args, self.ticker) diff --git a/website/content/stocks/fundamental_analysis/analysis/_index.md b/website/content/stocks/fundamental_analysis/analysis/_index.md new file mode 100755 index 00000000000..06f672a7ef5 --- /dev/null +++ b/website/content/stocks/fundamental_analysis/analysis/_index.md @@ -0,0 +1,10 @@ +```text +usage: analysis [-h] +``` + +Display analysis of SEC filings based on NLP model. [Source: https://eclect.us] + +``` +optional arguments: + -h, --help show this help message (default: False) +``` diff --git a/website/data/menu/main.yml b/website/data/menu/main.yml index 48cfdb87ea0..fcdde35e745 100755 --- a/website/data/menu/main.yml +++ b/website/data/menu/main.yml @@ -197,6 +197,8 @@ main: ref: "/stocks/fundamental_analysis/screener" - name: mgmt ref: "/stocks/fundamental_analysis/mgmt" + - name: analysis + ref: "/stocks/fundamental_analysis/analysis" - name: score ref: "/stocks/fundamental_analysis/score" - name: warnings |