示例#1
0
文件: bitmex.py 项目: dongyi/zipline
def main():
    register_calendar('BITMEX', AlwaysOpenCalendar())
    # The following is necessary because zipline's developer hard-coded NYSE
    # everywhere in run_algo._run, *DOH*!!!
    deregister_calendar('NYSE')
    register_calendar_alias('NYSE', 'BITMEX', force=False)
    register(
        'bitmex',
        create_bundle(
            [
                Pairs.symbol_btc,
                #Pairs.symbol_ada,
                #Pairs.symbol_bch,
                #Pairs.symbol_eos,
                #Pairs.symbol_eth,
                #Pairs.symbol_ltc,
                #Pairs.symbol_trx,
                #Pairs.symbol_xrp,
            ],
            pd.Timestamp('2017-11-05 00:00:00', tz='utc'),
            pd.Timestamp('2018-12-18 23:59:59', tz='utc'),
        ),
        calendar_name='BITMEX',
        minutes_per_day=24*60
    )
示例#2
0
def main():
    register_calendar('CN_FUTURES', CN_FUTURE_CALENDAR(), force=True)

    deregister_calendar('NYSE')

    register_calendar_alias('NYSE', 'CN_FUTURES', force=True)

    register(
        'CN_FUTURES',
        create_bundle(
            ['IC', 'IH', 'IF', 'RB'],
            pd.Timestamp('2017-09-20 01:31:00', tz='utc'),
            pd.Timestamp('2018-10-31 01:31:00', tz='utc'),
        ),
        calendar_name='CN_FUTURES',
        minutes_per_day=4 * 60 + 90
    )
示例#3
0
                split = DataFrame(data=tmp.index.tolist(),
                                  columns=['effective_date'])
                split['ratio'] = tmp.tolist()
                split['sid'] = sid

                splits = divs_splits['splits']
                index = Index(
                    range(splits.shape[0], splits.shape[0] + split.shape[0]))
                split.set_index(index, inplace=True)
                divs_splits['splits'] = splits.append(split)

            if 'dividend' in dfr.columns:
                # ex_date   amount  sid record_date declared_date pay_date
                tmp = dfr[dfr['dividend'] != 0.0]['dividend']
                div = DataFrame(data=tmp.index.tolist(), columns=['ex_date'])
                div['record_date'] = NaT
                div['declared_date'] = NaT
                div['pay_date'] = NaT
                div['amount'] = tmp.tolist()
                div['sid'] = sid

                divs = divs_splits['divs']
                ind = Index(range(divs.shape[0], divs.shape[0] + div.shape[0]))
                div.set_index(ind, inplace=True)
                divs_splits['divs'] = divs.append(div)

            yield sid, dfr


register_calendar_alias("CSVDIR", "NYSE")
示例#4
0
文件: yahoo.py 项目: fswzb/zipline-1
        dividends['record_date'] = pd.NaT
        dividends['declared_date'] = pd.NaT
        dividends['pay_date'] = pd.NaT

        adjustment_writer.write(splits=splits, dividends=dividends)

    return ingest


# bundle used when creating test data
register(
    '.test',
    yahoo_equities(
        (
            'AMD',
            'CERN',
            'COST',
            'DELL',
            'GPS',
            'INTC',
            'MMM',
            'AAPL',
            'MSFT',
        ),
        pd.Timestamp('2004-01-02', tz='utc'),
        pd.Timestamp('2015-01-01', tz='utc'),
    ),
)

register_calendar_alias("YAHOO", "NYSE")
示例#5
0

@bundles.register('quantopian-quandl', create_writers=False)
def quantopian_quandl_bundle(environ,
                             asset_db_writer,
                             minute_bar_writer,
                             daily_bar_writer,
                             adjustment_writer,
                             calendar,
                             start_session,
                             end_session,
                             cache,
                             show_progress,
                             output_dir):
    if show_progress:
        data = download_with_progress(
            QUANTOPIAN_QUANDL_URL,
            chunk_size=ONE_MEGABYTE,
            label="Downloading Bundle: quantopian-quandl",
        )
    else:
        data = download_without_progress(QUANTOPIAN_QUANDL_URL)

    with tarfile.open('r', fileobj=data) as tar:
        if show_progress:
            print("Writing data to %s." % output_dir)
        tar.extractall(output_dir)


register_calendar_alias("QUANDL", "NYSE")
示例#6
0
        dividends['record_date'] = pd.NaT
        dividends['declared_date'] = pd.NaT
        dividends['pay_date'] = pd.NaT

        adjustment_writer.write(splits=splits, dividends=dividends)

    return ingest


# bundle used when creating test data
register(
    '.test',
    yahoo_equities(
        (
            'AMD',
            'CERN',
            'COST',
            'DELL',
            'GPS',
            'INTC',
            'MMM',
            'AAPL',
            'MSFT',
        ),
        pd.Timestamp('2004-01-02', tz='utc'),
        pd.Timestamp('2015-01-01', tz='utc'),
    ),
)

register_calendar_alias("YAHOO", "NYSE")
示例#7
0
@bundles.register('quantopian-quandl', create_writers=False)
def quantopian_quandl_bundle(environ,
                             asset_db_writer,
                             minute_bar_writer,
                             daily_bar_writer,
                             adjustment_writer,
                             calendar,
                             start_session,
                             end_session,
                             cache,
                             show_progress,
                             output_dir,
                             writer="bcolz"):
    if show_progress:
        data = download_with_progress(
            QUANTOPIAN_QUANDL_URL,
            chunk_size=ONE_MEGABYTE,
            label="Downloading Bundle: quantopian-quandl",
        )
    else:
        data = download_without_progress(QUANTOPIAN_QUANDL_URL)

    with tarfile.open('r', fileobj=data) as tar:
        if show_progress:
            print("Writing data to %s." % output_dir)
        tar.extractall(output_dir)


register_calendar_alias("QUANDL", "NYSE")
示例#8
0
                split = DataFrame(data=tmp.index.tolist(),
                                  columns=['effective_date'])
                split['ratio'] = tmp.tolist()
                split['sid'] = sid

                splits = divs_splits['splits']
                index = Index(range(splits.shape[0],
                                    splits.shape[0] + split.shape[0]))
                split.set_index(index, inplace=True)
                divs_splits['splits'] = splits.append(split)

            if 'dividend' in dfr.columns:
                # ex_date   amount  sid record_date declared_date pay_date
                tmp = dfr[dfr['dividend'] != 0.0]['dividend']
                div = DataFrame(data=tmp.index.tolist(), columns=['ex_date'])
                div['record_date'] = NaT
                div['declared_date'] = NaT
                div['pay_date'] = NaT
                div['amount'] = tmp.tolist()
                div['sid'] = sid

                divs = divs_splits['divs']
                ind = Index(range(divs.shape[0], divs.shape[0] + div.shape[0]))
                div.set_index(ind, inplace=True)
                divs_splits['divs'] = divs.append(div)

            yield sid, dfr


register_calendar_alias("CSVDIR", "NYSE")
示例#9
0
    if 'split_ratio' not in raw_data.columns:
        raw_data['split_ratio'] = 1
    if 'ex_dividend' not in raw_data.columns:
        raw_data['ex_dividend'] = 0
    adjustment_writer.write(
        splits=parse_splits(
            raw_data[['sid', 'date', 'split_ratio',]].loc[raw_data.split_ratio != 1],
            show_progress=show_progress
        ),
        dividends=parse_dividends(
            raw_data[['sid', 'date', 'ex_dividend',]].loc[raw_data.ex_dividend != 0],
            show_progress=show_progress
        )
    )

register_calendar_alias("YXQUANT", "SHSZ")


###### del
'''
    from io import BytesIO
    import tarfile
    from zipfile import ZipFile

    from click import progressbar
    from logbook import Logger
    import pandas as pd
    import requests
    from six.moves.urllib.parse import urlencode
    from six import iteritems
示例#10
0
        dividends['pay_date'] = pd.NaT

        adjustment_writer.write(splits=splits, dividends=dividends)
        '''
        adjustment_writer.write()

    return ingest


# bundle used when creating test data
register(
    '.test',
    yahoo_equities(
        (
            'AMD',
            'CERN',
            'COST',
            'DELL',
            'GPS',
            'INTC',
            'MMM',
            'AAPL',
            'MSFT',
        ),
        pd.Timestamp('2004-01-02', tz='utc'),
        pd.Timestamp('2015-01-01', tz='utc'),
    ),
)

register_calendar_alias("YAHOO", "SHSZ")
示例#11
0
    @property
    def tz(self):
        return timezone('UTC')

    @property
    def open_time(self):
        return time(0, 0)

    @property
    def close_time(self):
        return time(23, 59)

    @lazyval
    def day(self):
        return CustomBusinessDay(weekmask='Mon Tue Wed Thu Fri Sat Sun')


register_calendar('POLONIEX', PoloniexCalendar())
# The following is necessary because zipline's developer hard-coded NYSE
# everywhere in run_algo._run, *DOH*!!!
deregister_calendar('NYSE')
register_calendar_alias('NYSE', 'POLONIEX', force=False)
register('.test_poloniex',
         create_bundle(
             [Pairs.usdt_eth],
             pd.Timestamp('2016-01-01', tz='utc'),
             pd.Timestamp('2016-01-31', tz='utc'),
         ),
         calendar_name='POLONIEX',
         minutes_per_day=24 * 60)
示例#12
0
        splits = adj_df[adj_df.action == 'SPLIT']
        splits = splits.rename(
            columns={'value': 'ratio', 'date': 'effective_date'},
        )
        splits.drop('action', axis=1, inplace=True)

        dividends = adj_df[adj_df.action == 'DIVIDEND']
        dividends = dividends.rename(
            columns={'value': 'amount', 'date': 'ex_date'},
        )
        dividends.drop('action', axis=1, inplace=True)
        # we do not have this data in the yahoo dataset
        dividends['record_date'] = pd.NaT
        dividends['declared_date'] = pd.NaT
        dividends['pay_date'] = pd.NaT

        adjustment_writer.write(splits=splits, dividends=dividends)

    return ingest


# bundle used when creating test data
register(
    'hs300',
    hs300_equities(
    ),
    "SH"
)
#
register_calendar_alias("hs300", "SH")