mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-24 13:00:57 +08:00
ENH: Make reader.get_value raise NoDataOnDate if the date is not in the calendar.
DataPortal now catches the NoDataOnDate exception and returns nan for OHLC and 0 for V. Price is still forward filled, unchanged.
This commit is contained in:
@@ -35,6 +35,7 @@ from pandas import (
|
||||
date_range,
|
||||
)
|
||||
|
||||
from zipline.data.bar_reader import NoDataOnDate
|
||||
from zipline.data.minute_bars import (
|
||||
BcolzMinuteBarMetadata,
|
||||
BcolzMinuteBarWriter,
|
||||
@@ -854,18 +855,19 @@ class BcolzMinuteBarTestCase(WithTradingCalendars,
|
||||
'open'),
|
||||
780)
|
||||
|
||||
self.assertEqual(
|
||||
with self.assertRaises(NoDataOnDate):
|
||||
self.reader.get_value(
|
||||
sid,
|
||||
Timestamp('2015-06-02', tz='UTC'),
|
||||
'open'),
|
||||
390)
|
||||
self.assertEqual(
|
||||
'open'
|
||||
)
|
||||
|
||||
with self.assertRaises(NoDataOnDate):
|
||||
self.reader.get_value(
|
||||
sid,
|
||||
Timestamp('2015-06-02 20:01:00', tz='UTC'),
|
||||
'open'),
|
||||
780)
|
||||
'open'
|
||||
)
|
||||
|
||||
def test_adjust_non_trading_minutes_half_days(self):
|
||||
# half day
|
||||
@@ -908,18 +910,20 @@ class BcolzMinuteBarTestCase(WithTradingCalendars,
|
||||
Timestamp('2015-11-27 18:01:00', tz='UTC'),
|
||||
'open'),
|
||||
210)
|
||||
self.assertEqual(
|
||||
|
||||
with self.assertRaises(NoDataOnDate):
|
||||
self.reader.get_value(
|
||||
sid,
|
||||
Timestamp('2015-11-30', tz='UTC'),
|
||||
'open'),
|
||||
210)
|
||||
self.assertEqual(
|
||||
'open'
|
||||
)
|
||||
|
||||
with self.assertRaises(NoDataOnDate):
|
||||
self.reader.get_value(
|
||||
sid,
|
||||
Timestamp('2015-11-30 21:01:00', tz='UTC'),
|
||||
'open'),
|
||||
600)
|
||||
'open'
|
||||
)
|
||||
|
||||
def test_set_sid_attrs(self):
|
||||
"""Confirm that we can set the attributes of a sid's file correctly.
|
||||
|
||||
@@ -21,6 +21,7 @@ import pandas as pd
|
||||
from pandas import DataFrame
|
||||
from six import iteritems
|
||||
|
||||
from zipline.data.bar_reader import NoDataOnDate
|
||||
from zipline.data.resample import (
|
||||
minute_to_session,
|
||||
DailyHistoryAggregator,
|
||||
@@ -803,12 +804,12 @@ class TestReindexSessionBars(WithBcolzEquityDailyBarReader,
|
||||
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.")
|
||||
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user