mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-15 11:22:18 +08:00
MAINT: Add equity to naming of bar data classes.
In preparation of adding futures, add equity to the names of both the classes and methods for writing bcolz data. Futures data will use a different minutes per day with a separate reader. This change will allow both equity and futures fixtures to be side by side. Also, break out the method which generates the dataframes and trading days member into fixtures (`EquityMinuteBarData` and `EquityDailyBarData`) on which the `*BarReader` fixture depends. This fixture is separated out to enable reader/writers in different formats to use the same data setup. (There is internal code which needs to write minute and daily bar data in a database format.)
This commit is contained in:
@@ -176,7 +176,7 @@ class BundleCoreTestCase(WithInstanceTmpDir, ZiplineTestCase):
|
||||
|
||||
columns = 'open', 'high', 'low', 'close', 'volume'
|
||||
|
||||
actual = bundle.minute_bar_reader.load_raw_arrays(
|
||||
actual = bundle.equity_minute_bar_reader.load_raw_arrays(
|
||||
columns,
|
||||
minutes[0],
|
||||
minutes[-1],
|
||||
@@ -190,7 +190,7 @@ class BundleCoreTestCase(WithInstanceTmpDir, ZiplineTestCase):
|
||||
msg=colname,
|
||||
)
|
||||
|
||||
actual = bundle.daily_bar_reader.load_raw_arrays(
|
||||
actual = bundle.equity_daily_bar_reader.load_raw_arrays(
|
||||
columns,
|
||||
calendar[0],
|
||||
calendar[-1],
|
||||
|
||||
@@ -216,7 +216,7 @@ class QuandlBundleTestCase(ZiplineTestCase):
|
||||
assert_equal(equity.end_date, self.asset_end, msg=equity)
|
||||
|
||||
cal = self.calendar
|
||||
actual = bundle.daily_bar_reader.load_raw_arrays(
|
||||
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')],
|
||||
|
||||
@@ -177,7 +177,7 @@ class YahooBundleTestCase(WithResponses, ZiplineTestCase):
|
||||
assert_equal(equity.start_date, self.asset_start, msg=equity)
|
||||
assert_equal(equity.end_date, self.asset_end, msg=equity)
|
||||
|
||||
actual = bundle.daily_bar_reader.load_raw_arrays(
|
||||
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')],
|
||||
|
||||
@@ -43,7 +43,7 @@ from zipline.pipeline.loaders.synthetic import (
|
||||
)
|
||||
from zipline.testing import seconds_to_timestamp
|
||||
from zipline.testing.fixtures import (
|
||||
WithBcolzDailyBarReader,
|
||||
WithBcolzEquityDailyBarReader,
|
||||
ZiplineTestCase,
|
||||
)
|
||||
from zipline.utils.calendars import get_calendar
|
||||
@@ -79,19 +79,19 @@ EQUITY_INFO = DataFrame(
|
||||
TEST_QUERY_ASSETS = EQUITY_INFO.index
|
||||
|
||||
|
||||
class BcolzDailyBarTestCase(WithBcolzDailyBarReader, ZiplineTestCase):
|
||||
BCOLZ_DAILY_BAR_START_DATE = TEST_CALENDAR_START
|
||||
BCOLZ_DAILY_BAR_END_DATE = TEST_CALENDAR_STOP
|
||||
class BcolzDailyBarTestCase(WithBcolzEquityDailyBarReader, ZiplineTestCase):
|
||||
EQUITY_DAILY_BAR_START_DATE = TEST_CALENDAR_START
|
||||
EQUITY_DAILY_BAR_END_DATE = TEST_CALENDAR_STOP
|
||||
|
||||
@classmethod
|
||||
def make_equity_info(cls):
|
||||
return EQUITY_INFO
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
return make_bar_data(
|
||||
EQUITY_INFO,
|
||||
cls.bcolz_daily_bar_days,
|
||||
cls.equity_daily_bar_days,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
@@ -187,12 +187,12 @@ class BcolzDailyBarTestCase(WithBcolzDailyBarReader, ZiplineTestCase):
|
||||
|
||||
def test_read_first_trading_day(self):
|
||||
self.assertEqual(
|
||||
self.bcolz_daily_bar_reader.first_trading_day,
|
||||
self.bcolz_equity_daily_bar_reader.first_trading_day,
|
||||
self.trading_days[0],
|
||||
)
|
||||
|
||||
def _check_read_results(self, columns, assets, start_date, end_date):
|
||||
results = self.bcolz_daily_bar_reader.load_raw_arrays(
|
||||
results = self.bcolz_equity_daily_bar_reader.load_raw_arrays(
|
||||
columns,
|
||||
start_date,
|
||||
end_date,
|
||||
@@ -280,7 +280,7 @@ class BcolzDailyBarTestCase(WithBcolzDailyBarReader, ZiplineTestCase):
|
||||
)
|
||||
|
||||
def test_unadjusted_spot_price(self):
|
||||
reader = self.bcolz_daily_bar_reader
|
||||
reader = self.bcolz_equity_daily_bar_reader
|
||||
# At beginning
|
||||
price = reader.spot_price(1, Timestamp('2015-06-01', tz='UTC'),
|
||||
'close')
|
||||
@@ -318,7 +318,7 @@ class BcolzDailyBarTestCase(WithBcolzDailyBarReader, ZiplineTestCase):
|
||||
reader.spot_price(4, Timestamp('2015-06-16', tz='UTC'), 'close')
|
||||
|
||||
def test_unadjusted_spot_price_empty_value(self):
|
||||
reader = self.bcolz_daily_bar_reader
|
||||
reader = self.bcolz_equity_daily_bar_reader
|
||||
|
||||
# A sid, day and corresponding index into which to overwrite a zero.
|
||||
zero_sid = 1
|
||||
|
||||
@@ -32,7 +32,7 @@ from zipline.finance.blotter import Order
|
||||
|
||||
from zipline.data.data_portal import DataPortal
|
||||
from zipline.protocol import BarData
|
||||
from zipline.testing import tmp_bcolz_minute_bar_reader
|
||||
from zipline.testing import tmp_bcolz_equity_minute_bar_reader
|
||||
from zipline.testing.fixtures import (
|
||||
WithDataPortal,
|
||||
WithSimParams,
|
||||
@@ -57,7 +57,7 @@ class SlippageTestCase(WithSimParams, WithDataPortal, ZiplineTestCase):
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def make_minute_bar_data(cls):
|
||||
def make_equity_minute_bar_data(cls):
|
||||
yield 133, pd.DataFrame(
|
||||
{
|
||||
'open': [3.0, 3.0, 3.5, 4.0, 3.5],
|
||||
@@ -91,7 +91,7 @@ class SlippageTestCase(WithSimParams, WithDataPortal, ZiplineTestCase):
|
||||
start=normalize_date(self.minutes[0]),
|
||||
end=normalize_date(self.minutes[-1])
|
||||
)
|
||||
with tmp_bcolz_minute_bar_reader(self.trading_schedule, days, assets) \
|
||||
with tmp_bcolz_equity_minute_bar_reader(self.trading_schedule, days, assets) \
|
||||
as reader:
|
||||
data_portal = DataPortal(
|
||||
self.env.asset_finder, self.trading_schedule,
|
||||
@@ -481,7 +481,7 @@ class SlippageTestCase(WithSimParams, WithDataPortal, ZiplineTestCase):
|
||||
start=normalize_date(self.minutes[0]),
|
||||
end=normalize_date(self.minutes[-1])
|
||||
)
|
||||
with tmp_bcolz_minute_bar_reader(self.trading_schedule, days, assets) \
|
||||
with tmp_bcolz_equity_minute_bar_reader(self.trading_schedule, days, assets) \
|
||||
as reader:
|
||||
data_portal = DataPortal(
|
||||
self.env.asset_finder, self.trading_schedule,
|
||||
|
||||
@@ -893,10 +893,10 @@ class SyntheticBcolzTestCase(WithAdjustmentReader,
|
||||
return ret
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
return make_bar_data(
|
||||
cls.equity_info,
|
||||
cls.bcolz_daily_bar_days,
|
||||
cls.equity_daily_bar_days,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
@@ -905,7 +905,7 @@ class SyntheticBcolzTestCase(WithAdjustmentReader,
|
||||
cls.all_asset_ids = cls.asset_finder.sids
|
||||
cls.last_asset_end = cls.equity_info['end_date'].max()
|
||||
cls.pipeline_loader = USEquityPricingLoader(
|
||||
cls.bcolz_daily_bar_reader,
|
||||
cls.bcolz_equity_daily_bar_reader,
|
||||
cls.adjustment_reader,
|
||||
)
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ from zipline.testing import (
|
||||
)
|
||||
from zipline.testing.fixtures import (
|
||||
WithAdjustmentReader,
|
||||
WithBcolzDailyBarReaderFromCSVs,
|
||||
WithBcolzEquityDailyBarReaderFromCSVs,
|
||||
WithDataPortal,
|
||||
ZiplineTestCase,
|
||||
)
|
||||
@@ -120,7 +120,7 @@ class ClosesOnly(WithDataPortal, ZiplineTestCase):
|
||||
return ret
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
cls.closes = DataFrame(
|
||||
{sid: arange(1, len(cls.dates) + 1) * sid for sid in cls.sids},
|
||||
index=cls.dates,
|
||||
@@ -340,7 +340,7 @@ class MockDailyBarSpotReader(object):
|
||||
return 100.0
|
||||
|
||||
|
||||
class PipelineAlgorithmTestCase(WithBcolzDailyBarReaderFromCSVs,
|
||||
class PipelineAlgorithmTestCase(WithBcolzEquityDailyBarReaderFromCSVs,
|
||||
WithAdjustmentReader,
|
||||
ZiplineTestCase):
|
||||
AAPL = 1
|
||||
@@ -352,7 +352,7 @@ class PipelineAlgorithmTestCase(WithBcolzDailyBarReaderFromCSVs,
|
||||
END_DATE = Timestamp('2015')
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
resources = {
|
||||
cls.AAPL: join(TEST_RESOURCE_PATH, 'AAPL.csv'),
|
||||
cls.MSFT: join(TEST_RESOURCE_PATH, 'MSFT.csv'),
|
||||
@@ -398,7 +398,7 @@ class PipelineAlgorithmTestCase(WithBcolzDailyBarReaderFromCSVs,
|
||||
def init_class_fixtures(cls):
|
||||
super(PipelineAlgorithmTestCase, cls).init_class_fixtures()
|
||||
cls.pipeline_loader = USEquityPricingLoader(
|
||||
cls.bcolz_daily_bar_reader,
|
||||
cls.bcolz_equity_daily_bar_reader,
|
||||
cls.adjustment_reader,
|
||||
)
|
||||
cls.dates = cls.raw_data[cls.AAPL].index.tz_localize('UTC')
|
||||
|
||||
@@ -277,14 +277,14 @@ class USEquityPricingLoaderTestCase(WithAdjustmentReader,
|
||||
return DIVIDENDS
|
||||
|
||||
@classmethod
|
||||
def make_adjustment_writer_daily_bar_reader(cls):
|
||||
def make_adjustment_writer_equity_daily_bar_reader(cls):
|
||||
return MockDailyBarReader()
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
return make_bar_data(
|
||||
EQUITY_INFO,
|
||||
cls.bcolz_daily_bar_days,
|
||||
cls.equity_daily_bar_days,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
@@ -306,13 +306,13 @@ class USEquityPricingLoaderTestCase(WithAdjustmentReader,
|
||||
self.assertLessEqual(eff_date, asset_end)
|
||||
|
||||
def calendar_days_between(self, start_date, end_date, shift=0):
|
||||
slice_ = self.bcolz_daily_bar_days.slice_indexer(start_date, end_date)
|
||||
slice_ = self.equity_daily_bar_days.slice_indexer(start_date, end_date)
|
||||
start = slice_.start + shift
|
||||
stop = slice_.stop + shift
|
||||
if start < 0:
|
||||
raise KeyError(start_date, shift)
|
||||
|
||||
return self.bcolz_daily_bar_days[start:stop]
|
||||
return self.equity_daily_bar_days[start:stop]
|
||||
|
||||
def expected_adjustments(self, start_date, end_date):
|
||||
price_adjustments = {}
|
||||
@@ -417,7 +417,7 @@ class USEquityPricingLoaderTestCase(WithAdjustmentReader,
|
||||
self.assertEqual(adjustments, [{}, {}])
|
||||
|
||||
pricing_loader = USEquityPricingLoader(
|
||||
self.bcolz_daily_bar_reader,
|
||||
self.bcolz_equity_daily_bar_reader,
|
||||
adjustment_reader,
|
||||
)
|
||||
|
||||
@@ -494,7 +494,7 @@ class USEquityPricingLoaderTestCase(WithAdjustmentReader,
|
||||
)
|
||||
|
||||
pricing_loader = USEquityPricingLoader(
|
||||
self.bcolz_daily_bar_reader,
|
||||
self.bcolz_equity_daily_bar_reader,
|
||||
self.adjustment_reader,
|
||||
)
|
||||
|
||||
|
||||
+14
-14
@@ -741,7 +741,7 @@ class TestTransformAlgorithm(WithLogger,
|
||||
return pd.DataFrame.from_dict({3: {'multiplier': 10}}, 'index')
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
return trades_by_sid_to_dfs(
|
||||
{
|
||||
sid: factory.create_trade_history(
|
||||
@@ -1010,7 +1010,7 @@ class TestBeforeTradingStart(WithDataPortal,
|
||||
END_DATE = pd.Timestamp('2016-01-07', tz='utc')
|
||||
SIM_PARAMS_CAPITAL_BASE = 10000
|
||||
SIM_PARAMS_DATA_FREQUENCY = 'minute'
|
||||
BCOLZ_DAILY_BAR_LOOKBACK_DAYS = BCOLZ_MINUTE_BAR_LOOKBACK_DAYS = 1
|
||||
EQUITY_DAILY_BAR_LOOKBACK_DAYS = EQUITY_MINUTE_BAR_LOOKBACK_DAYS = 1
|
||||
|
||||
data_start = ASSET_FINDER_EQUITY_START_DATE = pd.Timestamp(
|
||||
'2016-01-05',
|
||||
@@ -1021,7 +1021,7 @@ class TestBeforeTradingStart(WithDataPortal,
|
||||
ASSET_FINDER_EQUITY_SIDS = 1, 2, SPLIT_ASSET_SID
|
||||
|
||||
@classmethod
|
||||
def make_minute_bar_data(cls):
|
||||
def make_equity_minute_bar_data(cls):
|
||||
asset_minutes = \
|
||||
cls.trading_schedule.execution_minutes_for_days_in_range(
|
||||
cls.data_start,
|
||||
@@ -1066,7 +1066,7 @@ class TestBeforeTradingStart(WithDataPortal,
|
||||
])
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
for sid in cls.ASSET_FINDER_EQUITY_SIDS:
|
||||
yield sid, create_daily_df_for_asset(
|
||||
cls.trading_schedule,
|
||||
@@ -1357,7 +1357,7 @@ class TestAlgoScript(WithLogger,
|
||||
START_DATE = pd.Timestamp('2006-01-03', tz='utc')
|
||||
END_DATE = pd.Timestamp('2006-12-31', tz='utc')
|
||||
DATA_PORTAL_USE_MINUTE_DATA = False
|
||||
BCOLZ_DAILY_BAR_LOOKBACK_DAYS = 5 # max history window length
|
||||
EQUITY_DAILY_BAR_LOOKBACK_DAYS = 5 # max history window length
|
||||
|
||||
ARG_TYPE_TEST_CASES = (
|
||||
('history__assets', (bad_type_history_assets, 'Asset, str', True)),
|
||||
@@ -1397,8 +1397,8 @@ class TestAlgoScript(WithLogger,
|
||||
return data
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
days = len(cls.bcolz_daily_bar_days)
|
||||
def make_equity_daily_bar_data(cls):
|
||||
days = len(cls.equity_daily_bar_days)
|
||||
return trades_by_sid_to_dfs(
|
||||
{
|
||||
0: factory.create_trade_history(
|
||||
@@ -1416,7 +1416,7 @@ class TestAlgoScript(WithLogger,
|
||||
cls.sim_params,
|
||||
cls.trading_schedule)
|
||||
},
|
||||
index=cls.bcolz_daily_bar_days,
|
||||
index=cls.equity_daily_bar_days,
|
||||
)
|
||||
|
||||
def test_noop(self):
|
||||
@@ -1942,7 +1942,7 @@ class TestCapitalChanges(WithLogger,
|
||||
return data
|
||||
|
||||
@classmethod
|
||||
def make_minute_bar_data(cls):
|
||||
def make_equity_minute_bar_data(cls):
|
||||
minutes = cls.trading_schedule.execution_minutes_for_days_in_range(
|
||||
pd.Timestamp('2006-01-03', tz='UTC'),
|
||||
pd.Timestamp('2006-01-09', tz='UTC')
|
||||
@@ -1961,7 +1961,7 @@ class TestCapitalChanges(WithLogger,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
days = cls.trading_schedule.execution_days_in_range(
|
||||
pd.Timestamp('2006-01-03', tz='UTC'),
|
||||
pd.Timestamp('2006-01-09', tz='UTC')
|
||||
@@ -2904,7 +2904,7 @@ class TestAccountControls(WithDataPortal, WithSimParams, ZiplineTestCase):
|
||||
sidint, = ASSET_FINDER_EQUITY_SIDS = (133,)
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
return trades_by_sid_to_dfs(
|
||||
{
|
||||
cls.sidint: factory.create_trade_history(
|
||||
@@ -3051,7 +3051,7 @@ class TestFutureFlip(WithDataPortal, WithSimParams, ZiplineTestCase):
|
||||
sid, = ASSET_FINDER_EQUITY_SIDS = (1,)
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
return trades_by_sid_to_dfs(
|
||||
{
|
||||
cls.sid: factory.create_trade_history(
|
||||
@@ -3169,7 +3169,7 @@ class TestOrderCancelation(WithDataPortal,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def make_minute_bar_data(cls):
|
||||
def make_equity_minute_bar_data(cls):
|
||||
asset_minutes = \
|
||||
cls.trading_schedule.execution_minutes_for_days_in_range(
|
||||
cls.sim_params.period_start,
|
||||
@@ -3192,7 +3192,7 @@ class TestOrderCancelation(WithDataPortal,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
yield 1, pd.DataFrame(
|
||||
{
|
||||
'open': np.full(3, 1),
|
||||
|
||||
@@ -121,7 +121,7 @@ class TestAPIShim(WithDataPortal, WithSimParams, ZiplineTestCase):
|
||||
sids = ASSET_FINDER_EQUITY_SIDS = 1, 2, 3
|
||||
|
||||
@classmethod
|
||||
def make_minute_bar_data(cls):
|
||||
def make_equity_minute_bar_data(cls):
|
||||
for sid in cls.sids:
|
||||
yield sid, create_minute_df_for_asset(
|
||||
cls.trading_schedule,
|
||||
@@ -130,7 +130,7 @@ class TestAPIShim(WithDataPortal, WithSimParams, ZiplineTestCase):
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
for sid in cls.sids:
|
||||
yield sid, create_daily_df_for_asset(
|
||||
cls.trading_schedule,
|
||||
@@ -149,7 +149,7 @@ class TestAPIShim(WithDataPortal, WithSimParams, ZiplineTestCase):
|
||||
])
|
||||
|
||||
@classmethod
|
||||
def make_adjustment_writer_daily_bar_reader(cls):
|
||||
def make_adjustment_writer_equity_daily_bar_reader(cls):
|
||||
return MockDailyBarReader()
|
||||
|
||||
@classmethod
|
||||
|
||||
+42
-41
@@ -103,7 +103,7 @@ class TestMinuteBarData(WithBarDataChecks,
|
||||
HILARIOUSLY_ILLIQUID_ASSET_SID = 5
|
||||
|
||||
@classmethod
|
||||
def make_minute_bar_data(cls):
|
||||
def make_equity_minute_bar_data(cls):
|
||||
# asset1 has trades every minute
|
||||
# asset2 has trades every 10 minutes
|
||||
# split_asset trades every minute
|
||||
@@ -111,22 +111,22 @@ class TestMinuteBarData(WithBarDataChecks,
|
||||
for sid in (1, cls.SPLIT_ASSET_SID):
|
||||
yield sid, create_minute_df_for_asset(
|
||||
cls.trading_schedule,
|
||||
cls.bcolz_minute_bar_days[0],
|
||||
cls.bcolz_minute_bar_days[-1],
|
||||
cls.equity_minute_bar_days[0],
|
||||
cls.equity_minute_bar_days[-1],
|
||||
)
|
||||
|
||||
for sid in (2, cls.ILLIQUID_SPLIT_ASSET_SID):
|
||||
yield sid, create_minute_df_for_asset(
|
||||
cls.trading_schedule,
|
||||
cls.bcolz_minute_bar_days[0],
|
||||
cls.bcolz_minute_bar_days[-1],
|
||||
cls.equity_minute_bar_days[0],
|
||||
cls.equity_minute_bar_days[-1],
|
||||
10,
|
||||
)
|
||||
|
||||
yield cls.HILARIOUSLY_ILLIQUID_ASSET_SID, create_minute_df_for_asset(
|
||||
cls.trading_schedule,
|
||||
cls.bcolz_minute_bar_days[0],
|
||||
cls.bcolz_minute_bar_days[-1],
|
||||
cls.equity_minute_bar_days[0],
|
||||
cls.equity_minute_bar_days[-1],
|
||||
50,
|
||||
)
|
||||
|
||||
@@ -167,7 +167,7 @@ class TestMinuteBarData(WithBarDataChecks,
|
||||
# grab minutes that include the day before the asset start
|
||||
minutes = self.trading_schedule.execution_minutes_for_day(
|
||||
self.trading_schedule.previous_execution_day(
|
||||
self.bcolz_minute_bar_days[0]
|
||||
self.equity_minute_bar_days[0]
|
||||
)
|
||||
)
|
||||
|
||||
@@ -195,7 +195,7 @@ class TestMinuteBarData(WithBarDataChecks,
|
||||
|
||||
def test_regular_minute(self):
|
||||
minutes = self.trading_schedule.execution_minutes_for_day(
|
||||
self.bcolz_minute_bar_days[0]
|
||||
self.equity_minute_bar_days[0]
|
||||
)
|
||||
|
||||
for idx, minute in enumerate(minutes):
|
||||
@@ -287,7 +287,7 @@ class TestMinuteBarData(WithBarDataChecks,
|
||||
|
||||
def test_minute_of_last_day(self):
|
||||
minutes = self.trading_schedule.execution_minutes_for_day(
|
||||
self.bcolz_daily_bar_days[-1],
|
||||
self.equity_daily_bar_days[-1],
|
||||
)
|
||||
|
||||
# this is the last day the assets exist
|
||||
@@ -300,12 +300,12 @@ class TestMinuteBarData(WithBarDataChecks,
|
||||
def test_minute_after_assets_stopped(self):
|
||||
minutes = self.trading_schedule.execution_minutes_for_day(
|
||||
self.trading_schedule.next_execution_day(
|
||||
self.bcolz_minute_bar_days[-1]
|
||||
self.equity_minute_bar_days[-1]
|
||||
)
|
||||
)
|
||||
|
||||
last_trading_minute = self.trading_schedule.execution_minutes_for_day(
|
||||
self.bcolz_minute_bar_days[-1]
|
||||
self.equity_minute_bar_days[-1]
|
||||
)[-1]
|
||||
|
||||
# this entire day is after both assets have stopped trading
|
||||
@@ -347,8 +347,8 @@ class TestMinuteBarData(WithBarDataChecks,
|
||||
|
||||
# ... but that's it's not applied when using spot value
|
||||
minutes = self.trading_schedule.execution_minutes_for_days_in_range(
|
||||
start=self.bcolz_minute_bar_days[0],
|
||||
end=self.bcolz_minute_bar_days[1]
|
||||
start=self.equity_minute_bar_days[0],
|
||||
end=self.equity_minute_bar_days[1]
|
||||
)
|
||||
|
||||
for idx, minute in enumerate(minutes):
|
||||
@@ -362,10 +362,10 @@ class TestMinuteBarData(WithBarDataChecks,
|
||||
# on cls.days[1], the first 9 minutes of ILLIQUID_SPLIT_ASSET are
|
||||
# missing. let's get them.
|
||||
day0_minutes = self.trading_schedule.execution_minutes_for_day(
|
||||
self.bcolz_minute_bar_days[0]
|
||||
self.equity_minute_bar_days[0]
|
||||
)
|
||||
day1_minutes = self.trading_schedule.execution_minutes_for_day(
|
||||
self.bcolz_minute_bar_days[1]
|
||||
self.equity_minute_bar_days[1]
|
||||
)
|
||||
|
||||
for idx, minute in enumerate(day0_minutes[-10:-1]):
|
||||
@@ -396,7 +396,7 @@ class TestMinuteBarData(WithBarDataChecks,
|
||||
def test_spot_price_at_midnight(self):
|
||||
# make sure that if we try to get a minute price at a non-market
|
||||
# minute, we use the previous market close's timestamp
|
||||
day = self.bcolz_minute_bar_days[1]
|
||||
day = self.equity_minute_bar_days[1]
|
||||
|
||||
eight_fortyfive_am_eastern = \
|
||||
pd.Timestamp("{0}-{1}-{2} 8:45".format(
|
||||
@@ -439,7 +439,7 @@ class TestMinuteBarData(WithBarDataChecks,
|
||||
# make sure that if we use `can_trade` at midnight, we don't pretend
|
||||
# we're in the previous day's last minute
|
||||
the_day_after = self.trading_schedule.next_execution_day(
|
||||
self.bcolz_minute_bar_days[-1]
|
||||
self.equity_minute_bar_days[-1]
|
||||
)
|
||||
|
||||
bar_data = BarData(self.data_portal, lambda: the_day_after, "minute")
|
||||
@@ -453,7 +453,7 @@ class TestMinuteBarData(WithBarDataChecks,
|
||||
# but make sure it works when the assets are alive
|
||||
bar_data2 = BarData(
|
||||
self.data_portal,
|
||||
lambda: self.bcolz_minute_bar_days[1],
|
||||
lambda: self.equity_minute_bar_days[1],
|
||||
"minute",
|
||||
)
|
||||
for asset in [self.ASSET1, self.HILARIOUSLY_ILLIQUID_ASSET]:
|
||||
@@ -465,7 +465,7 @@ class TestMinuteBarData(WithBarDataChecks,
|
||||
def test_is_stale_at_midnight(self):
|
||||
bar_data = BarData(
|
||||
self.data_portal,
|
||||
lambda: self.bcolz_minute_bar_days[1],
|
||||
lambda: self.equity_minute_bar_days[1],
|
||||
"minute",
|
||||
)
|
||||
|
||||
@@ -487,7 +487,7 @@ class TestMinuteBarData(WithBarDataChecks,
|
||||
)
|
||||
|
||||
# Current day is 1/06/16
|
||||
day = self.bcolz_daily_bar_days[1]
|
||||
day = self.equity_daily_bar_days[1]
|
||||
eight_fortyfive_am_eastern = \
|
||||
pd.Timestamp("{0}-{1}-{2} 8:45".format(
|
||||
day.year, day.month, day.day),
|
||||
@@ -602,16 +602,16 @@ class TestDailyBarData(WithBarDataChecks,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def make_adjustment_writer_daily_bar_reader(cls):
|
||||
def make_adjustment_writer_equity_daily_bar_reader(cls):
|
||||
return MockDailyBarReader()
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
for sid in cls.sids:
|
||||
yield sid, create_daily_df_for_asset(
|
||||
cls.trading_schedule,
|
||||
cls.bcolz_daily_bar_days[0],
|
||||
cls.bcolz_daily_bar_days[-1],
|
||||
cls.equity_daily_bar_days[0],
|
||||
cls.equity_daily_bar_days[-1],
|
||||
interval=2 - sid % 2
|
||||
)
|
||||
|
||||
@@ -642,9 +642,9 @@ class TestDailyBarData(WithBarDataChecks,
|
||||
cls.ASSETS = [cls.ASSET1, cls.ASSET2]
|
||||
|
||||
def test_day_before_assets_trading(self):
|
||||
# use the day before self.bcolz_daily_bar_days[0]
|
||||
# use the day before self.equity_daily_bar_days[0]
|
||||
day = self.trading_schedule.previous_execution_day(
|
||||
self.bcolz_daily_bar_days[0]
|
||||
self.equity_daily_bar_days[0]
|
||||
)
|
||||
|
||||
bar_data = BarData(self.data_portal, lambda: day, "daily")
|
||||
@@ -668,10 +668,10 @@ class TestDailyBarData(WithBarDataChecks,
|
||||
self.assertTrue(asset_value is pd.NaT)
|
||||
|
||||
def test_semi_active_day(self):
|
||||
# on self.bcolz_daily_bar_days[0], only asset1 has data
|
||||
# on self.equity_daily_bar_days[0], only asset1 has data
|
||||
bar_data = BarData(
|
||||
self.data_portal,
|
||||
lambda: self.bcolz_daily_bar_days[0],
|
||||
lambda: self.equity_daily_bar_days[0],
|
||||
"daily",
|
||||
)
|
||||
self.check_internal_consistency(bar_data)
|
||||
@@ -691,7 +691,7 @@ class TestDailyBarData(WithBarDataChecks,
|
||||
self.assertEqual(2, bar_data.current(self.ASSET1, "close"))
|
||||
self.assertEqual(200, bar_data.current(self.ASSET1, "volume"))
|
||||
self.assertEqual(2, bar_data.current(self.ASSET1, "price"))
|
||||
self.assertEqual(self.bcolz_daily_bar_days[0],
|
||||
self.assertEqual(self.equity_daily_bar_days[0],
|
||||
bar_data.current(self.ASSET1, "last_traded"))
|
||||
|
||||
for field in OHLCP:
|
||||
@@ -706,12 +706,12 @@ class TestDailyBarData(WithBarDataChecks,
|
||||
def test_fully_active_day(self):
|
||||
bar_data = BarData(
|
||||
self.data_portal,
|
||||
lambda: self.bcolz_daily_bar_days[1],
|
||||
lambda: self.equity_daily_bar_days[1],
|
||||
"daily",
|
||||
)
|
||||
self.check_internal_consistency(bar_data)
|
||||
|
||||
# on self.bcolz_daily_bar_days[1], both assets have data
|
||||
# on self.equity_daily_bar_days[1], both assets have data
|
||||
for asset in self.ASSETS:
|
||||
self.assertTrue(bar_data.can_trade(asset))
|
||||
self.assertFalse(bar_data.is_stale(asset))
|
||||
@@ -723,14 +723,14 @@ class TestDailyBarData(WithBarDataChecks,
|
||||
self.assertEqual(300, bar_data.current(asset, "volume"))
|
||||
self.assertEqual(3, bar_data.current(asset, "price"))
|
||||
self.assertEqual(
|
||||
self.bcolz_daily_bar_days[1],
|
||||
self.equity_daily_bar_days[1],
|
||||
bar_data.current(asset, "last_traded")
|
||||
)
|
||||
|
||||
def test_last_active_day(self):
|
||||
bar_data = BarData(
|
||||
self.data_portal,
|
||||
lambda: self.bcolz_daily_bar_days[-1],
|
||||
lambda: self.equity_daily_bar_days[-1],
|
||||
"daily",
|
||||
)
|
||||
self.check_internal_consistency(bar_data)
|
||||
@@ -749,7 +749,7 @@ class TestDailyBarData(WithBarDataChecks,
|
||||
def test_after_assets_dead(self):
|
||||
# both assets end on self.day[-1], so let's try the next day
|
||||
next_day = self.trading_schedule.next_execution_day(
|
||||
self.bcolz_daily_bar_days[-1]
|
||||
self.equity_daily_bar_days[-1]
|
||||
)
|
||||
|
||||
bar_data = BarData(self.data_portal, lambda: next_day, "daily")
|
||||
@@ -767,9 +767,10 @@ class TestDailyBarData(WithBarDataChecks,
|
||||
last_traded_dt = bar_data.current(asset, "last_traded")
|
||||
|
||||
if asset == self.ASSET1:
|
||||
self.assertEqual(self.bcolz_daily_bar_days[-2], last_traded_dt)
|
||||
self.assertEqual(self.equity_daily_bar_days[-2],
|
||||
last_traded_dt)
|
||||
else:
|
||||
self.assertEqual(self.bcolz_daily_bar_days[1], last_traded_dt)
|
||||
self.assertEqual(self.equity_daily_bar_days[1], last_traded_dt)
|
||||
|
||||
@parameterized.expand([
|
||||
("split", 2, 3, 3, 1.5),
|
||||
@@ -805,7 +806,7 @@ class TestDailyBarData(WithBarDataChecks,
|
||||
# ... but that's it's not applied when using spot value
|
||||
bar_data = BarData(
|
||||
self.data_portal,
|
||||
lambda: self.bcolz_daily_bar_days[0],
|
||||
lambda: self.equity_daily_bar_days[0],
|
||||
"daily",
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -814,7 +815,7 @@ class TestDailyBarData(WithBarDataChecks,
|
||||
)
|
||||
bar_data = BarData(
|
||||
self.data_portal,
|
||||
lambda: self.bcolz_daily_bar_days[1],
|
||||
lambda: self.equity_daily_bar_days[1],
|
||||
"daily",
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -826,7 +827,7 @@ class TestDailyBarData(WithBarDataChecks,
|
||||
# ILLIQUID_ASSET has no data on days 0 and 2, and a split on day 2
|
||||
bar_data = BarData(
|
||||
self.data_portal,
|
||||
lambda: self.bcolz_daily_bar_days[1],
|
||||
lambda: self.equity_daily_bar_days[1],
|
||||
"daily",
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -835,7 +836,7 @@ class TestDailyBarData(WithBarDataChecks,
|
||||
|
||||
bar_data = BarData(
|
||||
self.data_portal,
|
||||
lambda: self.bcolz_daily_bar_days[2],
|
||||
lambda: self.equity_daily_bar_days[2],
|
||||
"daily",
|
||||
)
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ from zipline.sources.benchmark_source import BenchmarkSource
|
||||
from zipline.testing import (
|
||||
MockDailyBarReader,
|
||||
create_minute_bar_data,
|
||||
tmp_bcolz_minute_bar_reader,
|
||||
tmp_bcolz_equity_minute_bar_reader,
|
||||
)
|
||||
from zipline.testing.fixtures import (
|
||||
WithDataPortal,
|
||||
@@ -65,7 +65,7 @@ class TestBenchmark(WithDataPortal, WithSimParams, WithTradingSchedule,
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def make_adjustment_writer_daily_bar_reader(cls):
|
||||
def make_adjustment_writer_equity_daily_bar_reader(cls):
|
||||
return MockDailyBarReader()
|
||||
|
||||
@classmethod
|
||||
@@ -147,7 +147,7 @@ class TestBenchmark(WithDataPortal, WithSimParams, WithTradingSchedule,
|
||||
self.sim_params.trading_days[5]
|
||||
)
|
||||
|
||||
tmp_reader = tmp_bcolz_minute_bar_reader(
|
||||
tmp_reader = tmp_bcolz_equity_minute_bar_reader(
|
||||
self.trading_schedule,
|
||||
self.trading_schedule.all_execution_days,
|
||||
create_minute_bar_data(minutes, [2]),
|
||||
@@ -157,7 +157,7 @@ class TestBenchmark(WithDataPortal, WithSimParams, WithTradingSchedule,
|
||||
self.env.asset_finder, self.trading_schedule,
|
||||
first_trading_day=reader.first_trading_day,
|
||||
equity_minute_reader=reader,
|
||||
equity_daily_reader=self.bcolz_daily_bar_reader,
|
||||
equity_daily_reader=self.bcolz_equity_daily_bar_reader,
|
||||
adjustment_reader=self.adjustment_reader,
|
||||
)
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ class BlotterTestCase(WithLogger,
|
||||
ASSET_FINDER_EQUITY_SIDS = 24, 25
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
yield 24, pd.DataFrame(
|
||||
{
|
||||
'open': [50, 50],
|
||||
|
||||
@@ -130,7 +130,7 @@ class CommissionAlgorithmTests(WithDataPortal, WithSimParams, ZiplineTestCase):
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
num_days = len(cls.sim_params.trading_days)
|
||||
|
||||
return trades_by_sid_to_dfs(
|
||||
|
||||
@@ -25,7 +25,7 @@ from zipline.testing import (
|
||||
MockDailyBarReader,
|
||||
)
|
||||
from zipline.testing.fixtures import (
|
||||
WithBcolzMinuteBarReader,
|
||||
WithBcolzEquityMinuteBarReader,
|
||||
WithDataPortal,
|
||||
ZiplineTestCase,
|
||||
alias,
|
||||
@@ -223,7 +223,7 @@ class WithHistory(WithDataPortal):
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def make_adjustment_writer_daily_bar_reader(cls):
|
||||
def make_adjustment_writer_equity_daily_bar_reader(cls):
|
||||
return MockDailyBarReader()
|
||||
|
||||
def verify_regular_dt(self, idx, dt, mode, fields=None, assets=None):
|
||||
@@ -447,11 +447,11 @@ MINUTE_FIELD_INFO = {
|
||||
|
||||
class MinuteEquityHistoryTestCase(WithHistory, ZiplineTestCase):
|
||||
|
||||
BCOLZ_DAILY_BAR_SOURCE_FROM_MINUTE = True
|
||||
EQUITY_DAILY_BAR_SOURCE_FROM_MINUTE = True
|
||||
DATA_PORTAL_FIRST_TRADING_DAY = alias('TRADING_START_DT')
|
||||
|
||||
@classmethod
|
||||
def make_minute_bar_data(cls):
|
||||
def make_equity_minute_bar_data(cls):
|
||||
data = {}
|
||||
sids = {2, 5, cls.SHORT_ASSET_SID, cls.HALF_DAY_TEST_ASSET_SID}
|
||||
for sid in sids:
|
||||
@@ -1314,7 +1314,7 @@ class MinuteEquityHistoryTestCase(WithHistory, ZiplineTestCase):
|
||||
|
||||
class DailyEquityHistoryTestCase(WithHistory, ZiplineTestCase):
|
||||
@classmethod
|
||||
def make_daily_bar_data(cls):
|
||||
def make_equity_daily_bar_data(cls):
|
||||
yield 1, cls.create_df_for_asset(
|
||||
cls.START_DATE,
|
||||
pd.Timestamp('2016-01-30', tz='UTC')
|
||||
@@ -1715,7 +1715,7 @@ class DailyEquityHistoryTestCase(WithHistory, ZiplineTestCase):
|
||||
window_2[self.ASSET2].values)
|
||||
|
||||
|
||||
class MinuteToDailyAggregationTestCase(WithBcolzMinuteBarReader,
|
||||
class MinuteToDailyAggregationTestCase(WithBcolzEquityMinuteBarReader,
|
||||
ZiplineTestCase):
|
||||
|
||||
# March 2016
|
||||
@@ -1740,7 +1740,7 @@ class MinuteToDailyAggregationTestCase(WithBcolzMinuteBarReader,
|
||||
tz='US/Eastern').tz_convert('UTC')
|
||||
|
||||
@classmethod
|
||||
def make_minute_bar_data(cls):
|
||||
def make_equity_minute_bar_data(cls):
|
||||
# sid data is created so that at least one high is lower than a
|
||||
# previous high, and the inverse for low
|
||||
yield 1, pd.DataFrame(
|
||||
@@ -1804,7 +1804,7 @@ class MinuteToDailyAggregationTestCase(WithBcolzMinuteBarReader,
|
||||
# needs to be tested.
|
||||
self.equity_daily_aggregator = DailyHistoryAggregator(
|
||||
self.trading_schedule.schedule.market_open,
|
||||
self.bcolz_minute_bar_reader,
|
||||
self.bcolz_equity_minute_bar_reader,
|
||||
)
|
||||
|
||||
@parameterized.expand([
|
||||
|
||||
Reference in New Issue
Block a user