def register_cn_bundle_from_yahoo(name, cache=True): """ register a new bundle of stocks from chinese market from yahoo :param name: the name of bundle :return: register result """ symbol_list = get_filtered_symbols(cache) return register( name, yahoo_equities(dict(list(zip(symbol_list, symbol_list)))), )
def test_bundle(self): def get_symbol_from_url(url): params = parse_qs(urlparse(url).query) symbol, = params['s'] return symbol def pricing_callback(request): headers = { 'content-encoding': 'gzip', 'content-type': 'text/csv', } path = test_resource_path( 'yahoo_samples', get_symbol_from_url(request.url) + '.csv.gz', ) with open(path, 'rb') as f: return ( 200, headers, f.read(), ) for _ in range(3): self.responses.add_callback( self.responses.GET, 'http://ichart.finance.yahoo.com/table.csv', pricing_callback, ) def adjustments_callback(request): path = test_resource_path( 'yahoo_samples', get_symbol_from_url(request.url) + '.adjustments.gz', ) return 200, {}, read_compressed(path) for _ in range(3): self.responses.add_callback( self.responses.GET, 'http://ichart.finance.yahoo.com/x', adjustments_callback, ) cal = self.calendar self.register( 'bundle', yahoo_equities(self.symbols), calendar=cal, ) zipline_root = self.enter_instance_context(tmp_dir()).path environ = { 'ZIPLINE_ROOT': zipline_root, } self.ingest('bundle', environ=environ) bundle = load('bundle', environ=environ) sids = 0, 1, 2 equities = bundle.asset_finder.retrieve_all(sids) for equity, expected_symbol in zip(equities, self.symbols): assert_equal(equity.symbol, expected_symbol) for equity in bundle.asset_finder.retrieve_all(sids): assert_equal(equity.start_date, self.asset_start, msg=equity) assert_equal(equity.end_date, self.asset_end, msg=equity) actual = bundle.equity_daily_bar_reader.load_raw_arrays( self.columns, cal[cal.get_loc(self.asset_start, 'bfill')], cal[cal.get_loc(self.asset_end, 'ffill')], sids, ) expected_pricing, expected_adjustments = self._expected_data() assert_equal(actual, expected_pricing, array_decimal=2) adjustments_for_cols = bundle.adjustment_reader.load_adjustments( self.columns, cal, pd.Index(sids), ) for column, adjustments, expected in zip(self.columns, adjustments_for_cols, expected_adjustments): assert_equal( adjustments, expected, msg=column, )
def test_bundle(self): def get_symbol_from_url(url): params = parse_qs(urlparse(url).query) symbol, = params['s'] return symbol def pricing_callback(request): headers = { 'content-encoding': 'gzip', 'content-type': 'text/csv', } path = test_resource_path( 'yahoo_samples', get_symbol_from_url(request.url) + '.csv.gz', ) with open(path, 'rb') as f: return ( 200, headers, f.read(), ) for _ in range(3): self.responses.add_callback( self.responses.GET, 'http://ichart.finance.yahoo.com/table.csv', pricing_callback, ) def adjustments_callback(request): path = test_resource_path( 'yahoo_samples', get_symbol_from_url(request.url) + '.adjustments.gz', ) return 200, {}, read_compressed(path) for _ in range(3): self.responses.add_callback( self.responses.GET, 'http://ichart.finance.yahoo.com/x', adjustments_callback, ) self.register( 'bundle', yahoo_equities(self.symbols), calendar_name='NYSE', start_session=self.asset_start, end_session=self.asset_end, ) zipline_root = self.enter_instance_context(tmp_dir()).path environ = { 'ZIPLINE_ROOT': zipline_root, } self.ingest('bundle', environ=environ, show_progress=False) bundle = self.load('bundle', environ=environ) sids = 0, 1, 2 equities = bundle.asset_finder.retrieve_all(sids) for equity, expected_symbol in zip(equities, self.symbols): assert_equal(equity.symbol, expected_symbol) for equity in bundle.asset_finder.retrieve_all(sids): assert_equal(equity.start_date, self.asset_start, msg=equity) assert_equal(equity.end_date, self.asset_end, msg=equity) sessions = self.sessions actual = bundle.equity_daily_bar_reader.load_raw_arrays( self.columns, sessions[sessions.get_loc(self.asset_start, 'bfill')], sessions[sessions.get_loc(self.asset_end, 'ffill')], sids, ) expected_pricing, expected_adjustments = self._expected_data() assert_equal(actual, expected_pricing, array_decimal=2) adjustments_for_cols = bundle.adjustment_reader.load_adjustments( self.columns, self.sessions, pd.Index(sids), ) for column, adjustments, expected in zip(self.columns, adjustments_for_cols, expected_adjustments): assert_equal( adjustments, expected, msg=column, decimal=4, )