def main(): a = Stock('AAPL') print(a._data) stocks = [Stock('AAPL'), Stock('MSFT'), Stock('GOLD')] plotter = StockPlotting(stocks, 'Adj Close') # plotter.plot_ratio() plotter.plot_portfolio() # main()
def plot(): # print(users_stocks) d_number = imp_numbers['days_number'] if d_number: try: start = ( datetime.date.today() - datetime.timedelta(days=int(d_number))).strftime("%Y-%m-%d") except ValueError: start = datetime.datetime(2016, 1, 1).strftime("%Y-%m-%d") else: start = datetime.datetime(2016, 1, 1).strftime("%Y-%m-%d") end = datetime.date.today().strftime("%Y-%m-%d") try: invest_num = int(imp_numbers['inv_number']) except ValueError: invest_num = None stocks = [Stock(elem[0], elem[1], start, end) for elem in users_stocks] names_stocks_portfolio = [ item[0].name for item in StockAnalyzer( stocks, start, end, invest_num).process_stocks('Adj Close') ] return render_template('layout.html', img_source1=plot_portfolio(users_stocks, start, end, invest_num), img_source2=plot_ratio_change( users_stocks, start, end, invest_num), len=len(names_stocks_portfolio), names_stocks_portfolio=names_stocks_portfolio)
def plot_ratio_change(stocks_names, start=None, end=None, invest_num=None): s, e = start, end stocks = [Stock(name) for name in stocks_names] plotter = StockPlotting(stocks, 'Adj Close', s, e, invest_num) return plotter.plot_ratio() # print(date_start)
def plot_ratio_change(stocks_values, start=None, end=None, invest_num=None): """Return a figure of a plot of ratio change""" s, e = start, end stocks = [Stock(item[0], item[1], s, e) for item in stocks_values] plotter = StockPlotting(stocks, 'Adj Close', s, e, invest_num) return plotter.plot_ratio() # print(date_start)
def __init__(self, stocks, start=None, end=None, invest_num=None): self._stocks = Array(len(stocks)) for i, stock in enumerate(stocks): self._stocks[i] = Stock(stock.name, start, end) self._profitable = None if invest_num: try: self._invest_num = int(invest_num) except ValueError: self._invest_num = None else: self._invest_num = None
def plot_portfolio(stocks_values, start=None, end=None, invest_num=None): """Return a figure of a plot of portfolio""" s, e = start, end stocks = [Stock(item[0], item[1], s, e) for item in stocks_values] plotter = StockPlotting(stocks, 'Adj Close', s, e, invest_num) return plotter.plot_portfolio()
stocks_frames.append((stock_name, stock_frame)) combined_frame = pd.DataFrame( {item[0]: item[1][target_data] for item in stocks_frames}) return combined_frame def get_ratio_df(self, tracker): """Get ratio dataframe from stocks, based on a tracker""" if not self._profitable: self.process_stocks(tracker) combined_df = self.get_combined_stock_dataframe( [item[0] for item in self._profitable], target_data=tracker) return combined_df.apply(lambda x: x / x[0]) def get_portfolio_df(self, tracker): """Get the portfolio dataframe from stocks, based on a tracker""" if not self._profitable: self.process_stocks(tracker) combined_df = self.get_combined_stock_dataframe( [item[0] for item in self._profitable], target_data=tracker) portfolio_df = pd.DataFrame(combined_df.sum(axis=1, skipna=True), columns=['Portfolio']) return portfolio_df if __name__ == '__main__': s, e = '2020-1-1', datetime.date.today().strftime('%Y-%m-%d') a = StockAnalyzer([Stock('AAPL', s, e), Stock('MSFT', s, e)]) print(a.process_stocks('Adj Close')) print(a.get_portfolio_df('Adj Close'))
def plot_portfolio(stocks_names, start=None, end=None, invest_num=None): s, e = start, end stocks = [Stock(name) for name in stocks_names] plotter = StockPlotting(stocks, 'Adj Close', s, e, invest_num) return plotter.plot_portfolio()