From a1a1fbf21f635e70f953f3caf39d410d9de63df9 Mon Sep 17 00:00:00 2001 From: Jonathan Kamens Date: Wed, 24 Jul 2013 12:40:28 -0400 Subject: [PATCH 1/2] BUG: Don't include out-of-range date in early closes Don't include New Year's Eve 1999 in the early closes returned to the user if it's outside the range of dates requested by the user. --- zipline/utils/tradingcalendar.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/zipline/utils/tradingcalendar.py b/zipline/utils/tradingcalendar.py index 75abc3d8..a15a3c70 100644 --- a/zipline/utils/tradingcalendar.py +++ b/zipline/utils/tradingcalendar.py @@ -346,6 +346,8 @@ def get_early_closes(start, end): # http://www.nyse.com/pdfs/closings.pdf # # New Year's Eve - early_closes.append(datetime(1999, 12, 31, tzinfo=pytz.utc)) + nye_1999 = datetime(1999, 12, 31, tzinfo=pytz.utc) + if start <= nye_1999 and nye_1999 <= end: + early_closes.append(nye_1999) return pd.DatetimeIndex(sorted(early_closes)) From 86682b40973b1ca45141deb3c547a2d85ce1ca77 Mon Sep 17 00:00:00 2001 From: Jonathan Kamens Date: Wed, 24 Jul 2013 12:43:26 -0400 Subject: [PATCH 2/2] ENH: Use sort() instead of sorted() for efficiency --- zipline/utils/tradingcalendar.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/zipline/utils/tradingcalendar.py b/zipline/utils/tradingcalendar.py index a15a3c70..de74a6f2 100644 --- a/zipline/utils/tradingcalendar.py +++ b/zipline/utils/tradingcalendar.py @@ -236,7 +236,8 @@ def get_non_trading_days(start, end): # - President Gerald R. Ford - Jan 2, 2007 non_trading_days.append(datetime(2007, 1, 2, tzinfo=pytz.utc)) - return pd.DatetimeIndex(sorted(non_trading_days)) + non_trading_days.sort() + return pd.DatetimeIndex(non_trading_days) def get_trading_days(start, end): @@ -350,4 +351,5 @@ def get_early_closes(start, end): if start <= nye_1999 and nye_1999 <= end: early_closes.append(nye_1999) - return pd.DatetimeIndex(sorted(early_closes)) + early_closes.sort() + return pd.DatetimeIndex(early_closes)