def get_data(tickers, tBeg, tEnd, base_dir=quant_quote_home, crop=True): iBeg = date_utils.datetime2iDate(tBeg) iEnd = date_utils.datetime2iDate(tEnd) trading_dates = date_utils.nyseDates(iBeg, iEnd) output = [] for tkr in tickers: tkr_lower = tkr.lower() tkr_upper = tkr.upper() for date in trading_dates: fname = posixpath.join(base_dir, 'allstocks_%i' % date, 'table_%s.csv' % tkr_lower) bars = np.genfromtxt(fname, delimiter=',', skip_header=False, dtype=DTYPE) bars = bars[(bars['time'] >= 931) & (bars['time'] <= 1600)] # if bars.shape[0] != 390: # print 'Number of bars != 390: %s on %i has %i bars. [%s, %s]' % \ # (tkr_upper, date, bars.shape[0], bars['time'][0], bars['time'][-1]) for bar in bars: dt = make_datetime(bar[0], bar[1]) output.append([dt, tkr, bar[5], bar[6]]) # sort by datetime then ticker for use with Zipline return sorted(output, key=operator.itemgetter(0,1))
def get_data(tickers, tBeg, tEnd, base_dir=quant_quote_home, crop=True): iBeg = date_utils.datetime2iDate(tBeg) iEnd = date_utils.datetime2iDate(tEnd) trading_dates = date_utils.nyseDates(iBeg, iEnd) output = [] for tkr in tickers: tkr_lower = tkr.lower() tkr_upper = tkr.upper() for date in trading_dates: fname = posixpath.join(base_dir, 'allstocks_%i' % date, 'table_%s.csv' % tkr_lower) bars = np.genfromtxt(fname, delimiter=',', skip_header=False, dtype=DTYPE) bars = bars[(bars['time'] >= 931) & (bars['time'] <= 1600)] # if bars.shape[0] != 390: # print 'Number of bars != 390: %s on %i has %i bars. [%s, %s]' % \ # (tkr_upper, date, bars.shape[0], bars['time'][0], bars['time'][-1]) for bar in bars: dt = make_datetime(bar[0], bar[1]) output.append([dt, tkr, bar[5], bar[6]]) # sort by datetime then ticker for use with Zipline return sorted(output, key=operator.itemgetter(0, 1))
def get_data(tickers, tBeg, tEnd, include_open=True, portfolio='ETFs'): iBeg = date_utils.datetime2iDate(tBeg) iEnd = date_utils.datetime2iDate(tEnd) trading_dates = date_utils.nyseDates(iBeg, iEnd) sPortDir = posixpath.join(csi_home, portfolio) vsFiles = glob.glob(posixpath.join(sPortDir, '*.CSV')) output = [] for tkr in tickers: idxFile = [] for i, sFile in enumerate(vsFiles): if '%s_' % tkr in sFile: idxFile.append(i) if len(idxFile) == 0: raise Exception('Cannot find file for ticker: %s (looking in %s)' % (tkr, sPortDir)) if len(idxFile) > 1: raise Exception('Multiple files found for ticker: %s' % tkr) csvPath = vsFiles[idxFile[0]] bars = np.genfromtxt(csvPath, delimiter=',', skip_header=False, dtype=DTYPE) for bar in bars: tkr = bar[0] sDate = bar[2] nOpen = bar[3] nClose = bar[6] nVolume = bar[7] dt = datetime.datetime.strptime(sDate, '%Y-%m-%d') if dt.date() >= tBeg.date() and dt.date() <= tEnd.date(): if include_open: output.append( [dt.replace(hour=9, minute=30), tkr, nOpen, nVolume]) output.append( [dt.replace(hour=16, minute=0), tkr, nClose, nVolume]) return sorted(output, key=operator.itemgetter(0, 1))
def get_data(tickers, tBeg, tEnd, include_open=True, portfolio='ETFs'): iBeg = date_utils.datetime2iDate(tBeg) iEnd = date_utils.datetime2iDate(tEnd) trading_dates = date_utils.nyseDates(iBeg, iEnd) sPortDir = posixpath.join(csi_home, portfolio) vsFiles = glob.glob(posixpath.join(sPortDir, '*.CSV')) output = [] for tkr in tickers: idxFile = [] for i, sFile in enumerate(vsFiles): if '%s_' % tkr in sFile: idxFile.append(i) if len(idxFile) == 0: raise Exception('Cannot find file for ticker: %s (looking in %s)' % (tkr, sPortDir)) if len(idxFile) > 1: raise Exception('Multiple files found for ticker: %s' % tkr) csvPath = vsFiles[idxFile[0]] bars = np.genfromtxt(csvPath, delimiter=',', skip_header=False, dtype=DTYPE) for bar in bars: tkr = bar[0] sDate = bar[2] nOpen = bar[3] nClose = bar[6] nVolume = bar[7] dt = datetime.datetime.strptime(sDate, '%Y-%m-%d') if dt.date() >= tBeg.date() and dt.date() <= tEnd.date(): if include_open: output.append([dt.replace(hour=9, minute=30), tkr, nOpen, nVolume]) output.append([dt.replace(hour=16, minute=0), tkr, nClose, nVolume]) return sorted(output, key=operator.itemgetter(0,1))
def check_up_to_date(self): iS = len(self.tickers) data_recent = np.array(self.rows_prices[-iS:]) # check that all tickers have a common most recent update date dt_unique = np.unique(data_recent[:,0]) if len(dt_unique) != 1: raise Exception('All tickers do not have a common recent update date.') dt_last_quote = dt_unique[0] # check that this common update date matches the most recent close dt_now = datetime.datetime.now() iNow = date_utils.datetime2iDate(dt_now) iBeg = date_utils.datetime2iDate(dt_now - datetime.timedelta(days=5)) iEnd = date_utils.datetime2iDate(dt_now) viBusdays = date_utils.nyseDates(iBeg, iEnd) if iNow != viBusdays[-1]: print viBusdays raise Exception('iNow = %i but most recent business day is %i' % (iNow, viBusdays[-1])) '''
def check_up_to_date(self): iS = len(self.tickers) data_recent = np.array(self.rows_prices[-iS:]) # check that all tickers have a common most recent update date dt_unique = np.unique(data_recent[:, 0]) if len(dt_unique) != 1: raise Exception( 'All tickers do not have a common recent update date.') dt_last_quote = dt_unique[0] # check that this common update date matches the most recent close dt_now = datetime.datetime.now() iNow = date_utils.datetime2iDate(dt_now) iBeg = date_utils.datetime2iDate(dt_now - datetime.timedelta(days=5)) iEnd = date_utils.datetime2iDate(dt_now) viBusdays = date_utils.nyseDates(iBeg, iEnd) if iNow != viBusdays[-1]: print viBusdays raise Exception('iNow = %i but most recent business day is %i' % (iNow, viBusdays[-1])) '''