import streamlit as st from transformers import pipeline import google.generativeai as genai import yfinance as yf import matplotlib.pyplot as plt import pandas as pd import func import news_scraper import requests from bs4 import BeautifulSoup import json # # S E T U P # # TODO: deploy fin_data = "" pipe = pipeline( "text-classification", model="mrm8488/distilroberta-finetuned-financial-news-sentiment-analysis", ) API_KEY = "AIzaSyDnRd4-UvV4U9oYcZfLXRT224pnU0KwEao" model = genai.GenerativeModel("gemini-1.5-flash") genai.configure(api_key=API_KEY) fig = plt.figure(figsize=(4, 4)) st.title("Stock Analysis and Prediction") # FIN INDICATOR CHARTS AND MODELS stock_name = st.text_input(label="enter the ticker name") # news_scraper history = yf.download(stock_name, start="2023-01-01") stck = yf.Ticker(stock_name) dict = stck.info # st.write(dict) df = pd.DataFrame.from_dict(dict, orient="index") df = df.reset_index() df_str = df.to_string() st.write(df_str) keywords = [stock_name, "finance", "news news news"] news_scraper.perform_search(keywords) with open("results.json", "r", encoding="utf-8") as f: data = json.load(f) text_descriptions = "" for frame in data: text_descriptions += "Title: " + frame["Title"] text_descriptions += " " + (frame["Description"]) st.write(text_descriptions) # SENTIMENT TRACKER # TODO : CONNECT THE SCRAPER TO THE SENTIMENT PIPELINE output_sentiment = pipe(text_descriptions) st.write(output_sentiment) prompt = f"You are a financial analyst, given relevant data provide only the pros and cons of the stock provide a buy reccomendation on a scale of 1 to 10. This is the financial data {df_str} . Consider the following news : {text_descriptions}, also here is a sentiment score of the recent news{output_sentiment}." # GEMINI API RESPONSE CODE response = model.generate_content(prompt) st.write(response.text) # st.line_chart(history["Close"]) fig1 = func.plot_column(history, "Close") st.pyplot(fig1) st.write("% Change") fig2 = func.plot_column(history, "Volume") st.line_chart(history["Close"].pct_change()) st.pyplot(fig2)