From bcc867b1438905e3a9a0067986a5433cf9dd43b8 Mon Sep 17 00:00:00 2001 From: Andrew Daniels Date: Mon, 18 Jul 2016 16:59:54 -0400 Subject: [PATCH] BUG: Use Timedelta instead of DateOffset in days_at_time calendar helper Prior to pandas 17, there were issues with offsetting dates with DateOffset around discontinuities (like the start of DST). We can use Timedelta here instead, which handles these edge cases. --- zipline/utils/calendars/trading_calendar.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/zipline/utils/calendars/trading_calendar.py b/zipline/utils/calendars/trading_calendar.py index 2d480058..56b2fba8 100644 --- a/zipline/utils/calendars/trading_calendar.py +++ b/zipline/utils/calendars/trading_calendar.py @@ -21,7 +21,7 @@ from pandas import ( DataFrame, date_range, DatetimeIndex, - DateOffset + Timedelta ) from pandas.tseries.offsets import CustomBusinessDay @@ -678,9 +678,9 @@ def days_at_time(days, t, tz, day_offset=0): The number of days we want to offset @days by """ days = DatetimeIndex(days).tz_localize(None).tz_localize(tz) - days_offset = days + DateOffset(day_offset) + days_offset = days + Timedelta(days=day_offset) return days_offset.shift( - 1, freq=DateOffset(hour=t.hour, minute=t.minute, second=t.second) + 1, freq=Timedelta(hours=t.hour, minutes=t.minute, seconds=t.second) ).tz_convert('UTC')