Пример #1
0
def main():
    out = []
    tickers = pd.read_excel('./tickers.xlsx')
    #tickers = pd.DataFrame({'Ticker': ['GUSH', 'AAPL']})
    print (tickers)
    for tick in tickers['Ticker']:
        print (tick)
        try:
            st = Scraper()
            df = st.scrape(tick)
            #df.to_csv('./output/df.csv')
            ind = df['Date'].iloc[-50:]
            ind = ind.reset_index()
            #ind.to_csv('./output/ind.csv')
            del df['Date']
            points = []
            for record in df['Adj Close']:
                points.append(float(record))
                print (record)
            best_case = 0
            #for w in [0.8, 0.9, 1, 1.1, 1.2, 1.5, 2, 3, 4, 5]:
            for w in [5]:
                segment = Segment(points, 0, len(points), multiplier=w)
                segment.get_turning_points()
                index = sorted(segment.turning_points)
                print(index)
                closes = []
                for i in index:
                    closes.append(points[i])
                profit = Profit.profit(closes)
                #verify logic below
                if profit > best_case:
                    print("weight: ", w)
                    best_case = profit
                    print("profit: ", profit)
                    best_index = index
                    best_closes = closes
            t = Transform()
            transform = t.trend(best_index, best_closes)
            #pd.DataFrame(transform).to_excel('./output/transformed.xlsx')
            df['transformed'] = transform
            sra = t.correlation(df)
            significant_sra = t.significant(sra)
            df_norm = t.normalize(df[significant_sra['Field']])
            #df_norm.to_csv('./output/normalizedinputs.csv')
            n = NeuralNetwork()
            neural, actual = n.network(df_norm, transform)
            pd.DataFrame({'Neural': neural}).to_csv('./output/neural.csv')
            esf = ExponentialSmoothing()
            smoothed = esf.es(neural, actual)
            smoothed['Closes'] = points[-50:]
            smoothed['Date'] = ind['Date']
            smoothed['Ticker'] = tick
            if len(out) == 0:
                out = smoothed
            else:
                out = out.append(smoothed)
        except:
            pass
    today = datetime.date.today()
    pd.DataFrame(out).to_excel('./output/smoothed %s.xlsx'%format(today))