Re-implemented the Calendar API.

Instead of having separate ExchangeCalendar and TradingSchedule objects, we
now just have TradingCalendar.  The TradingCalendar keeps track of each
session (defined as a contiguous set of minutes between an open and a close).
It's also responsible for handling the grouping logic of any given minute
to its containing session, or the next/previous session if it's not a market
minute for the given calendar.
This commit is contained in:
Jean Bredeche
2016-07-12 13:13:50 -04:00
parent db4e06055c
commit 6fb4923cc7
71 changed files with 3119 additions and 3981 deletions
+15 -19
View File
@@ -124,7 +124,7 @@ class TestAPIShim(WithDataPortal, WithSimParams, ZiplineTestCase):
def make_equity_minute_bar_data(cls):
for sid in cls.sids:
yield sid, create_minute_df_for_asset(
cls.trading_schedule,
cls.trading_calendar,
cls.SIM_PARAMS_START,
cls.SIM_PARAMS_END,
)
@@ -133,7 +133,7 @@ class TestAPIShim(WithDataPortal, WithSimParams, ZiplineTestCase):
def make_equity_daily_bar_data(cls):
for sid in cls.sids:
yield sid, create_daily_df_for_asset(
cls.trading_schedule,
cls.trading_calendar,
cls.SIM_PARAMS_START,
cls.SIM_PARAMS_END,
)
@@ -179,11 +179,11 @@ class TestAPIShim(WithDataPortal, WithSimParams, ZiplineTestCase):
similar) and the new data API(data.current(sid(N), field) and
similar) hit the same code paths on the DataPortal.
"""
test_start_minute = self.trading_schedule.execution_minutes_for_day(
self.sim_params.trading_days[0]
test_start_minute = self.trading_calendar.minutes_for_session(
self.sim_params.sessions[0]
)[1]
test_end_minute = self.trading_schedule.execution_minutes_for_day(
self.sim_params.trading_days[0]
test_end_minute = self.trading_calendar.minutes_for_session(
self.sim_params.sessions[0]
)[-1]
bar_data = BarData(
self.data_portal,
@@ -257,10 +257,10 @@ class TestAPIShim(WithDataPortal, WithSimParams, ZiplineTestCase):
)
test_sim_params = SimulationParameters(
period_start=test_start_minute,
period_end=test_end_minute,
start_session=test_start_minute,
end_session=test_end_minute,
data_frequency="minute",
trading_schedule=self.trading_schedule,
trading_calendar=self.trading_calendar,
)
history_algorithm = self.create_algo(
@@ -375,13 +375,9 @@ class TestAPIShim(WithDataPortal, WithSimParams, ZiplineTestCase):
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter("default", ZiplineDeprecationWarning)
sim_params = SimulationParameters(
period_start=self.sim_params.trading_days[1],
period_end=self.sim_params.period_end,
capital_base=self.sim_params.capital_base,
data_frequency=self.sim_params.data_frequency,
emission_rate=self.sim_params.emission_rate,
trading_schedule=self.trading_schedule,
sim_params = self.sim_params.create_new(
self.sim_params.sessions[1],
self.sim_params.end_session
)
algo = self.create_algo(history_algo,
@@ -421,10 +417,10 @@ class TestAPIShim(WithDataPortal, WithSimParams, ZiplineTestCase):
warnings.simplefilter("default", ZiplineDeprecationWarning)
sim_params = SimulationParameters(
period_start=self.sim_params.trading_days[8],
period_end=self.sim_params.trading_days[-1],
start_session=self.sim_params.sessions[8],
end_session=self.sim_params.sessions[-1],
data_frequency="minute",
trading_schedule=self.trading_schedule,
trading_calendar=self.trading_calendar,
)
algo = self.create_algo(simple_transforms_algo,