Files
OpenBB/gamestonk_terminal/stocks/comparison_analysis/finbrain_model.py
DidierRLopes 70b0e79f66 Improve comparison analysis controller to not depend on main ticker (#1012)
* improve comparison analysis controller to not depend on main ticker

* make sure there are similar companies selected

* make sure user specifies ticker to get similar companies from first

* improve ca menu and allow rmv to rmv all

* improve comparison analysis menu

* fix ca/sentiment

* improve titles for James :b

* minor styling fix

* improve help message on screener menu

* allow to go from screener to comparison analysis
2021-12-03 23:00:26 +00:00

51 lines
1.5 KiB
Python

""" Comparison Analysis FinBrain Model """
__docformat__ = "numpy"
from typing import List
import pandas as pd
import requests
def get_sentiments(tickers: List[str]) -> pd.DataFrame:
"""Gets Sentiment analysis from several tickers provided by FinBrain's API
Parameters
----------
tickers : List[str]
List of tickers to get sentiment
Returns
-------
pd.DataFrame
Contains sentiment analysis from several tickers
"""
df_sentiment = pd.DataFrame()
dates_sentiment = []
tickers_to_remove = list()
for ticker in tickers:
result = requests.get(f"https://api.finbrain.tech/v0/sentiments/{ticker}")
if result.status_code == 200:
if "ticker" in result.json() and "sentimentAnalysis" in result.json():
df_sentiment[ticker] = [
float(val)
for val in list(result.json()["sentimentAnalysis"].values())
]
dates_sentiment = list(result.json()["sentimentAnalysis"].keys())
else:
print(f"Unexpected data format from FinBrain API for {ticker}")
tickers_to_remove.append(ticker)
else:
print(f"Request error in retrieving {ticker} sentiment from FinBrain API")
tickers_to_remove.append(ticker)
for ticker in tickers_to_remove:
tickers.remove(ticker)
if not df_sentiment.empty:
df_sentiment.index = dates_sentiment
df_sentiment.sort_index(ascending=True, inplace=True)
return df_sentiment