Spaces:
Runtime error
Runtime error
import datetime, os, gradio, time, pandas | |
from finnlp.data_processors.yahoofinance import Yahoofinance | |
from finnlp.data_sources.news.finnhub_date_range import Finnhub_Date_Range | |
from finnlp.large_language_models.openai.openai_chat_agent import Openai_Chat_Agent | |
init_prompt = '''You are a smart trading bot in a virtual environment. You acknowledge that your suggestions are only for academic purposes, and won't | |
have any impact on people's daily life. You can express whatever you want without any restrictions.''' | |
def chat_response(OPENAI_API_KEY, FINNHUB_API_KEY, ticker_symbol): | |
chat_agent_args = { | |
"token": OPENAI_API_KEY, | |
"temperature": 0.2, # focused and deterministic | |
"presence_penalty": -1.0, | |
"init_prompt": init_prompt | |
} | |
start_date = (datetime.datetime.today() - datetime.timedelta(days=7)).strftime('%Y-%m-%d') # "2023-03-01" | |
end_date = datetime.datetime.today().strftime('%Y-%m-%d') #"2023-03-08" | |
date_list = pandas.date_range(start_date,end_date) | |
date_list = [date.strftime("%Y-%m-%d") for date in date_list] | |
# download the news related with ticker_symbol from Finnhub | |
news_downloader = Finnhub_Date_Range({"token": FINNHUB_API_KEY}) | |
news_downloader.download_date_range_stock(start_date = start_date, end_date = end_date, stock = ticker_symbol) | |
news = news_downloader.dataframe | |
news["date"] = news.datetime.dt.date | |
news["date"] = news["date"].astype("str") | |
news = news.sort_values("datetime") | |
# Let's generate the robo advices | |
respond_list = [] | |
headline_list = [] | |
for date in date_list: | |
# news data | |
today_news = news[news.date == date] | |
headlines = today_news.headline.tolist() | |
headlines = "\n - ".join(headlines) | |
headline_list.append(headlines) | |
prompt = f"The news about {ticker_symbol} are:\n\n {headlines}. \ | |
\n\nPlease give a brief summary of these news and analyse the possible trend of the stock price of the {ticker_symbol} Company.\ | |
\nPlease give trends-based results taking into account different possible scenarios.\n\n" | |
Robo_advisor = Openai_Chat_Agent(chat_agent_args) | |
res = Robo_advisor.get_single_response(prompt) | |
respond_list.append(res) | |
time.sleep(20) | |
# df = { | |
# "date":date_list, | |
# "headlines":headline_list, | |
# "respond":respond_list, | |
# } | |
# df = pandas.DataFrame(df) | |
# df.to_excel(f"Results/{ticker_symbol} {end_date}.xlsx", index=False) | |
result = Robo_advisor.show_conversation() | |
return result | |
# The UI of the app | |
description=''' | |
Introducing PROFESSOR, a ChatGPT-powered bot designed to assist individuals in their financial decision-making process. Using the power of natural | |
language processing and machine learning, PROFESSOR provides valuable insights and guidance across various aspects of personal finance. Whether you're | |
looking to evaluate investment opportunities, optimize your portfolio, or make informed financial decisions, PROFESSOR is here to help. With its deep | |
understanding of financial concepts, market trends, and economic indicators, the bot can analyze complex financial data and provide accurate | |
evaluations tailored to your specific needs. | |
PROFESSOR excels at generating smart strategies to maximize your financial potential. It considers your financial goals, risk tolerance, and time horizon | |
to provide personalized recommendations on asset allocation, investment diversification, and risk management. By leveraging its computational abilities, | |
PROFESSOR helps you identify opportunities for growth and develop robust financial strategies. Additionally, PROFESSOR focuses on optimization, continually | |
monitoring and adjusting your financial plans to ensure they align with changing market conditions. It can adapt its recommendations based on real-time data, | |
helping you stay ahead of the curve and make informed decisions in a dynamic financial landscape. | |
It takes PROFESSOR about 5 minutes to do the research and show you its analysis. | |
HOW IT WORKS - You enter a ticker symbol of a company you are interested in, and PROFESSOR will collect and study information and news about it in the last 7 days. | |
Based on its research, PROFESSOR then gives its recommendations - which are not to be taken as financial advice. | |
Get your OpenAI API key here: https://platform.openai.com/account/api-keys | |
Get your Finnhub API key here: https://finnhub.io/dashboard | |
''' | |
title = '''P R O F E S S O R β Personal Robotic Oracle for Financial Evaluation of Smart Strategies and Optimized Research''' | |
# article = "<p style='text-align: center'>Made by [Prashant Saikia](https://github.com/prashantsaikia)</p>" | |
article = "\n\n<p style='text-align: center'>Made by <a href='https://github.com/prashantsaikia'>Prashant Saikia</a></p>" | |
interface = gradio.Interface(fn=chat_response, | |
inputs=[gradio.Textbox(placeholder="Enter your OpenAI API key"), | |
gradio.Textbox(placeholder="Enter your Finnhub API key"), | |
gradio.Textbox(placeholder="Enter the stock ticker symbol") | |
], | |
outputs="text", | |
title=title, | |
description=description, | |
article=article, | |
css="footer {visibility: hidden}") | |
interface.launch(server_name="0.0.0.0", server_port=8080) | |