Beispiel #1
0
    def test_load_raw_arrays(self):
        reindex_reader = ReindexSessionBarReader(
            self.trading_calendar,
            self.bcolz_equity_daily_bar_reader,
            self.START_DATE,
            self.END_DATE,
        )

        outer_sessions = self.trading_calendar.sessions_in_range(
            self.START_DATE, self.END_DATE)

        result = reindex_reader.load_raw_arrays(OHLCV, self.START_DATE,
                                                self.END_DATE, [1, 2])

        opens = DataFrame(data=result[0], index=outer_sessions, columns=[1, 2])
        opens_with_price = opens.dropna()

        self.assertEqual(
            21, len(opens),
            "The reindexed result should have 21 days, which is the number of "
            "business days in 2015-11")
        self.assertEqual(
            20, len(opens_with_price),
            "The reindexed result after dropping nans should have 20 days, "
            "because Thanksgiving is a NYSE holiday.")

        # Thanksgiving, 2015-11-26.
        # Is a holiday in NYSE, but not in us_futures.
        tday_loc = outer_sessions.get_loc(pd.Timestamp('2015-11-26', tz='UTC'))

        assert_almost_equal(
            nan,
            opens[1][tday_loc],
            err_msg="2015-11-26 should be `nan`, since Thanksgiving is a "
            "holiday in the reader's calendar.")
Beispiel #2
0
    def init_instance_fixtures(self):
        super(TestReindexSessionBars, self).init_instance_fixtures()

        self.reader = ReindexSessionBarReader(
            self.trading_calendar,
            self.bcolz_equity_daily_bar_reader,
            self.START_DATE,
            self.END_DATE,
        )
Beispiel #3
0
    def init_instance_fixtures(self):
        super(TestReindexSessionBars, self).init_instance_fixtures()

        self.reader = ReindexSessionBarReader(
            self.trading_calendar,
            self.bcolz_equity_daily_bar_reader,
            self.START_DATE,
            self.END_DATE,
        )
Beispiel #4
0
    def _ensure_reader_aligned(self, reader):
        if reader is None:
            return

        if reader.trading_calendar.name == self.trading_calendar.name:
            return reader
        elif reader.data_frequency == 'minute':
            return ReindexMinuteBarReader(self.trading_calendar, reader,
                                          self._first_trading_session,
                                          self._last_trading_session)
        elif reader.data_frequency == 'session':
            return ReindexSessionBarReader(self.trading_calendar, reader,
                                           self._first_trading_session,
                                           self._last_trading_session)
Beispiel #5
0
    def init_class_fixtures(cls):
        super().init_class_fixtures()

        readers = {
            Equity:
            ReindexSessionBarReader(cls.trading_calendar,
                                    cls.bcolz_equity_daily_bar_reader,
                                    cls.START_DATE, cls.END_DATE),
            Future:
            MinuteResampleSessionBarReader(
                cls.trading_calendar,
                cls.bcolz_future_minute_bar_reader,
            )
        }
        cls.dispatch_reader = AssetDispatchSessionBarReader(
            cls.trading_calendar, cls.asset_finder, readers)
Beispiel #6
0
class TestReindexSessionBars(WithBcolzEquityDailyBarReader, ZiplineTestCase):

    TRADING_CALENDAR_STRS = ('us_futures', 'NYSE')
    TRADING_CALENDAR_PRIMARY_CAL = 'us_futures'

    ASSET_FINDER_EQUITY_SIDS = 1, 2, 3

    # Dates are chosen to span Thanksgiving, which is not a Holiday on
    # us_futures.
    START_DATE = pd.Timestamp('2015-11-02', tz='UTC')
    END_DATE = pd.Timestamp('2015-11-30', tz='UTC')

    #     November 2015
    # Su Mo Tu We Th Fr Sa
    #  1  2  3  4  5  6  7
    #  8  9 10 11 12 13 14
    # 15 16 17 18 19 20 21
    # 22 23 24 25 26 27 28
    # 29 30

    def init_instance_fixtures(self):
        super(TestReindexSessionBars, self).init_instance_fixtures()

        self.reader = ReindexSessionBarReader(
            self.trading_calendar,
            self.bcolz_equity_daily_bar_reader,
            self.START_DATE,
            self.END_DATE,
        )

    def test_load_raw_arrays(self):
        outer_sessions = self.trading_calendar.sessions_in_range(
            self.START_DATE, self.END_DATE)

        result = self.reader.load_raw_arrays(OHLCV, self.START_DATE,
                                             self.END_DATE, [1, 2])

        opens = DataFrame(data=result[0], index=outer_sessions, columns=[1, 2])
        opens_with_price = opens.dropna()

        self.assertEqual(
            21, len(opens),
            "The reindexed result should have 21 days, which is the number of "
            "business days in 2015-11")
        self.assertEqual(
            20, len(opens_with_price),
            "The reindexed result after dropping nans should have 20 days, "
            "because Thanksgiving is a NYSE holiday.")

        tday = pd.Timestamp('2015-11-26', tz='UTC')

        # Thanksgiving, 2015-11-26.
        # Is a holiday in NYSE, but not in us_futures.
        tday_loc = outer_sessions.get_loc(tday)

        assert_almost_equal(
            nan,
            opens[1][tday_loc],
            err_msg="2015-11-26 should be `nan`, since Thanksgiving is a "
            "holiday in the reader's calendar.")

        # Thanksgiving, 2015-11-26.
        # Is a holiday in NYSE, but not in us_futures.
        tday_loc = outer_sessions.get_loc(pd.Timestamp('2015-11-26', tz='UTC'))

        assert_almost_equal(
            nan,
            opens[1][tday_loc],
            err_msg="2015-11-26 should be `nan`, since Thanksgiving is a "
            "holiday in the reader's calendar.")

    def test_load_raw_arrays_holiday_start(self):
        tday = pd.Timestamp('2015-11-26', tz='UTC')
        outer_sessions = self.trading_calendar.sessions_in_range(
            tday, self.END_DATE)

        result = self.reader.load_raw_arrays(OHLCV, tday, self.END_DATE,
                                             [1, 2])

        opens = DataFrame(data=result[0], index=outer_sessions, columns=[1, 2])
        opens_with_price = opens.dropna()

        self.assertEqual(
            3, len(opens),
            "The reindexed result should have 3 days, which is the number of "
            "business days in from Thanksgiving to end of 2015-11.")
        self.assertEqual(
            2, len(opens_with_price),
            "The reindexed result after dropping nans should have 2 days, "
            "because Thanksgiving is a NYSE holiday.")

    def test_load_raw_arrays_holiday_end(self):
        tday = pd.Timestamp('2015-11-26', tz='UTC')
        outer_sessions = self.trading_calendar.sessions_in_range(
            self.START_DATE, tday)

        result = self.reader.load_raw_arrays(OHLCV, self.START_DATE, tday,
                                             [1, 2])

        opens = DataFrame(data=result[0], index=outer_sessions, columns=[1, 2])
        opens_with_price = opens.dropna()

        self.assertEqual(
            19, len(opens),
            "The reindexed result should have 19 days, which is the number of "
            "business days in from start of 2015-11 up to Thanksgiving.")
        self.assertEqual(
            18, len(opens_with_price),
            "The reindexed result after dropping nans should have 18 days, "
            "because Thanksgiving is a NYSE holiday.")

    def test_get_value(self):
        assert_almost_equal(self.reader.get_value(1, self.START_DATE, 'open'),
                            10.0,
                            err_msg="The open of the fixture data on the "
                            "first session should be 10.")
        tday = pd.Timestamp('2015-11-26', tz='UTC')
        assert_almost_equal(self.reader.get_value(1, tday, 'close'),
                            nan,
                            err_msg="Thanksgiving is a NYSE holiday, but "
                            "futures trading is open. Result should be nan.")
        assert_almost_equal(self.reader.get_value(1, tday, 'volume'),
                            0,
                            err_msg="Thanksgiving is a NYSE holiday, but "
                            "futures trading is open. Result should be 0.")

    def test_last_availabe_dt(self):
        self.assertEqual(self.reader.last_available_dt, self.END_DATE)

    def test_get_last_traded_dt(self):
        asset = self.asset_finder.retrieve_asset(1)
        self.assertEqual(self.reader.get_last_traded_dt(asset, self.END_DATE),
                         self.END_DATE)

    def test_sessions(self):
        sessions = self.reader.sessions
        self.assertEqual(21, len(sessions),
                         "There should be 21 sessions in 2015-11.")
        self.assertEqual(pd.Timestamp('2015-11-02', tz='UTC'), sessions[0])
        self.assertEqual(pd.Timestamp('2015-11-30', tz='UTC'), sessions[-1])

    def test_first_trading_day(self):
        self.assertEqual(self.reader.first_trading_day, self.START_DATE)

    def test_trading_calendar(self):
        self.assertEqual(
            'us_futures', self.reader.trading_calendar.name,
            "The calendar for the reindex reader should be the "
            "specified futures calendar.")
Beispiel #7
0
class TestReindexSessionBars(WithBcolzEquityDailyBarReader,
                             ZiplineTestCase):

    TRADING_CALENDAR_STRS = ('us_futures', 'NYSE')
    TRADING_CALENDAR_PRIMARY_CAL = 'us_futures'

    ASSET_FINDER_EQUITY_SIDS = 1, 2, 3

    # Dates are chosen to span Thanksgiving, which is not a Holiday on
    # us_futures.
    START_DATE = pd.Timestamp('2015-11-02', tz='UTC')
    END_DATE = pd.Timestamp('2015-11-30', tz='UTC')
    #     November 2015
    # Su Mo Tu We Th Fr Sa
    #  1  2  3  4  5  6  7
    #  8  9 10 11 12 13 14
    # 15 16 17 18 19 20 21
    # 22 23 24 25 26 27 28
    # 29 30

    def init_instance_fixtures(self):
        super(TestReindexSessionBars, self).init_instance_fixtures()

        self.reader = ReindexSessionBarReader(
            self.trading_calendar,
            self.bcolz_equity_daily_bar_reader,
            self.START_DATE,
            self.END_DATE,
        )

    def test_load_raw_arrays(self):
        outer_sessions = self.trading_calendar.sessions_in_range(
            self.START_DATE, self.END_DATE)

        result = self.reader.load_raw_arrays(
            OHLCV, self.START_DATE, self.END_DATE, [1, 2])

        opens = DataFrame(data=result[0], index=outer_sessions,
                          columns=[1, 2])
        opens_with_price = opens.dropna()

        self.assertEqual(
            21,
            len(opens),
            "The reindexed result should have 21 days, which is the number of "
            "business days in 2015-11")
        self.assertEqual(
            20,
            len(opens_with_price),
            "The reindexed result after dropping nans should have 20 days, "
            "because Thanksgiving is a NYSE holiday.")

        tday = pd.Timestamp('2015-11-26', tz='UTC')

        # Thanksgiving, 2015-11-26.
        # Is a holiday in NYSE, but not in us_futures.
        tday_loc = outer_sessions.get_loc(tday)

        assert_almost_equal(
            nan,
            opens[1][tday_loc],
            err_msg="2015-11-26 should be `nan`, since Thanksgiving is a "
            "holiday in the reader's calendar.")

        # Thanksgiving, 2015-11-26.
        # Is a holiday in NYSE, but not in us_futures.
        tday_loc = outer_sessions.get_loc(pd.Timestamp('2015-11-26', tz='UTC'))

        assert_almost_equal(
            nan,
            opens[1][tday_loc],
            err_msg="2015-11-26 should be `nan`, since Thanksgiving is a "
            "holiday in the reader's calendar.")

    def test_load_raw_arrays_holiday_start(self):
        tday = pd.Timestamp('2015-11-26', tz='UTC')
        outer_sessions = self.trading_calendar.sessions_in_range(
            tday, self.END_DATE)

        result = self.reader.load_raw_arrays(
            OHLCV, tday, self.END_DATE, [1, 2])

        opens = DataFrame(data=result[0], index=outer_sessions,
                          columns=[1, 2])
        opens_with_price = opens.dropna()

        self.assertEqual(
            3,
            len(opens),
            "The reindexed result should have 3 days, which is the number of "
            "business days in from Thanksgiving to end of 2015-11.")
        self.assertEqual(
            2,
            len(opens_with_price),
            "The reindexed result after dropping nans should have 2 days, "
            "because Thanksgiving is a NYSE holiday.")

    def test_load_raw_arrays_holiday_end(self):
        tday = pd.Timestamp('2015-11-26', tz='UTC')
        outer_sessions = self.trading_calendar.sessions_in_range(
            self.START_DATE, tday)

        result = self.reader.load_raw_arrays(
            OHLCV, self.START_DATE, tday, [1, 2])

        opens = DataFrame(data=result[0], index=outer_sessions,
                          columns=[1, 2])
        opens_with_price = opens.dropna()

        self.assertEqual(
            19,
            len(opens),
            "The reindexed result should have 19 days, which is the number of "
            "business days in from start of 2015-11 up to Thanksgiving.")
        self.assertEqual(
            18,
            len(opens_with_price),
            "The reindexed result after dropping nans should have 18 days, "
            "because Thanksgiving is a NYSE holiday.")

    def test_get_value(self):
        assert_almost_equal(self.reader.get_value(1, self.START_DATE, 'open'),
                            10.0,
                            err_msg="The open of the fixture data on the "
                            "first session should be 10.")
        tday = pd.Timestamp('2015-11-26', tz='UTC')

        with self.assertRaises(NoDataOnDate):
            self.reader.get_value(1, tday, 'close')

        with self.assertRaises(NoDataOnDate):
            self.reader.get_value(1, tday, 'volume')

    def test_last_availabe_dt(self):
        self.assertEqual(self.reader.last_available_dt, self.END_DATE)

    def test_get_last_traded_dt(self):
        asset = self.asset_finder.retrieve_asset(1)
        self.assertEqual(self.reader.get_last_traded_dt(asset,
                                                        self.END_DATE),
                         self.END_DATE)

    def test_sessions(self):
        sessions = self.reader.sessions
        self.assertEqual(21, len(sessions),
                         "There should be 21 sessions in 2015-11.")
        self.assertEqual(pd.Timestamp('2015-11-02', tz='UTC'),
                         sessions[0])
        self.assertEqual(pd.Timestamp('2015-11-30', tz='UTC'),
                         sessions[-1])

    def test_first_trading_day(self):
        self.assertEqual(self.reader.first_trading_day, self.START_DATE)

    def test_trading_calendar(self):
        self.assertEqual('us_futures',
                         self.reader.trading_calendar.name,
                         "The calendar for the reindex reader should be the "
                         "specified futures calendar.")