def assessFitness(self): trade_at_open = True fitnessess = [] for (d,date) in enumerate(trading_days): # Make up some VWAP vol profiles buying = buyings[d] volProfiles = [] if trade_at_open: filename = os.getcwd() + '/tickData/' + date.strftime('%Y%m%d') + ticker + 'open.csv' startTrading = datetime.datetime.combine(date, datetime.time(13, 30, 0)) endTrading = datetime.datetime.combine(date, datetime.time(14, 0, 0)) volProfiles.append(VolWindow(datetime.time(13, 30, 0), datetime.time(13, 35, 0))) volProfiles[0].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 35, 0), datetime.time(13, 40, 0))) volProfiles[1].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 40, 0), datetime.time(13, 45, 0))) volProfiles[2].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 45, 0), datetime.time(13, 50, 0))) volProfiles[3].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 50, 0), datetime.time(13, 55, 0))) volProfiles[4].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 55, 0), datetime.time(14, 00, 0))) volProfiles[5].volProfile = 5 else: filename = os.getcwd() + '/tickData/' + date.strftime('%Y%m%d') + ticker + 'close.csv' startTrading = datetime.datetime.combine(date, datetime.time(13, 30, 0)) endTrading = datetime.datetime.combine(date, datetime.time(14, 0, 0)) volProfiles.append(VolWindow(datetime.time(13, 30, 0), datetime.time(13, 35, 0))) volProfiles[0].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 35, 0), datetime.time(13, 40, 0))) volProfiles[1].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 40, 0), datetime.time(13, 45, 0))) volProfiles[2].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 45, 0), datetime.time(13, 50, 0))) volProfiles[3].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 50, 0), datetime.time(13, 55, 0))) volProfiles[4].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 55, 0), datetime.time(14, 00, 0))) volProfiles[5].volProfile = 5 theVWAP = VWAP(startTrading,endTrading,BINSIZE) trading_session = Trading(buying, date, startTrading, endTrading, volProfiles, filename, open_prices[d], self.genotype) trading_session.trade() trades = trading_session.trades trade_prices = [x[1] for x in trades] theVWAP.addDatapointFile(filename, False) the_vwaps = theVWAP.getBinVWAPS() for (i,price) in enumerate(trade_prices): if price==None: fitnessess.append(0.0) else: if trading_session.buying: f = (the_vwaps[i]-price)/float(the_vwaps[i]) else: f = (price-the_vwaps[i])/float(the_vwaps[i]) fitnessess.append(1+f) self.fitness = (sum(fitnessess)/float(len(fitnessess)))
volProfiles[0].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 35, 0), datetime.time(13, 40, 0))) volProfiles[1].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 40, 0), datetime.time(13, 45, 0))) volProfiles[2].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 45, 0), datetime.time(13, 50, 0))) volProfiles[3].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 50, 0), datetime.time(13, 55, 0))) volProfiles[4].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 55, 0), datetime.time(14, 00, 0))) volProfiles[5].volProfile = 5 trading_session = Trading(buying, date, startTrading, endTrading, volProfiles, filename, open_prices[d], elite_genome) trading_session.trade() trades = trading_session.trades trade_times = [x[0] for x in trades] trade_prices = [x[1] for x in trades] crappyvolProfiles = [] ################ For crappy crappyvolProfiles.append(VolWindow(datetime.time(13, 30, 0), datetime.time(13, 35, 0))) crappyvolProfiles[0].volProfile = 5 crappyvolProfiles.append(VolWindow(datetime.time(13, 35, 0), datetime.time(13, 40, 0))) crappyvolProfiles[1].volProfile = 5 crappyvolProfiles.append(VolWindow(datetime.time(13, 40, 0), datetime.time(13, 45, 0))) crappyvolProfiles[2].volProfile = 5 crappyvolProfiles.append(VolWindow(datetime.time(13, 45, 0), datetime.time(13, 50, 0))) crappyvolProfiles[3].volProfile = 5
volProfiles[0].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 35, 0), datetime.time(13, 40, 0))) volProfiles[1].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 40, 0), datetime.time(13, 45, 0))) volProfiles[2].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 45, 0), datetime.time(13, 50, 0))) volProfiles[3].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 50, 0), datetime.time(13, 55, 0))) volProfiles[4].volProfile = 5 volProfiles.append(VolWindow(datetime.time(13, 55, 0), datetime.time(14, 00, 0))) volProfiles[5].volProfile = 5 # trade mornTrading = Trading(True, date, startTrading, endTrading, volProfiles, filename, oPrices[i]) mornTrading.trade() # skim through file to work out period VWAP pqSum = 0 qSum = 0 try: reader = open(filename, 'rU') for line in reader: split = line.split(',') if (split[1] == 'TRADE'): pqSum += int(split[3]) * float(split[2]) qSum += int(split[3]) reader.close() expVwap = (pqSum / float(qSum)) except IOError: print 'Cannot open input file "{}"'.format(filename)