Ejemplo n.º 1
0
    learning_rate = 0.001
    batch_size = 16
    display_step = 100
    max_epochs = 10
    symbols = ['AAPL', 'AMZN']  #, AAPL, 'GOOG', 'GOOGL', 'FB', 'AMZN']
    n_stocks = len(symbols)
    n_hidden1 = 128
    n_hidden2 = 128
    n_steps_encoder = 20  # time steps, length of time window
    n_output = n_stocks
    T = 30

    # training data
    dset = SP500('data/sandp500/individual_stocks_5yr',
                 symbols=symbols,
                 start_date='2013-01-01',
                 end_date='2013-07-31',
                 T=T,
                 step=1)
    train_loader = DataLoader(
        dset,
        batch_size=batch_size,
        shuffle=False,
        num_workers=4,
        pin_memory=True  # CUDA only
    )
    x, y = train_loader.dataset[0]
    print(x.shape)
    # Network Parameters
    model = LSTM(hidden_size=128,
                 hidden_size2=300,
                 num_securities=n_stocks,
Ejemplo n.º 2
0
def generate_pictures(train_loader, n_features, use_scaler, symbols,
                      train_split, n_epoch):
    predictions = np.zeros((len(train_loader.dataset.chunks), n_features))
    ground_tr = np.zeros((len(train_loader.dataset.chunks), n_features))
    batch_size_pred = 4
    # Create test data set
    dtest = SP500("../data/merge.csv",
                  T=T,
                  step=1,
                  scr=use_scaler,
                  train_split=0)
    test_loader = DataLoader(
        dtest,
        batch_size=batch_size_pred,
        shuffle=False,
        num_workers=4,
        pin_memory=True  # CUDA only
    )

    # Create list of n_stocks lists for storing predictions and GT
    predictions = [[] for i in repeat(None, len(symbols))]
    gts = [[] for i in repeat(None, len(symbols))]
    k = 0
    # Predictions
    for batch_idx, (data, target) in enumerate(test_loader):
        data = Variable(data.permute(1, 0, 2)).contiguous()
        target = Variable(target)
        if use_cuda:
            data = data.cuda()
            target = target.cuda()
        if target.data.size()[0] == batch_size_pred:
            output = model(data)
            for k in range(batch_size_pred):
                s = 0
                for stock in symbols:
                    # print("output.data")
                    predictions[s].append(output.data[k])
                    # print(target.data)
                    gts[s].append(target.data[k])
                    s += 1
            k += 1
    if len(symbols) == 1:
        if (use_scaler == True):
            pred = dtest.scaler.inverse_transform(
                np.array(predictions[0]).reshape((len(predictions[0]), 1)))
            gt = dtest.scaler.inverse_transform(
                np.array(gts[0]).reshape(len(gts[0]), 1))
        else:
            pred = np.array(predictions[0]).reshape((len(predictions[0]), 1))
            gt = np.array(gts[0]).reshape(len(gts[0]), 1)
    if len(symbols) >= 2:
        if (use_scaler == True):
            p = np.array(predictions)
            pred = dtest.scaler.inverse_transform(
                np.array(predictions).transpose())
            gt = dtest.scaler.inverse_transform(np.array(gts).transpose())
        else:
            pred = np.array(predictions).transpose()
            gt = np.array(gts).transpose()

    # Plots for all stocks in list of symbols
    # x = np.array(range(pred.shape[0]))
    # x = [np.datetime64(start_date) + np.timedelta64(x, 'D') for x in range(0, pred.shape[0])]
    # x = np.array(x)
    # months = MonthLocator(range(1, 10), bymonthday=1, interval=1)
    # monthsFmt = DateFormatter("%b '%y")
    s = 0
    print("image {} gt[:,0].shape = " + str(gt[:, 0].shape))
    for stock in symbols:
        # fig, ax = plt.subplots(figsize=(8, 6), dpi=100)
        plt.ioff()
        plt.figure()
        plt.plot(range(gt[:, s].shape[0]), gt[:, s], label="True")
        plt.plot(range(0, int(pred[:, s].shape[0] * (1 - train_split))),
                 pred[:, s][0:int(pred[:, s].shape[0] * (1 - train_split))],
                 label='Predicted - Train')
        plt.plot(range(int(pred[:, s].shape[0] * (1 - train_split)),
                       pred[:, s].shape[0]),
                 pred[:, s][int(pred[:, s].shape[0] * (1 - train_split)):],
                 label='Predicted - Train')
        plt.title('LSTM_Epoch_{}'.format(n_epoch))
        plt.legend(loc='upper left')
        plt.savefig("../fig/" + stock + str(n_epoch) + '.png')
Ejemplo n.º 3
0
    n_hidden1 = 128
    n_hidden2 = 128
    n_steps_encoder = 20  # time steps, length of time window
    n_output = n_stocks
    T = 10
    n_step_data = 10
    start_date = '2013-01-01'
    end_date = '2013-12-31'

    fn_base = "lstm_nstocks_" + str(n_stocks) + "_epochs_" + str(max_epochs) + "_T_" + str(T) + "_train_" + \
              start_date + "_" + end_date

    # training data
    dset = SP500('data/sandp500/individual_stocks_5yr',
                 symbols=symbols,
                 start_date=start_date,
                 end_date=end_date,
                 T=T,
                 step=1)
    train_loader = DataLoader(
        dset,
        batch_size=batch_size,
        shuffle=False,
        num_workers=4,
        pin_memory=True  # CUDA only
    )

    # Network Definition + Optimizer + Scheduler
    model = LSTM(hidden_size=n_hidden1,
                 hidden_size2=n_hidden2,
                 num_securities=n_stocks,
                 dropout=0.2,
Ejemplo n.º 4
0
    display_step = 50
    max_epochs = 100
    n_features = 116  #num of features
    n_hidden1 = 500
    n_hidden2 = 500
    T = 10
    start_date = '1999-11-10'
    use_scaler = False
    symbols = ['600000.SH']
    fn_base = "lstm_nstocks_" + str(n_features) + "_epochs_" + str(
        max_epochs) + "_T_" + str(T) + "_train"

    # training data
    dset = SP500("../../data/merge.csv",
                 T=T,
                 step=1,
                 scr=use_scaler,
                 train_split=0.3)
    train_loader = DataLoader(
        dset,
        batch_size=batch_size,
        shuffle=True,
        num_workers=4,
        pin_memory=True  # CUDA only
    )

    # Network Definition + Optimizer + Scheduler
    model = LSTM(hidden_size=n_hidden1,
                 hidden_size2=n_hidden2,
                 num_securities=n_features,
                 dropout=0.2,