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,
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')
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,
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,