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 )
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 )
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")
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")
@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")
@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")
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")
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
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")
@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)
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")