def portfolio_stocks(user_id): '''Returns the list of stocks in a users portfolio''' portfolio_info = [] stock_list = StockPortfolio.objects.filter(user=user_id) user = StockFolioUser.objects.filter(user=user_id)[0] money = { 'spent': user.spent, 'earnt': user.earnt, 'value': 0, 'profit': '+' } if stock_list: symbols = [stock.stock for stock in stock_list] if len(symbols) == 1: stock_data = [get_current_info(symbols)] else: stock_data = get_current_info(symbols) for stock in stock_data: for stock_from_list in stock_list: if stock_from_list.stock == stock['Symbol']: stock['shares'] = stock_from_list.shares stock['cost'] = int(stock_from_list.shares) * float( stock['LastTradePriceOnly']) money['value'] += float(stock['cost']) portfolio_info = [stock_data ] if stock_data.__class__ == dict else stock_data if float(money['spent']) > (float(money['value']) + float(money['earnt'])): money['profit'] = '-' return {'portfolio_info': portfolio_info, 'money': money}
def portfolio(request): '''The main method for all the user functionality''' user_id = request.user.id if request.method == 'POST': which_form = request.POST.get('which-form', '').strip() if which_form == 'find-stock': symbol = request.POST.get('stock', '').strip().split(' ')[0].strip().upper() if symbol != '': portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render(request, 'StockFolio/portfolio.html', {'stock':get_current_info([''+symbol]), 'news' : get_news_feed(symbol), 'portfolio' : porfolio, 'portfolio_rows' : plot(user_id), 'symbols' : json.dumps(STOCK_SYMBOLS), 'money' : money}) elif which_form == 'download-historical': return download_historical(request.POST.get('stock-symbol', '').strip()) elif which_form == 'buy-stock': symbol = request.POST.get('stock-symbol', '').strip() StockPortfolio.buy(user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render(request, 'StockFolio/portfolio.html', {'stock':get_current_info([''+symbol]), 'news' : get_news_feed(symbol), 'portfolio' : porfolio, 'portfolio_rows' : plot(user_id), 'symbols' : json.dumps(STOCK_SYMBOLS), 'money' : money}) elif which_form == 'buy-sell': symbol = request.POST.get('stock-symbol', '').strip() if request.POST.get('buy-stock'): StockPortfolio.buy(user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) elif request.POST.get('sell-stock'): StockPortfolio.sell(user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render(request, 'StockFolio/portfolio.html', {'stock':get_current_info([''+symbol]), 'news' : get_news_feed(symbol), 'portfolio' : porfolio, 'portfolio_rows' : plot(user_id), 'symbols' : json.dumps(STOCK_SYMBOLS), 'money' : money}) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render(request, 'StockFolio/portfolio.html', {'portfolio' : porfolio, 'portfolio_rows' : plot(user_id), 'symbols' : json.dumps(STOCK_SYMBOLS), 'money' : money})
def portfolio_stocks(user_id): '''Returns the list of stocks in a users portfolio''' portfolio_info = [] stock_list = StockPortfolio.objects.filter(user=user_id) user = StockFolioUser.objects.filter(user=user_id)[0] money = {'spent' : user.spent, 'earnt' : user.earnt, 'value' : 0, 'profit': '+'} if stock_list: symbols = [stock.stock for stock in stock_list] if len(symbols) == 1: stock_data = [get_current_info(symbols)] else: stock_data = get_current_info(symbols) for stock in stock_data: for stock_from_list in stock_list: if stock_from_list.stock == stock['Symbol']: stock['shares'] = stock_from_list.shares stock['cost'] = int(stock_from_list.shares) * float(stock['LastTradePriceOnly']) money['value'] += float(stock['cost']) portfolio_info = [stock_data] if stock_data.__class__ == dict else stock_data if float(money['spent']) > (float(money['value']) + float(money['earnt'])): money['profit'] = '-' return {'portfolio_info' : portfolio_info, 'money' : money}
def portfolio(request): '''The main method for all the user functionality''' user_id = request.user.id if request.method == 'POST': which_form = request.POST.get('which-form', '').strip() if which_form == 'find-stock': symbol = request.POST.get( 'stock', '').strip().split(' ')[0].strip().upper() if symbol != '': portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money }) elif which_form == 'download-historical': return download_historical( request.POST.get('stock-symbol', '').strip()) elif which_form == 'buy-stock': symbol = request.POST.get('stock-symbol', '').strip() StockPortfolio.buy(user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money }) elif which_form == 'recommend': symbol = request.POST.get('stock-symbol', '').strip() portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] reco = [] my_stocks = [] conn = sqlite3.connect('PyFolio.sqlite3') cur = conn.cursor() sql = ''' SELECT svm_prediction FROM stockapp_prediction_svm_all WHERE symbol LIKE "%''' + symbol + '''%" ''' sql2 = ''' SELECT ANN_prediction FROM stockapp_prediction_svm_all WHERE symbol LIKE "%''' + symbol + '''%" ''' cur.execute(sql) result = cur.fetchall() cur.execute(sql2) result2 = cur.fetchall() for i in range(30): reco.append(result[i][0]) stock_price = float(Share(symbol).get_price()) for i in range(len(portfolio_stock['portfolio_info'])): my_stocks.append( portfolio_stock['portfolio_info'][i]['symbol']) if 1.1 * stock_price > reco[29]: if symbol in my_stocks: msg = "Sell this stock to avoid long term losses" else: msg = "Stock is not in your portfolio" elif 1.1 * stock_price > reco[29] > stock_price: if symbol in my_stocks: msg = "Hold the Stock for long term" else: msg = "Stock is not in your portfolio" else: msg = "Buy this stock for long term gains" if result2[0][0] > stock_price + 2: msg = msg + " and buy for short term gains" elif stock_price < result2[0][0] < stock_price + 2: msg = msg + " and hold for short term" else: msg = msg + " and sell to avoid short term losses" return render( request, 'StockFolio/portfolio.html', { 'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money, 'value_reco': msg }) elif which_form == 'buy-sell': symbol = request.POST.get('stock-symbol', '').strip() if request.POST.get('buy-stock'): StockPortfolio.buy( user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) elif request.POST.get('sell-stock'): StockPortfolio.sell( user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money }) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money })
def portfolio(request): '''The main method for all the user functionality''' user_id = request.user.id if request.method == 'POST': which_form = request.POST.get('which-form', '').strip() if which_form == 'find-stock': symbol = request.POST.get( 'stock', '').strip().split(' ')[0].strip().upper() if symbol != '': portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money }) elif which_form == 'download-historical': return download_historical( request.POST.get('stock-symbol', '').strip()) elif which_form == 'buy-stock': symbol = request.POST.get('stock-symbol', '').strip() StockPortfolio.buy(user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money }) elif which_form == 'buy-sell': symbol = request.POST.get('stock-symbol', '').strip() if request.POST.get('buy-stock'): StockPortfolio.buy( user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) elif request.POST.get('sell-stock'): StockPortfolio.sell( user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money }) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money })
def portfolio(request): '''The main method for all the user functionality''' user_id = request.user.id if request.method == 'POST': which_form = request.POST.get('which-form', '').strip() if which_form == 'find-stock': symbol = request.POST.get( 'stock', '').strip().split(' ')[0].strip().upper() if symbol != '': portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'stock_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money }) elif which_form == 'download-historical': return download_historical( request.POST.get('stock-symbol', '').strip()) elif which_form == 'buy-stock': symbol = request.POST.get('stock-symbol', '').strip() StockPortfolio.buy(user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money }) elif which_form == 'recommend': symbol = request.POST.get('stock-symbol', '').strip() portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] reco_svm = [] my_stocks = [] conn = sqlite3.connect('PyFolio.sqlite3') cur = conn.cursor() sql = ''' SELECT svm_prediction FROM stockapp_prediction_svm_all WHERE symbol LIKE "%''' + symbol + '''%" ''' sql2 = ''' SELECT ANN_prediction FROM stockapp_prediction_svm_all WHERE symbol LIKE "%''' + symbol + '''%" ''' sql3 = ''' SELECT bayesian_prediction FROM stockapp_prediction_svm_all WHERE symbol LIKE "%''' + symbol + '''%" ''' cur.execute(sql) result = cur.fetchall() cur.execute(sql2) reco_ann = cur.fetchall() cur.execute(sql3) reco_bay = cur.fetchall() for i in range(30): reco_svm.append(result[i][0]) stock_price = float(Share(symbol).get_price()) for i in range(len(portfolio_stock['portfolio_info'])): my_stocks.append( portfolio_stock['portfolio_info'][i]['symbol']) x, y = 0, 0 if float(reco_ann[0][0]) > float(stock_price) + 5 or float( reco_svm[29]) > 1.05 * float(stock_price): x, y = 0, 0 if float(reco_ann[0][0]) > float(stock_price) + 5 and float( reco_ann[0][0]) <= 1.1 * float(stock_price): x = 1 elif float(reco_svm[29]) > 1.05 * float(stock_price) and float( reco_svm[29]) <= 1.1 * float(stock_price): y = 1 if float(reco_ann[0][0]) > float(stock_price) + 5 and float( reco_svm[29]) > 1.05 * float(stock_price): x, y = 1, 1 if (x == 1 and y == 0): message = "Buy for Short term gains" elif (y == 1 and x == 0): message = "Buy for Long term gains" elif (y == 1 and x == 1): message = "Buy for short and long term gains" if symbol in my_stocks: if float(reco_ann[0][0]) < float(stock_price) + 5 and float( reco_ann[0] [0]) > float(stock_price) - 5 and float( reco_svm[29]) <= 1.05 * float(stock_price) and float( reco_svm[29]) > 0.95 * float(stock_price): x, y = 0, 0 if float( reco_ann[0][0]) < float(stock_price) + 5 and float( reco_ann[0][0]) > float(stock_price) - 5: x = 1 elif float(reco_svm[29] ) <= 1.05 * float(stock_price) and float( reco_svm[29]) > 0.95 * float(stock_price): y = 1 if float(reco_ann[0][0]) < float(stock_price) + 5 and float( reco_ann[0][0]) > float(stock_price) - 5 and float( reco_svm[29] ) <= 1.05 * float(stock_price) and float( reco_svm[29]) > 0.95 * float(stock_price): x, y = 1, 1 if (x == 1 and y == 0): message = "HOLD" elif (y == 1 and x == 0): message = "HOLD" elif (y == 1 and x == 1): message = "HOLD" else: message = "Stock not in your portfolio" if symbol in my_stocks: if float(reco_ann[0][0]) < float(stock_price) - 5 and float( reco_ann[0] [0]) >= 0.90 * float(stock_price) or float( reco_svm[29]) < 0.95 * float(stock_price) and float( reco_svm[29]) > 0.90 * float(stock_price): x, y = 0, 0 if float( reco_ann[0][0]) > float(stock_price) - 5 and float( reco_ann[0][0]) > 0.90 * float(stock_price): x = 1 elif float(reco_svm[29] ) > 0.95 * float(stock_price) and float( reco_svm[29]) > 0.90 * float(stock_price): y = 1 if float( reco_ann[0][0]) > float(stock_price) - 5 and float( reco_ann[0] [0]) >= 0.90 * float(stock_price) and float( reco_svm[29] ) > 0.95 * float(stock_price) and float( reco_svm[29]) > 0.90 * float(stock_price): x, y = 1, 1 if (x == 1 and y == 0): message = "SELL" elif (y == 1 and x == 0): message = "SELL" elif (y == 1 and x == 1): message = "SELL" else: message = "Stock not in your portfolio" ann_pred = "Tomorrow's predicted price: " + str(reco_ann[0][0]) return render( request, 'StockFolio/portfolio.html', { 'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money, 'value_reco': message, 'ann_pred': ann_pred }) elif which_form == 'buy-sell': symbol = request.POST.get('stock-symbol', '').strip() if request.POST.get('buy-stock'): StockPortfolio.buy( user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) elif request.POST.get('sell-stock'): StockPortfolio.sell( user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money }) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money })
def portfolio(request): '''The main method for all the user functionality''' user_id = request.user.id if request.method == 'POST': which_form = request.POST.get('which-form', '').strip( ) # .strip() with no arguments (or None as the first argument) removes all whitespace at the start and end, including spaces, tabs, newlines and carriage returns. if which_form == 'find-stock': symbol = request.POST.get( 'stock', '').strip().split(' ')[0].strip().upper() if symbol != '': portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] stock_quote = execute_query_alpha( function="GLOBAL_QUOTE", symbol=symbol, )['Global Quote'] print(stock_quote) return render( request, 'StockFolio/portfolio.html', { 'stock': stock_quote, 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money }) # return render(request, 'StockFolio/portfolio.html', # {'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money}) elif which_form == 'download-historical': return download_historical( request.POST.get('stock-symbol', '').strip()) elif which_form == 'buy-stock': symbol = request.POST.get('stock-symbol', '').strip() StockPortfolio.buy(user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money }) elif which_form == 'buy-sell': symbol = request.POST.get('stock-symbol', '').strip() if request.POST.get('buy-stock'): StockPortfolio.buy( user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) elif request.POST.get('sell-stock'): StockPortfolio.sell( user_id, symbol, request.POST.get('shares', '').strip(), request.POST.get('cost-per-share', '').strip()) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'stock': get_current_info(['' + symbol]), 'news': get_news_feed(symbol), 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money }) portfolio_stock = portfolio_stocks(user_id) money = portfolio_stock['money'] porfolio = portfolio_stock['portfolio_info'] return render( request, 'StockFolio/portfolio.html', { 'portfolio': porfolio, 'portfolio_rows': plot(user_id), 'symbols': json.dumps(STOCK_SYMBOLS), 'money': money })