Beispiel #1
0
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()
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
 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
Beispiel #6
0
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()
Beispiel #7
0
            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'))
Beispiel #8
0
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()