def main(train_stock, val_stock, window_size, batch_size, ep_count, strategy="t-dqn", model_name="model_debug", pretrained=False, debug=False): """ Trains the stock trading bot using Deep Q-Learning. Please see https://arxiv.org/abs/1312.5602 for more details. Args: [python train.py --help] """ import tensorflow as tf print("#TF Version: ",tf.__version__) from tensorflow.python.client import device_lib print("Using device: ") print(device_lib.list_local_devices()) agent = Agent(window_size, strategy=strategy, pretrained=pretrained, model_name=model_name) train_data = get_stock_data(train_stock) val_data = get_stock_data(val_stock) initial_offset = val_data["Close"][1] - val_data["Close"][0] for episode in range(1, ep_count + 1): train_result = train_model(agent, episode, train_data, ep_count=ep_count, batch_size=batch_size, window_size=window_size) val_result, _ , actionCollection = evaluate_model(agent, val_data, window_size, debug) show_train_result(train_result, val_result, initial_offset)
def main(train_stock, val_stock, window_size, batch_size, ep_count, strategy="t-dqn", model_name="model_debug", pretrained=False, debug=False): """ Trains the stock trading bot using Deep Q-Learning. Please see https://arxiv.org/abs/1312.5602 for more details. Args: [python train.py --help] """ agent = Agent(window_size, strategy=strategy, pretrained=pretrained, model_name=model_name) train_data = get_stock_data(train_stock) val_data = get_stock_data(val_stock) initial_offset = val_data[1] - val_data[0] for episode in range(1, ep_count + 1): train_result = train_model(agent, episode, train_data, ep_count=ep_count, batch_size=batch_size, window_size=window_size) val_result, _ = evaluate_model(agent, val_data, window_size, debug) show_train_result(train_result, val_result, initial_offset)
def train(train_stock, val_stock, window_size, batch_size, ep_count, strategy="t-dqn", model_name="model_double-dqn_GOOG_50", pretrained=True, debug=False): """ Trains the stock trading bot using Deep Q-Learning. Please see https://arxiv.org/abs/1312.5602 for more details. Args: [python train.py --help] """ print("Started the model training for the {}".format(symbol)) agent = Agent(window_size, strategy=strategy, pretrained=pretrained, model_name=model_name) train_data = train_stock val_data = val_stock initial_offset = np.array(val_data)[1] - np.array(val_data)[0] for episode in range(1, ep_count + 1): train_result = train_model(agent, episode, train_data, ep_count=ep_count, batch_size=batch_size, window_size=window_size) val_result, _ = evaluate_model(agent, val_data, window_size, debug) show_train_result(train_result, val_result, initial_offset) print("Training the model completed!!")
def main(train_stock, val_stock, window_size, batch_size, ep_count, strategy="t-dqn", model_name="model_debug", pretrained=False, debug=False): agent = Agent(window_size, strategy=strategy, pretrained=pretrained, model_name=model_name) train_data = get_stock_data(train_stock) val_data = get_stock_data(val_stock) initial_offset = val_data[1] - val_data[0] for episode in range(1, ep_count + 1): train_result = train_model(agent, episode, train_data, ep_count=ep_count, batch_size=batch_size, window_size=window_size) val_result, _ = evaluate_model(agent, val_data, window_size, debug) show_train_result(train_result, val_result, initial_offset)
def main(train_stock, val_stock, window_size, batch_size, ep_count, strategy="t-dqn", model_name="model_debug", pretrained=False, debug=False): """Trains the stock trading bot using Deep Q-Learning. Please see https://arxiv.org/abs/1312.5602 for more details. Args: [python train.py --help] """ train_data = filter_data_by_feature_columns(get_stock_data(train_stock)) val_data = filter_data_by_feature_columns(get_stock_data(val_stock)) agent = Agent(window_size * train_data.shape[1], strategy=strategy, pretrained=pretrained, model_name=model_name) for episode in range(1, ep_count + 1): train_result = train_model(agent, episode, train_data, ep_count=ep_count, batch_size=batch_size, window_size=window_size) val_result, _ = evaluate_model(agent, val_data, window_size, debug) show_train_result(train_result, val_result)
def main(train_stock, window_size, batch_size, ep_count, strategy="dqn", model_name="dqn", pretrained=False, debug=False): """ Trains the stock trading bot using Deep Q-Learning. Please see https://arxiv.org/abs/1312.5602 for more details. Args: [python train.py --help] """ train_data = get_stock_data(train_stock) #val_data = get_stock_data(val_stock) agent = Agent(window_size, current_price=train_data[0], strategy=strategy, pretrained=pretrained, model_name=model_name) #initial_offset = val_data[1] - val_data[0] cash_in_hand = [] total_profit = [] for episode in range(1, ep_count + 1): train_result = train_model(agent, episode, train_data, ep_count=ep_count, batch_size=batch_size, window_size=window_size) #val_result, _ = evaluate_model(agent, val_data, window_size, debug) if episode % 100 == 0: agent.save(episode) #show_train_result(train_result) total_profit.append(train_result[2]) cash_in_hand.append(agent.cash_in_hand) agent.reset() plt.plot(np.array(cash_in_hand)) plt.xlabel('cash in hand for each episode') plt.ylabel('Amount') plt.show() plt.plot(np.array(total_profit)) plt.xlabel('total profit for each episode') plt.ylabel('Amount') plt.show()
def main(train_stock, val_stock, economy, window_size, batch_size, ep_count, strategy="dqn", model_name="model_debug", pretrained=False, debug=False): """ Trains the stock trading bot using Deep Q-Learning. Please see https://arxiv.org/abs/1312.5602 for more details. Args: [python train.py --help] """ print("initialize agent") agent = Agent(window_size, strategy=strategy, pretrained=pretrained, model_name=model_name) print('get stock data') train_data = get_stock_data(train_stock) print('get economy leading') economy_data = get_economy_data(economy) print('get val data') val_data = get_stock_data(val_stock) # 첫 째날과 둘 째 날의 종가의 차 initial_offset = val_data[0][1] - val_data[0][0] last_checkpoint = 0 for episode in range(1, ep_count + 1): print('train episode : ', episode) train_result, is_earlystopping = train_model( agent, episode, train_data, economy_data, ep_count=ep_count, batch_size=batch_size, window_size=window_size, last_checkpoint=last_checkpoint) val_result, _ = evaluate_model(agent, val_data, economy_data, window_size, debug) show_train_result(train_result, val_result, initial_offset) if is_earlystopping == False: last_checkpoint = episode
def main(window_size, batch_size, ep_count, model_name, pretrained, debug): """ Trains the stock trading bot using Deep Q-Learning. Please see https://arxiv.org/abs/1312.5602 for more details. Args: [python train.py --help] """ agent = Agent(window_size, pretrained=pretrained, model_name=model_name) train_data = get_stock_data('data/training.csv') val_data = get_stock_data('data/test.csv') initial_offset = val_data[1] - val_data[0] for episode in range(1, ep_count + 1): train_result = train_model(agent, episode, train_data, ep_count=ep_count, batch_size=batch_size, window_size=window_size) val_result, _ = evaluate_model(agent, val_data, window_size, debug) show_train_result(train_result, val_result, initial_offset) agent.soft_save()
def main(train_stock, val_stock, window_size, batch_size, ep_count, strategy="t-dqn", model_name="model_debug", pretrained=False, debug=False): """ Trains the stock trading bot using Deep Q-Learning. Please see https://arxiv.org/abs/1312.5602 for more details. Args: [python train.py --help] """ agent = Agent(window_size, strategy=strategy, pretrained=pretrained, model_name=model_name) train_data = get_stock_data(train_stock) val_data = get_stock_data(val_stock) final_rewards = [] train_roi = [] valid_roi = [] train_loss = [] rewards = [] initial_offset = val_data[1] - val_data[0] for episode in range(1, ep_count + 1): train_result, rewards = train_model(agent, episode, train_data, ep_count=ep_count, batch_size=batch_size, window_size=window_size) final_rewards.extend(rewards) train_roi.append(train_result[2]) train_loss.append(train_result[3]) val_result, _ = evaluate_model(agent, val_data, window_size, debug) valid_roi.append(val_result) show_train_result(train_result, val_result, initial_offset) gs = gridspec.GridSpec(2, 2) fig = plt.figure(figsize=(20, 9)) # To be shifted to Axis 1 ax1 = fig.add_subplot(gs[0, 0]) ax1.plot(range(len(train_loss)), train_loss, color='purple', label='loss') ax1.legend(loc=0, ncol=2, prop={'size': 20}, fancybox=True, borderaxespad=0.) ax1.set_xlabel('Epochs', size=20) ax1.set_ylabel('Train Loss', size=20) ax1.set_title('Loss w.r.t. Epochs', size=20) # To be shifted to Axis 2 ax2 = fig.add_subplot(gs[0, 1]) ax2.plot(range(len(train_roi)), train_roi, color='crimson', label='train') ax2.plot(range(len(valid_roi)), valid_roi, color='olive', label='val') ax2.legend(loc=0, ncol=2, prop={'size': 20}, fancybox=True, borderaxespad=0.) ax2.set_ylabel('Return of Investment($)', size=20) ax2.set_xlabel('Epochs', size=20) ax2.set_title('Train and Valid ROI w.r.t. Epochs', size=20) # To be shifted to Axis 3 ax3 = fig.add_subplot(gs[1, :]) ax3.plot(range(len(final_rewards)), final_rewards, color='red', label='Reward of Rainbow DQN') ax3.set_xlabel('Episodes', size=20) ax3.set_ylabel('Rewards', size=20) ax3.set_title('Reward w.r.t. episodes', size=20) ax3.legend(loc=0, ncol=2, prop={'size': 20}, fancybox=True, borderaxespad=0.) plt.show()