Beispiel #1
0
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))
Beispiel #2
0
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))
Beispiel #3
0
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))
Beispiel #4
0
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))
Beispiel #5
0
    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]))
        
        '''
Beispiel #6
0
    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]))
        '''