def main(stock_name, model_name): # if len(sys.argv) != 3: # print("Usage: python evaluate.py [stock] [model]") # exit() # stock_name, model_name = sys.argv[1], sys.argv[2] model = load_model("models/" + model_name) window_size = model.layers[0].input.shape.as_list()[1] agent = Agent(window_size, True, model_name) data = getStockDataVec(stock_name) l = len(data) - 1 batch_size = 32 state = getState(data, 0, window_size + 1) total_profit = 0 agent.inventory = [] for t in range(l): action = agent.act(state) # sit next_state = getState(data, t + 1, window_size + 1) reward = 0 if action == 1: # buy agent.inventory.append(data[t]) print("Buy: " + formatPrice(data[t])) elif action == 2 and len(agent.inventory) > 0: # sell bought_price = agent.inventory.pop(0) reward = max(data[t] - bought_price, 0) total_profit += data[t] - bought_price print("Sell: " + formatPrice(data[t]) + " | Profit: " + formatPrice(data[t] - bought_price)) done = True if t == l - 1 else False agent.memory.append((state, action, reward, next_state, done)) state = next_state if done: print("--------------------------------") print(stock_name + " Total Profit: " + formatPrice(total_profit)) print("--------------------------------")
def Trainer(stock_name, window_size, episode_count): agent = Agent(window_size) data = getStockDataVec(stock_name) l = len(data) - 1 batch_size = 32 for e in range(episode_count + 1): print("Episode " + str(e) + "/" + str(episode_count)) state = getState(data, 0, window_size + 1) total_profit = 0 agent.inventory = [] for t in range(l): action = agent.act(state) # sit next_state = getState(data, t + 1, window_size + 1) reward = 0 if action == 1: # buy agent.inventory.append(data[t]) print("Buy: " + formatPrice(data[t])) elif action == 2 and len(agent.inventory) > 0: # sell bought_price = agent.inventory.pop(0) reward = max(data[t] - bought_price, 0) total_profit += data[t] - bought_price print("Sell: " + formatPrice(data[t]) + " | Profit: " + formatPrice(data[t] - bought_price)) done = True if t == l - 1 else False agent.memory.append((state, action, reward, next_state, done)) state = next_state if done: print("--------------------------------") print("Total Profit: " + formatPrice(total_profit)) print("--------------------------------") if len(agent.memory) > batch_size: agent.expReplay(batch_size) if e % 10 == 0: agent.model.save("models/model_ep" + str(e))
print("Usage: python train.py [stock] [window] [episodes]") exit() stock_name, window_size, episode_count = sys.argv[1], int(sys.argv[2]), int( sys.argv[3]) agent = Agent(window_size) data = getStockDataVec(stock_name) l = len(data) - 1 for e in range(episode_count + 1): print("Episode " + str(e) + "/" + str(episode_count)) state = getState(data, 0, window_size + 1) total_profit = 0 agent.inventory = [] for t in range(l): action = agent.act(state) # sit next_state = getState(data, t + 1, window_size + 1) reward = 0 if action == 1: # buy agent.inventory.append(data[t]) # print("Buy: " + formatPrice(data[t])) elif action == 2 and len(agent.inventory) > 0: # sell bought_price = agent.inventory.pop(0) reward = max(data[t] - bought_price, 0)
if len(sys.argv) != 3: print "Usage: python evaluate.py [stock] [model]" exit() stock_name, model_name = sys.argv[1], sys.argv[2] model = load_model("models/" + model_name) window_size = model.layers[0].input.shape.as_list()[1] agent = Agent(window_size, True, model_name) data = getStockDataVec(stock_name) l = len(data) - 1 batch_size = 32 state = getState(data, 0, window_size + 1) total_profit = 0 agent.inventory = [] for t in xrange(l): action = agent.act(state) # sit next_state = getState(data, t + 1, window_size + 1) reward = 0 if action == 1: # buy agent.inventory.append(data[t]) print "Buy: " + formatPrice(data[t]) elif action == 2 and len(agent.inventory) > 0: # sell bought_price = agent.inventory.pop(0) reward = max(data[t] - bought_price, 0)
stock_name, model_name = sys.argv[1], sys.argv[2] model = load_model("models/" + model_name) window_size = model.layers[0].input.shape.as_list()[1] print("loading agent ...") agent = {} total_profit = 0 total_profit_array = np.zeros((1259)) buy_and_hold_array = np.zeros((1259)) #buy_and_hold = 0 #buy_and_hold_array = np.zeros((1259)) stocks_held = 0 for xxx, name in enumerate(data): print(name) agent[name] = Agent(window_size, True, model_name) agent[name].inventory = [] print("starting model") for day in range(days): #looping through days print("Day:", day, "Money:", avaliable_money, "TP:", total_profit, "SH:", stocks_held) buy_and_hold = 0 for xxx, name in enumerate(data): #looping through each stock buy_and_hold += (initial_avaliable_money / len(data)) * (data[name][day] / data[name][0]) state = getState(data[name], day, window_size + 1) action = agent[name].act(state) #next_state = getState(data[name], day, window_size + 1) reward = 0 if action == 1: # buy if avaliable_money - data[name][day] > 0: