Python Forum
Errors with Machine Learning trading bot-- not sure why
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Errors with Machine Learning trading bot-- not sure why
#1
Hey Everyone!
I am having multiple errors with no traceback with this Q-Learning Trading Bot. Any help would be really appreciated!
Best Wishes,
Matt
# Import pandas datareader
import pandas_datareader
pandas_datareader.__version__
import pandas as pd
from pandas_datareader import data
import numpy as np
import random as random
import tensorflow as tf

# Set the start and end date
start_date = '2017-01-01'
end_date = '2019-02-01'
# Set the ticker
ticker = 'AMZN'
# Get the data
data = data.get_data_yahoo(ticker, start_date, end_date)




#print(data.head())
pricesdf = data.Close.to_string(index=False)
prices = (list(pricesdf.split()))[1:]
#print(prices)   



class DecisionPolicy:
    def select_action(self, current_state, step):
        pass
    def update_q(self, state, action, reward, next_state):
        pass

class RandomDecisionPolicy(DecisionPolicy):
    def __init__(self, actions):
        self.actions = actions
        
    def select_action(self, current_state, step):
        action = self.actions[random.randint(0, len(self.actions) -1)]
        #print(action)
        return action
class QLearningDecisionPolicy(DecisionPolicy):
    def __init__(self, actions, input_dim):
        self.epsilon = .5
        self.gamma = .001
        self.actions = actions
        output_dim = len(actions)
        h1_dim = 200
        self.sess = tf.Session(target='', graph=None, config=None)
        self.x = tf.placeholder(tf.float32, [None, input_dim])
        self.y = tf.placeholder(tf.float32, [output_dim])
        W1 = tf.Variable(tf.random_normal([input_dim,h1_dim]))
        b1= tf.Variable(tf.constant(0.1,shape=[h1_dim]))
        h1 = tf.nn.relu(tf.matmul(self.x, W1) + b1)
        W2 = tf.Variable(tf.random_normal([h1_dim,output_dim]))
        b2 = tf.Variable(tf.constant(.1, shape=[output_dim]))
        self.q = tf.nn.relu(tf.matmul(h1,W2) +b2)
        loss = tf.square(self.y - self.q)
        self.train_op = tf.train.GradientDescentOptimizer(.01).minimize(loss)
    def select_action(self,current_state, step):
        threshold = min(self.epsilon, step / 1000.)
        if random.random() < threshold:
            action_q_vals = self.sess.run(self.q,feed_dict={self.x: current_state})
            action_idx = np.argmax(action_q_vals)
            action = self.actions[action_idx]
        else:
            action = self.actions[random.randint(0,len(self.actions)-1)]


def run_simulation(policy, initial_budget, initial_num_stocks, prices, hist, debug=False):

    budget = initial_budget

    num_stocks = initial_num_stocks

    share_value = 0

    
    transitions = list()

    
    

    for i in range(len(prices) - hist - 1):

        

        if i % 100 == 0:

            #print('progress {:.2f}%'.format(float(100*i) / (len(prices) - hist - 1)))
            

            current_state = np.asmatrix(np.hstack((prices[i:i+hist], budget, num_stocks)))

            current_portfolio = budget + num_stocks * share_value

            action = policy.select_action(current_state, i)

            share_value = float(prices[i + hist + 1])

            if action == 'Buy' and budget >= share_value:

                 budget -= share_value

                 num_stocks += 1

            elif action == 'Sell' and num_stocks > 0:

                budget += share_value

                num_stocks -= 1

            else:

                action = 'Hold'

            new_portfolio = budget + num_stocks * share_value

            reward = new_portfolio - current_portfolio

            next_state = np.asmatrix(np.hstack((prices[i+1:i+hist+1],

            budget, num_stocks)))

            transitions.append((current_state, action, reward, next_state))

            policy.update_q(current_state, action, reward, next_state)

            portfolio = budget + num_stocks * share_value

    if debug:

     print('${}t{} shares'.format(budget, num_stocks))

    return portfolio

def run_simulations(policy, budget, num_stocks, prices, hist):
    num_tries = 100
    final_portfolios = list()
    for i in range(num_tries):
        final_portfolio = run_simulation(policy, budget, num_stocks, prices, hist)
        final_portfolios.append(final_portfolio)
    avg, std = np.mean(final_portfolios), np.std(final_portfolios)
    return avg, std

actions = ['Buy', 'Sell', 'Hold']

hist = 200

policy = QLearningDecisionPolicy(actions, input_dim = 202)

budget = 1000.0

num_stocks = 0

avg,std=run_simulations(policy,budget,num_stocks,prices, hist)

print(avg, std)
Reply
#2
What are the errors? And why no traceback? What are you using to do your development?
Reply
#3
Here is the Error Message:
Error:
Traceback (most recent call last): File "C:\Users\Matthew\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\client\session.py", line 1365, in _do_call return fn(*args) File "C:\Users\Matthew\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\client\session.py", line 1350, in _run_fn target_list, run_metadata) File "C:\Users\Matthew\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\client\session.py", line 1443, in _call_tf_sessionrun run_metadata) tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value Variable [[{{node Variable/read}}]] During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\Matthew\source\repos\Python2\Python2\Python2.py", line 157, in <module> avg,std=run_simulations(policy,budget,num_stocks,prices, hist) File "C:\Users\Matthew\source\repos\Python2\Python2\Python2.py", line 142, in run_simulations final_portfolio = run_simulation(policy, budget, num_stocks, prices, hist) File "C:\Users\Matthew\source\repos\Python2\Python2\Python2.py", line 98, in run_simulation action = policy.select_action(current_state, i) File "C:\Users\Matthew\source\repos\Python2\Python2\Python2.py", line 64, in select_action action_q_vals = self.sess.run(self.q,feed_dict={self.x: current_state}) File "C:\Users\Matthew\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\client\session.py", line 956, in run run_metadata_ptr) File "C:\Users\Matthew\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\client\session.py", line 1180, in _run feed_dict_tensor, options, run_metadata) File "C:\Users\Matthew\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\client\session.py", line 1359, in _do_run run_metadata) File "C:\Users\Matthew\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\client\session.py", line 1384, in _do_call raise type(e)(node_def, op, message) tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value Variable [[node Variable/read (defined at \AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\framework\ops.py:1748) ]] Original stack trace for 'Variable/read': File "\source\repos\Python2\Python2\Python2.py", line 151, in <module> policy = QLearningDecisionPolicy(actions, input_dim = 202) File "\source\repos\Python2\Python2\Python2.py", line 53, in __init__ W1 = tf.Variable(tf.random_normal([input_dim,h1_dim])) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\ops\variables.py", line 258, in __call__ return cls._variable_v1_call(*args, **kwargs) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\ops\variables.py", line 219, in _variable_v1_call shape=shape) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\ops\variables.py", line 197, in <lambda> previous_getter = lambda **kwargs: default_variable_creator(None, **kwargs) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\ops\variable_scope.py", line 2519, in default_variable_creator shape=shape) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\ops\variables.py", line 262, in __call__ return super(VariableMetaclass, cls).__call__(*args, **kwargs) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\ops\variables.py", line 1688, in __init__ shape=shape) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\ops\variables.py", line 1872, in _init_from_args self._snapshot = array_ops.identity(self._variable, name="read") File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\util\dispatch.py", line 180, in wrapper return target(*args, **kwargs) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\ops\array_ops.py", line 203, in identity ret = gen_array_ops.identity(input, name=name) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\ops\gen_array_ops.py", line 4239, in identity "Identity", input=input, name=name) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\framework\op_def_library.py", line 794, in _apply_op_helper op_def=op_def) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\util\deprecation.py", line 507, in new_func return func(*args, **kwargs) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\framework\ops.py", line 3357, in create_op attrs, op_def, compute_device) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\framework\ops.py", line 3426, in _create_op_internal op_def=op_def) File "\AppData\Local\Programs\Python\Python37\lib\site-packages\tensorflow_core\python\framework\ops.py", line 1748, in __init__ self._traceback = tf_stack.extract_stack()
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Trading Code RotmanIT 4 2,561 Nov-18-2019, 09:58 AM
Last Post: DeaD_EyE
  python machine learning model, macro precision score? metalray 5 7,254 Sep-28-2017, 09:13 PM
Last Post: nilamo
  Machine Learning for Applications in Architecture JinLee 0 2,718 Sep-20-2017, 12:54 AM
Last Post: JinLee
  Machine Learning Antivirus [Urgent] Echoo0o 4 4,901 Jul-28-2017, 01:57 PM
Last Post: nilamo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020