diff --git a/docs/source/whatsnew/0.8.5.txt b/docs/source/whatsnew/0.8.5.txt index 779b4db6..2b4c3651 100644 --- a/docs/source/whatsnew/0.8.5.txt +++ b/docs/source/whatsnew/0.8.5.txt @@ -26,12 +26,30 @@ Enhancements blaze-based implementations can be found in :mod:`zipline.pipeline.loaders.blaze.buyback_auth`. (:issue:`1022`). +* Added new datasets + :class:`~zipline.pipeline.data.dividends.DividendsByExDate`, + :class:`~zipline.pipeline.data.dividends.DividendsByPayDate`, and + :class:`~zipline.pipeline.data.dividends.DividendsByAnnouncementDate` + for use in the Pipeline API. These datasets provide an abstract interface for + adding dividends data organized by ex date, pay date, and announcement date, + respectively, to a new algorithm. pandas-based reference implementations for + these datasets can be found in :mod:`zipline.pipeline.loaders.dividends`, and + experimental blaze-based implementations can be found in + :mod:`zipline.pipeline.loaders.blaze.dividends`. (:issue:`1093`). + * Added new built-in factors, :class:`zipline.pipeline.factors.BusinessDaysSinceCashBuybackAuth` and :class:`zipline.pipeline.factors.BusinessDaysSinceShareBuybackAuth`. These factors use the new ``CashBuybackAuthorizations`` and ``ShareBuybackAuthorizations`` datasets, respectively. (:issue:`1022`). +* Added new built-in factors, + :class:`zipline.pipeline.factors.BusinessDaysSinceDividendAnnouncement`, + :class:`zipline.pipeline.factors.BusinessDaysUntilNextExDate`, and + :class:`zipline.pipeline.factors.BusinessDaysSincePreviousExDate`. These + factors use the new ``DividendsByAnnouncementDate` and ``DividendsByExDate`` + datasets, respectively. (:issue:`1093`). + * Implemented :class:`zipline.pipeline.Classifier`, a new core pipeline API term representing grouping keys. Classifiers are primarily used by passing them as the ``groupby`` parameter to factor normalization methods. diff --git a/zipline/pipeline/data/__init__.py b/zipline/pipeline/data/__init__.py index f7357f09..798d3c81 100644 --- a/zipline/pipeline/data/__init__.py +++ b/zipline/pipeline/data/__init__.py @@ -1,4 +1,9 @@ from .buyback_auth import CashBuybackAuthorizations, ShareBuybackAuthorizations +from .dividends import ( + DividendsByAnnouncementDate, + DividendsByExDate, + DividendsByPayDate, +) from .earnings import EarningsCalendar from .equity_pricing import USEquityPricing from .dataset import DataSet, Column, BoundColumn @@ -8,6 +13,9 @@ __all__ = [ 'CashBuybackAuthorizations', 'Column', 'DataSet', + 'DividendsByAnnouncementDate', + 'DividendsByExDate', + 'DividendsByPayDate', 'EarningsCalendar', 'ShareBuybackAuthorizations', 'USEquityPricing', diff --git a/zipline/pipeline/factors/__init__.py b/zipline/pipeline/factors/__init__.py index d02902fd..a29fbcf6 100644 --- a/zipline/pipeline/factors/__init__.py +++ b/zipline/pipeline/factors/__init__.py @@ -5,6 +5,9 @@ from .factor import ( ) from .events import ( BusinessDaysSinceCashBuybackAuth, + BusinessDaysSinceDividendAnnouncement, + BusinessDaysUntilNextExDate, + BusinessDaysSincePreviousExDate, BusinessDaysUntilNextEarnings, BusinessDaysSincePreviousEarnings, BusinessDaysSinceShareBuybackAuth, @@ -25,6 +28,9 @@ from .technical import ( __all__ = [ 'BusinessDaysSinceCashBuybackAuth', + 'BusinessDaysSinceDividendAnnouncement', + 'BusinessDaysUntilNextExDate', + 'BusinessDaysSincePreviousExDate', 'BusinessDaysUntilNextEarnings', 'BusinessDaysSincePreviousEarnings', 'BusinessDaysSinceShareBuybackAuth', diff --git a/zipline/pipeline/factors/events.py b/zipline/pipeline/factors/events.py index cdaa5573..286cfafa 100644 --- a/zipline/pipeline/factors/events.py +++ b/zipline/pipeline/factors/events.py @@ -3,15 +3,13 @@ Factors describing information about event data (e.g. earnings announcements, acquisitions, dividends, etc.). """ from numpy import newaxis -from zipline.pipeline.data.buyback_auth import ( +from ..data import ( CashBuybackAuthorizations, - ShareBuybackAuthorizations -) -from zipline.pipeline.data.dividends import ( + ShareBuybackAuthorizations, DividendsByAnnouncementDate, - DividendsByExDate + DividendsByExDate, + EarningsCalendar ) -from zipline.pipeline.data.earnings import EarningsCalendar from zipline.utils.numpy_utils import ( NaTD, busday_count_mask_NaT, diff --git a/zipline/pipeline/loaders/__init__.py b/zipline/pipeline/loaders/__init__.py index 8c5e397d..8e497f9b 100644 --- a/zipline/pipeline/loaders/__init__.py +++ b/zipline/pipeline/loaders/__init__.py @@ -1,7 +1,21 @@ from .earnings import EarningsCalendarLoader +from .buyback_auth import ( + CashBuybackAuthorizationsLoader, + ShareBuybackAuthorizationsLoader +) +from .dividends import ( + DividendsByAnnouncementDateLoader, + DividendsByExDateLoader, + DividendsByPayDateLoader, +) from .equity_pricing_loader import USEquityPricingLoader __all__ = [ + 'CashBuybackAuthorizationsLoader', + 'DividendsByAnnouncementDateLoader', + 'DividendsByExDateLoader', + 'DividendsByPayDateLoader', 'EarningsCalendarLoader', + 'ShareBuybackAuthorizationsLoader', 'USEquityPricingLoader', ] diff --git a/zipline/pipeline/loaders/blaze/__init__.py b/zipline/pipeline/loaders/blaze/__init__.py index 838e3577..1a624359 100644 --- a/zipline/pipeline/loaders/blaze/__init__.py +++ b/zipline/pipeline/loaders/blaze/__init__.py @@ -9,13 +9,20 @@ from .core import ( from_blaze, global_loader, ) - +from .dividends import ( + BlazeDividendsByAnnouncementDateLoader, + BlazeDividendsByExDateLoader, + BlazeDividendsByPayDateLoader +) from .earnings import ( BlazeEarningsCalendarLoader, ) __all__ = ( 'BlazeCashBuybackAuthorizationsLoader', + 'BlazeDividendsByAnnouncementDateLoader', + 'BlazeDividendsByExDateLoader', + 'BlazeDividendsByPayDateLoader', 'BlazeEarningsCalendarLoader', 'BlazeLoader', 'BlazeShareBuybackAuthorizationsLoader', diff --git a/zipline/pipeline/loaders/blaze/buyback_auth.py b/zipline/pipeline/loaders/blaze/buyback_auth.py index 9a1acfc9..57fd694d 100644 --- a/zipline/pipeline/loaders/blaze/buyback_auth.py +++ b/zipline/pipeline/loaders/blaze/buyback_auth.py @@ -7,9 +7,11 @@ from zipline.pipeline.common import ( CASH_FIELD_NAME, SHARE_COUNT_FIELD_NAME ) -from zipline.pipeline.data import (CashBuybackAuthorizations, - ShareBuybackAuthorizations) -from zipline.pipeline.loaders.buyback_auth import ( +from zipline.pipeline.data import ( + CashBuybackAuthorizations, + ShareBuybackAuthorizations +) +from zipline.pipeline.loaders import ( CashBuybackAuthorizationsLoader, ShareBuybackAuthorizationsLoader, ) diff --git a/zipline/pipeline/loaders/blaze/dividends.py b/zipline/pipeline/loaders/blaze/dividends.py index 7bba9e05..eef172b0 100644 --- a/zipline/pipeline/loaders/blaze/dividends.py +++ b/zipline/pipeline/loaders/blaze/dividends.py @@ -6,12 +6,12 @@ from zipline.pipeline.common import ( SID_FIELD_NAME, TS_FIELD_NAME, ) -from zipline.pipeline.data.dividends import ( +from zipline.pipeline.data import ( DividendsByExDate, DividendsByAnnouncementDate, DividendsByPayDate ) -from zipline.pipeline.loaders.dividends import ( +from zipline.pipeline.loaders import ( DividendsByAnnouncementDateLoader, DividendsByPayDateLoader, DividendsByExDateLoader diff --git a/zipline/pipeline/loaders/blaze/earnings.py b/zipline/pipeline/loaders/blaze/earnings.py index 9d7e9b5c..ee412edf 100644 --- a/zipline/pipeline/loaders/blaze/earnings.py +++ b/zipline/pipeline/loaders/blaze/earnings.py @@ -4,7 +4,7 @@ from zipline.pipeline.common import ( TS_FIELD_NAME, ) from zipline.pipeline.data import EarningsCalendar -from zipline.pipeline.loaders.earnings import EarningsCalendarLoader +from zipline.pipeline.loaders import EarningsCalendarLoader from .events import BlazeEventsLoader diff --git a/zipline/pipeline/loaders/buyback_auth.py b/zipline/pipeline/loaders/buyback_auth.py index 572dc6fd..b2123545 100644 --- a/zipline/pipeline/loaders/buyback_auth.py +++ b/zipline/pipeline/loaders/buyback_auth.py @@ -2,7 +2,7 @@ Reference implementation for buyback auth loaders. """ -from ..data.buyback_auth import ( +from ..data import ( CashBuybackAuthorizations, ShareBuybackAuthorizations ) diff --git a/zipline/pipeline/loaders/dividends.py b/zipline/pipeline/loaders/dividends.py index 16a4585e..cf6f2dad 100644 --- a/zipline/pipeline/loaders/dividends.py +++ b/zipline/pipeline/loaders/dividends.py @@ -5,7 +5,7 @@ from zipline.pipeline.common import ( ANNOUNCEMENT_FIELD_NAME ) from zipline.pipeline.loaders.events import EventsLoader -from zipline.pipeline.data.dividends import ( +from ..data import ( DividendsByExDate, DividendsByAnnouncementDate, DividendsByPayDate diff --git a/zipline/pipeline/loaders/earnings.py b/zipline/pipeline/loaders/earnings.py index 89d376c9..0a43e652 100644 --- a/zipline/pipeline/loaders/earnings.py +++ b/zipline/pipeline/loaders/earnings.py @@ -2,7 +2,7 @@ Reference implementation for EarningsCalendar loaders. """ -from ..data.earnings import EarningsCalendar +from ..data import EarningsCalendar from .events import EventsLoader from zipline.pipeline.common import ANNOUNCEMENT_FIELD_NAME from zipline.utils.memoize import lazyval