Sarathrsk03's picture
Upload 4 files
3e49315 verified
import gradio as gr
import yfinance as yf
import csv
import pandas as pd
import matplotlib.pyplot as plt
from valuation import parallel_portfolio_valuation,serialCal
def get_stock_price(stock_symbol):
try:
stock = yf.Ticker(stock_symbol)
stock_data = stock.history(period="1d")
latest_close = stock_data['Close'].iloc[-1]
return float(latest_close)
except Exception as e:
return 0
def getCompoanyInfo(portfolio):
#yfinance
company_data = []
for stock in portfolio:
try:
stock_info = yf.Ticker(stock['symbol']).info
# Collect key datasets
company_details = {
'symbol': stock['symbol'],
'company_name': stock_info.get('longName', 'N/A'),
'sector': stock_info.get('sector', 'N/A'),
'industry': stock_info.get('industry', 'N/A'),
'market_cap': stock_info.get('marketCap', 'N/A'),
'dividend_yield': stock_info.get('dividendYield', 'N/A'),
'pe_ratio': stock_info.get('trailingPE', 'N/A'),
'52_week_high': stock_info.get('fiftyTwoWeekHigh', 'N/A'),
'52_week_low': stock_info.get('fiftyTwoWeekLow', 'N/A'),
'price': round(stock['price'],2),
'quantity': stock['quantity'],
}
company_data.append(company_details)
except Exception as e:
print(f"Error fetching data for {stock['symbol']}: {e}")
continue
return pd.DataFrame(company_data)
def calculatePortfolioValue(file:str):
portfolio = []
"""
portfolio = [
{'symbol': 'AAPL', 'price': 160, 'quantity': 100},
{'symbol': 'GOOG', 'price': 2000, 'quantity': 50},
{'symbol': 'MSFT', 'price': 300, 'quantity': 200},
]
"""
with open(file,"r") as fr:
reader = csv.reader(fr)
for i in list(reader)[1:]:
#print({'symbol':i[0],'price':get_stock_price(i[0]),'quantity':i[1]})
portfolio.append({'symbol':i[0],'price':get_stock_price(i[0]),'quantity':float(i[1])})
return str(round(parallel_portfolio_valuation(portfolio),2)) + " $", getCompoanyInfo(portfolio)
def startGradio():
with gr.Blocks() as demo:
text1 = gr.Text(value ="Stock Portfolio Valuation using multiprocessing",interactive=False,show_label=False)
with gr.Column():
file = gr.File()
df = gr.Dataframe()
parallelValue = gr.Textbox(label="Portfolio Valuation through the process of paralleization")
bt = gr.Button()
bt.click(fn=calculatePortfolioValue,inputs=[file],outputs=[parallelValue,df])
demo.load()
demo.launch()
if __name__ == "__main__":
startGradio()
#calculatePortfolioValue("/Users/sarathrajan/Desktop/HPCUI/stocks_qty.csv")