diff --git a/main.py b/main.py index f375fac..64ee621 100644 --- a/main.py +++ b/main.py @@ -28,19 +28,33 @@ async def portfolio(ctx): async def pf2(ctx): user = str(ctx.message.author) portfolio = database.get_stocks(user) + + yesterday_portfolio_value = {} + current_portfolio_value = {} + data = [] for stock in portfolio.keys(): + delta, old_price = yfi.get_delta(stock, return_old_price=True) + current_price = yfi.get_current_price(stock) data.append([ stock, Decimal(portfolio[stock]), - round(float(Decimal(portfolio[stock]) * Decimal(yfi.get_current_price(stock))), 2), - str( round(yfi.get_delta(stock), 2) ) + "%" + round(float(Decimal(portfolio[stock]) * Decimal(current_price)), 2), + str( round(delta, 2) ) + "%" ]) - data.append(["Total", "", round( sum([x[2] for x in data]), 2) , ""]) - + yesterday_portfolio_value[stock] = Decimal(portfolio[stock]) * Decimal(old_price) + current_portfolio_value[stock] = Decimal(portfolio[stock]) * Decimal(current_price) + + yesterday_portfolio_total_value = sum([yesterday_portfolio_value[stock] for stock in yesterday_portfolio_value]) + current_portfolio_total_value = sum([current_portfolio_value[stock] for stock in current_portfolio_value]) + + total_delta = 100 * ( (current_portfolio_total_value / yesterday_portfolio_total_value) - 1 ) + + data.append(["Total", "", round( sum([x[2] for x in data]), 2) , str( round(total_delta, 2) ) + "%"]) + image = t2.generate_table( - headers = ["Ticker", "Shares", "Value ($)", "Delta"], + headers = ["Ticker", "Shares", "Value ($)", "24h"], data = data, title = str(user + "'s Portfolio") ) diff --git a/yfi.py b/yfi.py index b9d99ba..1345039 100644 --- a/yfi.py +++ b/yfi.py @@ -13,9 +13,16 @@ def get_current_price(ticker): todays_data = yf_obj.history(period='1d') return round(todays_data['Close'][0], 2) -def get_delta(ticker): +def get_delta(ticker, return_old_price=False): yf_obj = yf.Ticker(ticker) old_price = yf_obj.history(interval='1d')['Close'][-2] current_price = get_current_price(ticker) delta = 100 * ( (current_price / old_price) - 1 ) - return delta + if return_old_price: + return delta, old_price + else: + return delta + +def get_delta_old_price(ticker): + yf_obj = yf.Ticker(ticker) + return yf_obj.history(interval='1d')['Close'][-2]