mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-10 09:38:51 +08:00
Merge pull request #1201 from quantopian/dividends-add-currency-col
Dividends add currency col
This commit is contained in:
@@ -3,19 +3,15 @@ Tests for the reference loader for 13d filings.
|
||||
"""
|
||||
import pandas as pd
|
||||
|
||||
from zipline.pipeline.common import(
|
||||
DAYS_SINCE_PREV_DISCLOSURE,
|
||||
from zipline.pipeline.common import TS_FIELD_NAME
|
||||
from zipline.pipeline.data import _13DFilings
|
||||
from zipline.pipeline.factors.events import BusinessDaysSince13DFilingsDate
|
||||
from zipline.pipeline.loaders._13d_filings import (
|
||||
_13DFilingsLoader,
|
||||
DISCLOSURE_DATE,
|
||||
NUM_SHARES,
|
||||
PERCENT_SHARES,
|
||||
PREVIOUS_NUM_SHARES,
|
||||
PREVIOUS_PERCENT_SHARES,
|
||||
PREVIOUS_DISCLOSURE_DATE,
|
||||
TS_FIELD_NAME,
|
||||
)
|
||||
from zipline.pipeline.data import _13DFilings
|
||||
from zipline.pipeline.factors.events import BusinessDaysSince13DFilingsDate
|
||||
from zipline.pipeline.loaders._13d_filings import _13DFilingsLoader
|
||||
from zipline.pipeline.loaders.utils import (
|
||||
zip_with_floats,
|
||||
zip_with_dates
|
||||
@@ -23,6 +19,12 @@ from zipline.pipeline.loaders.utils import (
|
||||
from zipline.testing.fixtures import WithPipelineEventDataLoader
|
||||
from zipline.testing.fixtures import ZiplineTestCase
|
||||
|
||||
DAYS_SINCE_PREV_DISCLOSURE = 'days_since_prev_disclosure'
|
||||
PREVIOUS_DISCLOSURE_DATE = 'previous_disclosure_date'
|
||||
PREVIOUS_NUM_SHARES = 'previous_number_shares'
|
||||
PREVIOUS_PERCENT_SHARES = 'previous_percentage'
|
||||
|
||||
|
||||
date_intervals = [
|
||||
[['2014-01-01', '2014-01-04'],
|
||||
['2014-01-05', '2014-01-09'],
|
||||
|
||||
@@ -7,21 +7,19 @@ import pandas as pd
|
||||
from six import iteritems
|
||||
|
||||
from zipline.pipeline.common import(
|
||||
BUYBACK_AMOUNT_FIELD_NAME,
|
||||
BUYBACK_ANNOUNCEMENT_FIELD_NAME,
|
||||
BUYBACK_TYPE_FIELD_NAME,
|
||||
BUYBACK_UNIT_FIELD_NAME,
|
||||
DAYS_SINCE_PREV,
|
||||
PREVIOUS_BUYBACK_AMOUNT,
|
||||
PREVIOUS_BUYBACK_ANNOUNCEMENT,
|
||||
PREVIOUS_BUYBACK_TYPE,
|
||||
PREVIOUS_BUYBACK_UNIT,
|
||||
SID_FIELD_NAME,
|
||||
TS_FIELD_NAME,
|
||||
)
|
||||
from zipline.pipeline.data import BuybackAuthorizations
|
||||
from zipline.pipeline.factors.events import BusinessDaysSinceBuybackAuth
|
||||
from zipline.pipeline.loaders.buyback_auth import BuybackAuthorizationsLoader
|
||||
from zipline.pipeline.loaders.buyback_auth import (
|
||||
BUYBACK_AMOUNT_FIELD_NAME,
|
||||
BUYBACK_ANNOUNCEMENT_FIELD_NAME,
|
||||
BUYBACK_TYPE_FIELD_NAME,
|
||||
BUYBACK_UNIT_FIELD_NAME,
|
||||
BuybackAuthorizationsLoader,
|
||||
)
|
||||
from zipline.pipeline.loaders.blaze import BlazeBuybackAuthorizationsLoader
|
||||
from zipline.pipeline.loaders.utils import (
|
||||
zip_with_dates,
|
||||
@@ -32,6 +30,13 @@ from zipline.testing.fixtures import (
|
||||
WithPipelineEventDataLoader, ZiplineTestCase
|
||||
)
|
||||
|
||||
PREVIOUS_BUYBACK_AMOUNT = 'previous_value'
|
||||
PREVIOUS_BUYBACK_ANNOUNCEMENT = 'previous_buyback_announcement'
|
||||
PREVIOUS_BUYBACK_CASH = 'previous_buyback_cash'
|
||||
PREVIOUS_BUYBACK_SHARE_COUNT = 'previous_buyback_share_count'
|
||||
PREVIOUS_BUYBACK_TYPE = 'previous_buyback_type'
|
||||
PREVIOUS_BUYBACK_UNIT = 'previous_buyback_unit'
|
||||
|
||||
date_intervals = [
|
||||
[['2014-01-01', '2014-01-04'], ['2014-01-05', '2014-01-09'],
|
||||
['2014-01-10', '2014-01-31']]
|
||||
|
||||
@@ -6,36 +6,19 @@ from blaze.compute.core import swap_resources_into_scope
|
||||
import pandas as pd
|
||||
from six import iteritems
|
||||
|
||||
from zipline.pipeline.common import (
|
||||
from zipline.pipeline.common import SID_FIELD_NAME
|
||||
from zipline.pipeline.data import ConsensusEstimates
|
||||
from zipline.pipeline.loaders.consensus_estimates import (
|
||||
ACTUAL_VALUE_FIELD_NAME,
|
||||
ConsensusEstimatesLoader,
|
||||
COUNT_FIELD_NAME,
|
||||
FISCAL_QUARTER_FIELD_NAME,
|
||||
FISCAL_YEAR_FIELD_NAME,
|
||||
HIGH_FIELD_NAME,
|
||||
LOW_FIELD_NAME,
|
||||
MEAN_FIELD_NAME,
|
||||
NEXT_COUNT,
|
||||
NEXT_FISCAL_QUARTER,
|
||||
NEXT_FISCAL_YEAR,
|
||||
NEXT_HIGH,
|
||||
NEXT_LOW,
|
||||
NEXT_RELEASE_DATE,
|
||||
NEXT_STANDARD_DEVIATION,
|
||||
PREVIOUS_ACTUAL_VALUE,
|
||||
PREVIOUS_COUNT,
|
||||
PREVIOUS_FISCAL_QUARTER,
|
||||
PREVIOUS_FISCAL_YEAR,
|
||||
PREVIOUS_HIGH,
|
||||
PREVIOUS_LOW,
|
||||
PREVIOUS_MEAN, NEXT_MEAN,
|
||||
PREVIOUS_RELEASE_DATE,
|
||||
PREVIOUS_STANDARD_DEVIATION,
|
||||
RELEASE_DATE_FIELD_NAME,
|
||||
STANDARD_DEVIATION_FIELD_NAME,
|
||||
SID_FIELD_NAME)
|
||||
from zipline.pipeline.data import ConsensusEstimates
|
||||
from zipline.pipeline.loaders.consensus_estimates import (
|
||||
ConsensusEstimatesLoader
|
||||
)
|
||||
from zipline.pipeline.loaders.blaze import BlazeConsensusEstimatesLoader
|
||||
from zipline.pipeline.loaders.utils import (
|
||||
@@ -46,6 +29,25 @@ from zipline.testing.fixtures import (
|
||||
WithNextAndPreviousEventDataLoader
|
||||
)
|
||||
|
||||
NEXT_COUNT = 'next_count'
|
||||
NEXT_FISCAL_QUARTER = 'next_fiscal_quarter'
|
||||
NEXT_FISCAL_YEAR = 'next_fiscal_year'
|
||||
NEXT_HIGH = 'next_high'
|
||||
NEXT_LOW = 'next_low'
|
||||
NEXT_MEAN = 'next_mean'
|
||||
NEXT_RELEASE_DATE = 'next_release_date'
|
||||
NEXT_STANDARD_DEVIATION = 'next_standard_deviation'
|
||||
PREVIOUS_ACTUAL_VALUE = 'previous_actual_value'
|
||||
PREVIOUS_COUNT = 'previous_count'
|
||||
PREVIOUS_FISCAL_QUARTER = 'previous_fiscal_quarter'
|
||||
PREVIOUS_FISCAL_YEAR = 'previous_fiscal_year'
|
||||
PREVIOUS_HIGH = 'previous_high'
|
||||
PREVIOUS_LOW = 'previous_low'
|
||||
PREVIOUS_MEAN = 'previous_mean'
|
||||
PREVIOUS_RELEASE_DATE = 'previous_release_date'
|
||||
PREVIOUS_STANDARD_DEVIATION = 'previous_standard_deviation'
|
||||
|
||||
|
||||
consensus_estimates_cases = [
|
||||
# K1--K2--A1--A2.
|
||||
pd.DataFrame({
|
||||
|
||||
@@ -8,21 +8,10 @@ from six import iteritems
|
||||
|
||||
from zipline.pipeline.common import (
|
||||
ANNOUNCEMENT_FIELD_NAME,
|
||||
DAYS_SINCE_PREV_DIVIDEND_ANNOUNCEMENT,
|
||||
DAYS_SINCE_PREV_EX_DATE,
|
||||
DAYS_TO_NEXT_EX_DATE,
|
||||
NEXT_AMOUNT,
|
||||
NEXT_EX_DATE,
|
||||
NEXT_PAY_DATE,
|
||||
PREVIOUS_ANNOUNCEMENT,
|
||||
PREVIOUS_EX_DATE,
|
||||
PREVIOUS_PAY_DATE,
|
||||
PREVIOUS_AMOUNT,
|
||||
PREVIOUS_ANNOUNCEMENT,
|
||||
SID_FIELD_NAME,
|
||||
TS_FIELD_NAME,
|
||||
CASH_AMOUNT_FIELD_NAME,
|
||||
EX_DATE_FIELD_NAME,
|
||||
PAY_DATE_FIELD_NAME
|
||||
)
|
||||
from zipline.pipeline.data.dividends import (
|
||||
DividendsByAnnouncementDate,
|
||||
@@ -40,19 +29,39 @@ from zipline.pipeline.loaders.blaze.dividends import (
|
||||
BlazeDividendsByExDateLoader
|
||||
)
|
||||
from zipline.pipeline.loaders.dividends import (
|
||||
CASH_AMOUNT_FIELD_NAME,
|
||||
CURRENCY_FIELD_NAME,
|
||||
DIVIDEND_TYPE_FIELD_NAME,
|
||||
DividendsByAnnouncementDateLoader,
|
||||
DividendsByExDateLoader,
|
||||
DividendsByPayDateLoader
|
||||
DividendsByPayDateLoader,
|
||||
EX_DATE_FIELD_NAME,
|
||||
PAY_DATE_FIELD_NAME,
|
||||
)
|
||||
from zipline.pipeline.loaders.utils import (
|
||||
zip_with_dates,
|
||||
zip_with_floats
|
||||
zip_with_floats,
|
||||
zip_with_strs,
|
||||
)
|
||||
from zipline.testing.fixtures import (
|
||||
WithPipelineEventDataLoader,
|
||||
ZiplineTestCase
|
||||
)
|
||||
|
||||
DAYS_SINCE_PREV_DIVIDEND_ANNOUNCEMENT = 'days_since_prev_dividend_announcement'
|
||||
DAYS_SINCE_PREV_EX_DATE = 'days_since_prev_ex_date'
|
||||
DAYS_TO_NEXT_EX_DATE = 'days_to_next_ex_date'
|
||||
NEXT_AMOUNT = 'next_amount'
|
||||
NEXT_CURRENCY_TYPE = 'next_currency_type'
|
||||
NEXT_DIVIDEND_TYPE = 'next_dividend_type'
|
||||
NEXT_EX_DATE = 'next_ex_date'
|
||||
NEXT_PAY_DATE = 'next_pay_date'
|
||||
PREVIOUS_CURRENCY_TYPE = 'previous_currency_type'
|
||||
PREVIOUS_DIVIDEND_TYPE = 'previous_dividend_type'
|
||||
PREVIOUS_EX_DATE = 'previous_ex_date'
|
||||
PREVIOUS_PAY_DATE = 'previous_pay_date'
|
||||
|
||||
|
||||
dividends_cases = [
|
||||
# K1--K2--A1--A2.
|
||||
pd.DataFrame({
|
||||
@@ -60,7 +69,9 @@ dividends_cases = [
|
||||
EX_DATE_FIELD_NAME: pd.to_datetime(['2014-01-15', '2014-01-20']),
|
||||
PAY_DATE_FIELD_NAME: pd.to_datetime(['2014-01-15', '2014-01-20']),
|
||||
TS_FIELD_NAME: pd.to_datetime(['2014-01-05', '2014-01-10']),
|
||||
ANNOUNCEMENT_FIELD_NAME: pd.to_datetime(['2014-01-04', '2014-01-09'])
|
||||
ANNOUNCEMENT_FIELD_NAME: pd.to_datetime(['2014-01-04', '2014-01-09']),
|
||||
CURRENCY_FIELD_NAME: ["$", "EUR"],
|
||||
DIVIDEND_TYPE_FIELD_NAME: ["Stock", "Mixed"]
|
||||
}),
|
||||
# K1--K2--A2--A1.
|
||||
pd.DataFrame({
|
||||
@@ -68,7 +79,9 @@ dividends_cases = [
|
||||
EX_DATE_FIELD_NAME: pd.to_datetime(['2014-01-20', '2014-01-15']),
|
||||
PAY_DATE_FIELD_NAME: pd.to_datetime(['2014-01-20', '2014-01-15']),
|
||||
TS_FIELD_NAME: pd.to_datetime(['2014-01-05', '2014-01-10']),
|
||||
ANNOUNCEMENT_FIELD_NAME: pd.to_datetime(['2014-01-04', '2014-01-09'])
|
||||
ANNOUNCEMENT_FIELD_NAME: pd.to_datetime(['2014-01-04', '2014-01-09']),
|
||||
CURRENCY_FIELD_NAME: ["EUR", "$"],
|
||||
DIVIDEND_TYPE_FIELD_NAME: ["Mixed", "Stock"]
|
||||
}),
|
||||
# K1--A1--K2--A2.
|
||||
pd.DataFrame({
|
||||
@@ -76,7 +89,9 @@ dividends_cases = [
|
||||
EX_DATE_FIELD_NAME: pd.to_datetime(['2014-01-10', '2014-01-20']),
|
||||
PAY_DATE_FIELD_NAME: pd.to_datetime(['2014-01-10', '2014-01-20']),
|
||||
TS_FIELD_NAME: pd.to_datetime(['2014-01-05', '2014-01-15']),
|
||||
ANNOUNCEMENT_FIELD_NAME: pd.to_datetime(['2014-01-04', '2014-01-14'])
|
||||
ANNOUNCEMENT_FIELD_NAME: pd.to_datetime(['2014-01-04', '2014-01-14']),
|
||||
CURRENCY_FIELD_NAME: ["$", "EUR"],
|
||||
DIVIDEND_TYPE_FIELD_NAME: ["Stock", "Mixed"]
|
||||
}),
|
||||
# K1 == K2.
|
||||
pd.DataFrame({
|
||||
@@ -84,14 +99,18 @@ dividends_cases = [
|
||||
EX_DATE_FIELD_NAME: pd.to_datetime(['2014-01-10', '2014-01-15']),
|
||||
PAY_DATE_FIELD_NAME: pd.to_datetime(['2014-01-10', '2014-01-15']),
|
||||
TS_FIELD_NAME: pd.to_datetime(['2014-01-05'] * 2),
|
||||
ANNOUNCEMENT_FIELD_NAME: pd.to_datetime(['2014-01-04', '2014-01-04'])
|
||||
ANNOUNCEMENT_FIELD_NAME: pd.to_datetime(['2014-01-04', '2014-01-04']),
|
||||
CURRENCY_FIELD_NAME: ["$", "EUR"],
|
||||
DIVIDEND_TYPE_FIELD_NAME: ["Stock", "Mixed"]
|
||||
}),
|
||||
pd.DataFrame(
|
||||
columns=[CASH_AMOUNT_FIELD_NAME,
|
||||
EX_DATE_FIELD_NAME,
|
||||
PAY_DATE_FIELD_NAME,
|
||||
TS_FIELD_NAME,
|
||||
ANNOUNCEMENT_FIELD_NAME],
|
||||
ANNOUNCEMENT_FIELD_NAME,
|
||||
CURRENCY_FIELD_NAME,
|
||||
DIVIDEND_TYPE_FIELD_NAME],
|
||||
dtype='datetime64[ns]'
|
||||
),
|
||||
]
|
||||
@@ -157,6 +176,26 @@ next_amounts = [['NaN', 1, 15, 'NaN'],
|
||||
['NaN', 3, 'NaN', 1, 'NaN'],
|
||||
['NaN', 6, 23, 'NaN']]
|
||||
|
||||
prev_currency_types = [[None, "$", "EUR"],
|
||||
[None, "$", "EUR"],
|
||||
[None, "$", "EUR"],
|
||||
[None, "$", "EUR"]]
|
||||
|
||||
next_currency_types = [[None, "$", "EUR", None],
|
||||
[None, "EUR", "$", "EUR", None],
|
||||
[None, "$", None, "EUR", None],
|
||||
[None, "$", "EUR", None]]
|
||||
|
||||
prev_dividend_types = [[None, "Stock", "Mixed"],
|
||||
[None, "Stock", "Mixed"],
|
||||
[None, "Stock", "Mixed"],
|
||||
[None, "Stock", "Mixed"]]
|
||||
|
||||
next_dividend_types = [[None, "Stock", "Mixed", None],
|
||||
[None, "Mixed", "Stock", "Mixed", None],
|
||||
[None, "Stock", None, "Mixed", None],
|
||||
[None, "Stock", "Mixed", None]]
|
||||
|
||||
|
||||
class DividendsByAnnouncementDateTestCase(WithPipelineEventDataLoader,
|
||||
ZiplineTestCase):
|
||||
@@ -169,6 +208,10 @@ class DividendsByAnnouncementDateTestCase(WithPipelineEventDataLoader,
|
||||
PREVIOUS_AMOUNT: DividendsByAnnouncementDate.previous_amount.latest,
|
||||
DAYS_SINCE_PREV_DIVIDEND_ANNOUNCEMENT:
|
||||
BusinessDaysSinceDividendAnnouncement(),
|
||||
PREVIOUS_CURRENCY_TYPE:
|
||||
DividendsByAnnouncementDate.previous_currency.latest,
|
||||
PREVIOUS_DIVIDEND_TYPE:
|
||||
DividendsByAnnouncementDate.previous_type.latest,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
@@ -204,6 +247,10 @@ class DividendsByAnnouncementDateTestCase(WithPipelineEventDataLoader,
|
||||
['NaT', '2014-01-04', '2014-01-14'],
|
||||
['NaT', '2014-01-04']]
|
||||
amounts = [['NaN', 1, 15], ['NaN', 7, 13], ['NaN', 3, 1], ['NaN', 23]]
|
||||
currency_types = [[None, "$", "EUR"], [None, "EUR", "$"],
|
||||
[None, "$", "EUR"], [None, "EUR"]]
|
||||
dividend_types = [[None, "Stock", "Mixed"], [None, "Mixed", "Stock"],
|
||||
[None, "Stock", "Mixed"], [None, "Mixed"]]
|
||||
cols = {
|
||||
PREVIOUS_ANNOUNCEMENT: self.get_sids_to_frames(
|
||||
zip_with_dates, announcement_dates, date_intervals, dates,
|
||||
@@ -212,6 +259,14 @@ class DividendsByAnnouncementDateTestCase(WithPipelineEventDataLoader,
|
||||
PREVIOUS_AMOUNT: self.get_sids_to_frames(
|
||||
zip_with_floats, amounts, date_intervals, dates, 'float', 'NaN'
|
||||
),
|
||||
PREVIOUS_CURRENCY_TYPE: self.get_sids_to_frames(
|
||||
zip_with_strs, currency_types, date_intervals, dates,
|
||||
'category', None
|
||||
),
|
||||
PREVIOUS_DIVIDEND_TYPE: self.get_sids_to_frames(
|
||||
zip_with_strs, dividend_types, date_intervals, dates,
|
||||
'category', None
|
||||
),
|
||||
}
|
||||
|
||||
cols[
|
||||
@@ -235,7 +290,9 @@ class BlazeDividendsByAnnouncementDateTestCase(
|
||||
ANNOUNCEMENT_FIELD_NAME: df[ANNOUNCEMENT_FIELD_NAME],
|
||||
TS_FIELD_NAME: df[TS_FIELD_NAME],
|
||||
SID_FIELD_NAME: sid,
|
||||
CASH_AMOUNT_FIELD_NAME: df[CASH_AMOUNT_FIELD_NAME]
|
||||
CASH_AMOUNT_FIELD_NAME: df[CASH_AMOUNT_FIELD_NAME],
|
||||
CURRENCY_FIELD_NAME: df[CURRENCY_FIELD_NAME],
|
||||
DIVIDEND_TYPE_FIELD_NAME: df[DIVIDEND_TYPE_FIELD_NAME],
|
||||
})
|
||||
for sid, df in iteritems(mapping)
|
||||
).reset_index(drop=True)),)
|
||||
@@ -263,6 +320,10 @@ class DividendsByExDateTestCase(WithPipelineEventDataLoader, ZiplineTestCase):
|
||||
PREVIOUS_EX_DATE: DividendsByExDate.previous_date.latest,
|
||||
NEXT_AMOUNT: DividendsByExDate.next_amount.latest,
|
||||
PREVIOUS_AMOUNT: DividendsByExDate.previous_amount.latest,
|
||||
PREVIOUS_CURRENCY_TYPE: DividendsByExDate.previous_currency.latest,
|
||||
NEXT_CURRENCY_TYPE: DividendsByExDate.next_currency.latest,
|
||||
PREVIOUS_DIVIDEND_TYPE: DividendsByExDate.previous_type.latest,
|
||||
NEXT_DIVIDEND_TYPE: DividendsByExDate.next_type.latest,
|
||||
DAYS_TO_NEXT_EX_DATE: BusinessDaysUntilNextExDate(),
|
||||
DAYS_SINCE_PREV_EX_DATE: BusinessDaysSincePreviousExDate()
|
||||
}
|
||||
@@ -296,7 +357,23 @@ class DividendsByExDateTestCase(WithPipelineEventDataLoader, ZiplineTestCase):
|
||||
PREVIOUS_AMOUNT: self.get_sids_to_frames(
|
||||
zip_with_floats, prev_amounts, prev_date_intervals, dates,
|
||||
'float', 'NaN'
|
||||
)
|
||||
),
|
||||
PREVIOUS_CURRENCY_TYPE: self.get_sids_to_frames(
|
||||
zip_with_strs, prev_currency_types, prev_date_intervals, dates,
|
||||
'category', None
|
||||
),
|
||||
NEXT_CURRENCY_TYPE: self.get_sids_to_frames(
|
||||
zip_with_strs, next_currency_types, next_date_intervals, dates,
|
||||
'category', None
|
||||
),
|
||||
PREVIOUS_DIVIDEND_TYPE: self.get_sids_to_frames(
|
||||
zip_with_strs, prev_dividend_types, prev_date_intervals, dates,
|
||||
'category', None
|
||||
),
|
||||
NEXT_DIVIDEND_TYPE: self.get_sids_to_frames(
|
||||
zip_with_strs, next_dividend_types, next_date_intervals, dates,
|
||||
'category', None
|
||||
),
|
||||
}
|
||||
|
||||
cols[DAYS_TO_NEXT_EX_DATE] = self._compute_busday_offsets(
|
||||
@@ -321,7 +398,9 @@ class BlazeDividendsByExDateLoaderTestCase(DividendsByExDateTestCase):
|
||||
EX_DATE_FIELD_NAME: df[EX_DATE_FIELD_NAME],
|
||||
TS_FIELD_NAME: df[TS_FIELD_NAME],
|
||||
SID_FIELD_NAME: sid,
|
||||
CASH_AMOUNT_FIELD_NAME: df[CASH_AMOUNT_FIELD_NAME]
|
||||
CASH_AMOUNT_FIELD_NAME: df[CASH_AMOUNT_FIELD_NAME],
|
||||
CURRENCY_FIELD_NAME: df[CURRENCY_FIELD_NAME],
|
||||
DIVIDEND_TYPE_FIELD_NAME: df[DIVIDEND_TYPE_FIELD_NAME],
|
||||
})
|
||||
for sid, df in iteritems(mapping)
|
||||
).reset_index(drop=True)),)
|
||||
@@ -349,6 +428,10 @@ class DividendsByPayDateTestCase(WithPipelineEventDataLoader, ZiplineTestCase):
|
||||
PREVIOUS_PAY_DATE: DividendsByPayDate.previous_date.latest,
|
||||
NEXT_AMOUNT: DividendsByPayDate.next_amount.latest,
|
||||
PREVIOUS_AMOUNT: DividendsByPayDate.previous_amount.latest,
|
||||
PREVIOUS_CURRENCY_TYPE: DividendsByPayDate.previous_currency.latest,
|
||||
NEXT_CURRENCY_TYPE: DividendsByPayDate.next_currency.latest,
|
||||
PREVIOUS_DIVIDEND_TYPE: DividendsByPayDate.previous_type.latest,
|
||||
NEXT_DIVIDEND_TYPE: DividendsByPayDate.next_type.latest,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
@@ -380,7 +463,23 @@ class DividendsByPayDateTestCase(WithPipelineEventDataLoader, ZiplineTestCase):
|
||||
PREVIOUS_AMOUNT: self.get_sids_to_frames(
|
||||
zip_with_floats, prev_amounts, prev_date_intervals, dates,
|
||||
'float', 'NaN'
|
||||
)
|
||||
),
|
||||
PREVIOUS_CURRENCY_TYPE: self.get_sids_to_frames(
|
||||
zip_with_strs, prev_currency_types, prev_date_intervals, dates,
|
||||
'category', None
|
||||
),
|
||||
NEXT_CURRENCY_TYPE: self.get_sids_to_frames(
|
||||
zip_with_strs, next_currency_types, next_date_intervals, dates,
|
||||
'category', None
|
||||
),
|
||||
PREVIOUS_DIVIDEND_TYPE: self.get_sids_to_frames(
|
||||
zip_with_strs, prev_dividend_types, prev_date_intervals, dates,
|
||||
'category', None
|
||||
),
|
||||
NEXT_DIVIDEND_TYPE: self.get_sids_to_frames(
|
||||
zip_with_strs, next_dividend_types, next_date_intervals, dates,
|
||||
'category', None
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
@@ -397,7 +496,9 @@ class BlazeDividendsByPayDateLoaderTestCase(DividendsByPayDateTestCase):
|
||||
PAY_DATE_FIELD_NAME: df[PAY_DATE_FIELD_NAME],
|
||||
TS_FIELD_NAME: df[TS_FIELD_NAME],
|
||||
SID_FIELD_NAME: sid,
|
||||
CASH_AMOUNT_FIELD_NAME: df[CASH_AMOUNT_FIELD_NAME]
|
||||
CASH_AMOUNT_FIELD_NAME: df[CASH_AMOUNT_FIELD_NAME],
|
||||
CURRENCY_FIELD_NAME: df[CURRENCY_FIELD_NAME],
|
||||
DIVIDEND_TYPE_FIELD_NAME: df[DIVIDEND_TYPE_FIELD_NAME],
|
||||
})
|
||||
for sid, df in iteritems(mapping)
|
||||
).reset_index(drop=True)),)
|
||||
|
||||
@@ -1,68 +1,13 @@
|
||||
"""
|
||||
Common constants for Pipeline.
|
||||
"""
|
||||
ACTUAL_VALUE_FIELD_NAME = 'actual_value'
|
||||
AD_FIELD_NAME = 'asof_date'
|
||||
ANNOUNCEMENT_FIELD_NAME = 'announcement_date'
|
||||
BUYBACK_AMOUNT_FIELD_NAME = 'buyback_amount'
|
||||
BUYBACK_ANNOUNCEMENT_FIELD_NAME = 'buyback_date'
|
||||
BUYBACK_TYPE_FIELD_NAME = 'buyback_type'
|
||||
BUYBACK_UNIT_FIELD_NAME = 'buyback_unit'
|
||||
CASH_AMOUNT_FIELD_NAME = 'cash_amount'
|
||||
CASH_FIELD_NAME = 'cash'
|
||||
COUNT_FIELD_NAME = 'count'
|
||||
DAYS_SINCE_PREV = 'days_since_prev'
|
||||
DAYS_SINCE_PREV_DISCLOSURE = 'days_since_prev_disclosure'
|
||||
DAYS_SINCE_PREV_DIVIDEND_ANNOUNCEMENT = 'days_since_prev_dividend_announcement'
|
||||
DAYS_SINCE_PREV_EX_DATE = 'days_since_prev_ex_date'
|
||||
DAYS_TO_NEXT = 'days_to_next'
|
||||
DAYS_TO_NEXT_EX_DATE = 'days_to_next_ex_date'
|
||||
DISCLOSURE_DATE = 'disclosure_date'
|
||||
EX_DATE_FIELD_NAME = 'ex_date'
|
||||
FISCAL_QUARTER_FIELD_NAME = 'fiscal_quarter'
|
||||
FISCAL_YEAR_FIELD_NAME = 'fiscal_year'
|
||||
HIGH_FIELD_NAME = 'high'
|
||||
LOW_FIELD_NAME = 'low'
|
||||
MEAN_FIELD_NAME = 'mean'
|
||||
NEXT_AMOUNT = 'next_amount'
|
||||
NEXT_ANNOUNCEMENT = 'next_announcement'
|
||||
NEXT_COUNT = 'next_count'
|
||||
NEXT_EX_DATE = 'next_ex_date'
|
||||
NEXT_FISCAL_QUARTER = 'next_fiscal_quarter'
|
||||
NEXT_FISCAL_YEAR = 'next_fiscal_year'
|
||||
NEXT_HIGH = 'next_high'
|
||||
NEXT_LOW = 'next_low'
|
||||
NEXT_MEAN = 'next_mean'
|
||||
NEXT_PAY_DATE = 'next_pay_date'
|
||||
NEXT_RELEASE_DATE = 'next_release_date'
|
||||
NEXT_STANDARD_DEVIATION = 'next_standard_deviation'
|
||||
NUM_SHARES = 'number_shares'
|
||||
PAY_DATE_FIELD_NAME = 'pay_date'
|
||||
PERCENT_SHARES = 'percent_shares'
|
||||
PREVIOUS_ACTUAL_VALUE = 'previous_actual_value'
|
||||
PREVIOUS_AMOUNT = 'previous_amount'
|
||||
PREVIOUS_ANNOUNCEMENT = 'previous_announcement'
|
||||
PREVIOUS_BUYBACK_AMOUNT = 'previous_value'
|
||||
PREVIOUS_BUYBACK_ANNOUNCEMENT = 'previous_buyback_announcement'
|
||||
PREVIOUS_BUYBACK_CASH = 'previous_buyback_cash'
|
||||
PREVIOUS_BUYBACK_SHARE_COUNT = 'previous_buyback_share_count'
|
||||
PREVIOUS_BUYBACK_TYPE = 'previous_buyback_type'
|
||||
PREVIOUS_BUYBACK_UNIT = 'previous_value_type'
|
||||
PREVIOUS_COUNT = 'previous_count'
|
||||
PREVIOUS_DISCLOSURE_DATE = 'previous_disclosure_date'
|
||||
PREVIOUS_EX_DATE = 'previous_ex_date'
|
||||
PREVIOUS_FISCAL_QUARTER = 'previous_fiscal_quarter'
|
||||
PREVIOUS_FISCAL_YEAR = 'previous_fiscal_year'
|
||||
PREVIOUS_HIGH = 'previous_high'
|
||||
PREVIOUS_LOW = 'previous_low'
|
||||
PREVIOUS_MEAN = 'previous_mean'
|
||||
PREVIOUS_NUM_SHARES = 'previous_number_shares'
|
||||
PREVIOUS_PAY_DATE = 'previous_pay_date'
|
||||
PREVIOUS_PERCENT_SHARES = 'previous_percentage'
|
||||
PREVIOUS_RELEASE_DATE = 'previous_release_date'
|
||||
PREVIOUS_STANDARD_DEVIATION = 'previous_standard_deviation'
|
||||
RELEASE_DATE_FIELD_NAME = 'release_date'
|
||||
SHARE_COUNT_FIELD_NAME = 'share_count'
|
||||
SID_FIELD_NAME = 'sid'
|
||||
STANDARD_DEVIATION_FIELD_NAME = 'standard_deviation'
|
||||
TS_FIELD_NAME = 'timestamp'
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
"""
|
||||
Dataset representing dates of upcoming dividends.
|
||||
"""
|
||||
from zipline.utils.numpy_utils import datetime64ns_dtype, float64_dtype
|
||||
from zipline.utils.numpy_utils import (
|
||||
categorical_dtype,
|
||||
datetime64ns_dtype,
|
||||
float64_dtype,
|
||||
)
|
||||
|
||||
from .dataset import Column, DataSet
|
||||
|
||||
@@ -11,6 +15,10 @@ class DividendsByExDate(DataSet):
|
||||
previous_date = Column(datetime64ns_dtype)
|
||||
next_amount = Column(float64_dtype)
|
||||
previous_amount = Column(float64_dtype)
|
||||
next_currency = Column(categorical_dtype)
|
||||
previous_currency = Column(categorical_dtype)
|
||||
next_type = Column(categorical_dtype)
|
||||
previous_type = Column(categorical_dtype)
|
||||
|
||||
|
||||
class DividendsByPayDate(DataSet):
|
||||
@@ -18,8 +26,14 @@ class DividendsByPayDate(DataSet):
|
||||
previous_date = Column(datetime64ns_dtype)
|
||||
next_amount = Column(float64_dtype)
|
||||
previous_amount = Column(float64_dtype)
|
||||
next_currency = Column(categorical_dtype)
|
||||
previous_currency = Column(categorical_dtype)
|
||||
next_type = Column(categorical_dtype)
|
||||
previous_type = Column(categorical_dtype)
|
||||
|
||||
|
||||
class DividendsByAnnouncementDate(DataSet):
|
||||
previous_announcement_date = Column(datetime64ns_dtype)
|
||||
previous_amount = Column(float64_dtype)
|
||||
previous_currency = Column(categorical_dtype)
|
||||
previous_type = Column(categorical_dtype)
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
Reference implementation for 13d filings loaders.
|
||||
"""
|
||||
|
||||
from zipline.pipeline.common import (
|
||||
DISCLOSURE_DATE,
|
||||
PERCENT_SHARES,
|
||||
NUM_SHARES
|
||||
)
|
||||
from zipline.pipeline.data import _13DFilings
|
||||
from zipline.pipeline.loaders.events import EventsLoader
|
||||
from zipline.utils.memoize import lazyval
|
||||
|
||||
|
||||
DISCLOSURE_DATE = 'disclosure_date'
|
||||
NUM_SHARES = 'number_shares'
|
||||
PERCENT_SHARES = 'percent_shares'
|
||||
|
||||
|
||||
class _13DFilingsLoader(EventsLoader):
|
||||
"""
|
||||
Reference loader for
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
from zipline.pipeline.common import (
|
||||
SID_FIELD_NAME,
|
||||
TS_FIELD_NAME,
|
||||
PERCENT_SHARES,
|
||||
NUM_SHARES,
|
||||
DISCLOSURE_DATE)
|
||||
from zipline.pipeline.common import SID_FIELD_NAME, TS_FIELD_NAME
|
||||
from zipline.pipeline.data import _13DFilings
|
||||
from zipline.pipeline.loaders import _13DFilingsLoader
|
||||
from .events import BlazeEventsLoader
|
||||
from zipline.pipeline.loaders._13d_filings import (
|
||||
DISCLOSURE_DATE,
|
||||
NUM_SHARES,
|
||||
PERCENT_SHARES,
|
||||
)
|
||||
|
||||
|
||||
class Blaze_13DFilingsLoader(BlazeEventsLoader):
|
||||
|
||||
@@ -2,15 +2,16 @@ from .core import (
|
||||
SID_FIELD_NAME,
|
||||
TS_FIELD_NAME,
|
||||
)
|
||||
from zipline.pipeline.common import (
|
||||
BUYBACK_AMOUNT_FIELD_NAME,
|
||||
|
||||
from zipline.pipeline.data import BuybackAuthorizations
|
||||
from zipline.pipeline.loaders import BuybackAuthorizationsLoader
|
||||
from .events import BlazeEventsLoader
|
||||
from zipline.pipeline.loaders.buyback_auth import (
|
||||
BUYBACK_ANNOUNCEMENT_FIELD_NAME,
|
||||
BUYBACK_TYPE_FIELD_NAME,
|
||||
BUYBACK_UNIT_FIELD_NAME,
|
||||
)
|
||||
from zipline.pipeline.data import BuybackAuthorizations
|
||||
from zipline.pipeline.loaders import BuybackAuthorizationsLoader
|
||||
from .events import BlazeEventsLoader
|
||||
from zipline.pipeline.loaders.buyback_auth import BUYBACK_AMOUNT_FIELD_NAME
|
||||
|
||||
|
||||
class BlazeBuybackAuthorizationsLoader(BlazeEventsLoader):
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
from zipline.pipeline.common import (
|
||||
from .events import BlazeEventsLoader
|
||||
from zipline.pipeline.common import SID_FIELD_NAME, TS_FIELD_NAME
|
||||
from zipline.pipeline.data import ConsensusEstimates
|
||||
from zipline.pipeline.loaders import ConsensusEstimatesLoader
|
||||
from zipline.pipeline.loaders.consensus_estimates import (
|
||||
ACTUAL_VALUE_FIELD_NAME,
|
||||
COUNT_FIELD_NAME,
|
||||
FISCAL_QUARTER_FIELD_NAME,
|
||||
FISCAL_YEAR_FIELD_NAME,
|
||||
@@ -6,14 +11,8 @@ from zipline.pipeline.common import (
|
||||
LOW_FIELD_NAME,
|
||||
MEAN_FIELD_NAME,
|
||||
RELEASE_DATE_FIELD_NAME,
|
||||
SID_FIELD_NAME,
|
||||
STANDARD_DEVIATION_FIELD_NAME,
|
||||
TS_FIELD_NAME,
|
||||
ACTUAL_VALUE_FIELD_NAME
|
||||
)
|
||||
from zipline.pipeline.data import ConsensusEstimates
|
||||
from zipline.pipeline.loaders import ConsensusEstimatesLoader
|
||||
from .events import BlazeEventsLoader
|
||||
|
||||
|
||||
class BlazeConsensusEstimatesLoader(BlazeEventsLoader):
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
from zipline.pipeline.common import (
|
||||
ANNOUNCEMENT_FIELD_NAME,
|
||||
CASH_AMOUNT_FIELD_NAME,
|
||||
EX_DATE_FIELD_NAME,
|
||||
PAY_DATE_FIELD_NAME,
|
||||
SID_FIELD_NAME,
|
||||
TS_FIELD_NAME,
|
||||
)
|
||||
@@ -17,6 +14,13 @@ from zipline.pipeline.loaders import (
|
||||
DividendsByExDateLoader
|
||||
)
|
||||
from .events import BlazeEventsLoader
|
||||
from zipline.pipeline.loaders.dividends import (
|
||||
CASH_AMOUNT_FIELD_NAME,
|
||||
CURRENCY_FIELD_NAME,
|
||||
DIVIDEND_TYPE_FIELD_NAME,
|
||||
EX_DATE_FIELD_NAME,
|
||||
PAY_DATE_FIELD_NAME,
|
||||
)
|
||||
|
||||
|
||||
class BlazeDividendsByAnnouncementDateLoader(BlazeEventsLoader):
|
||||
@@ -47,6 +51,8 @@ class BlazeDividendsByAnnouncementDateLoader(BlazeEventsLoader):
|
||||
{TS_FIELD_NAME}: datetime,
|
||||
{CASH_AMOUNT_FIELD_NAME}: ?float64,
|
||||
{ANNOUNCEMENT_FIELD_NAME}: ?datetime,
|
||||
{CURRENCY_FIELD_NAME}: ?string,
|
||||
{DIVIDEND_TYPE_FIELD_NAME}: ?string,
|
||||
}}
|
||||
|
||||
Where each row of the table is a record including the sid to identify the
|
||||
@@ -61,14 +67,18 @@ class BlazeDividendsByAnnouncementDateLoader(BlazeEventsLoader):
|
||||
TS_FIELD_NAME=TS_FIELD_NAME,
|
||||
SID_FIELD_NAME=SID_FIELD_NAME,
|
||||
CASH_AMOUNT_FIELD_NAME=CASH_AMOUNT_FIELD_NAME,
|
||||
ANNOUNCEMENT_FIELD_NAME=ANNOUNCEMENT_FIELD_NAME
|
||||
ANNOUNCEMENT_FIELD_NAME=ANNOUNCEMENT_FIELD_NAME,
|
||||
CURRENCY_FIELD_NAME=CURRENCY_FIELD_NAME,
|
||||
DIVIDEND_TYPE_FIELD_NAME=DIVIDEND_TYPE_FIELD_NAME,
|
||||
)
|
||||
|
||||
_expected_fields = frozenset({
|
||||
TS_FIELD_NAME,
|
||||
SID_FIELD_NAME,
|
||||
CASH_AMOUNT_FIELD_NAME,
|
||||
ANNOUNCEMENT_FIELD_NAME
|
||||
CURRENCY_FIELD_NAME,
|
||||
ANNOUNCEMENT_FIELD_NAME,
|
||||
DIVIDEND_TYPE_FIELD_NAME
|
||||
})
|
||||
|
||||
concrete_loader = DividendsByAnnouncementDateLoader
|
||||
@@ -103,6 +113,8 @@ class BlazeDividendsByExDateLoader(BlazeEventsLoader):
|
||||
{TS_FIELD_NAME}: datetime,
|
||||
{EX_DATE_FIELD_NAME}: ?datetime,
|
||||
{CASH_AMOUNT_FIELD_NAME}: ?datetime,
|
||||
{CURRENCY_FIELD_NAME}: ?string,
|
||||
{DIVIDEND_TYPE_FIELD_NAME}: ?string,
|
||||
}}
|
||||
|
||||
Where each row of the table is a record including the sid to identify the
|
||||
@@ -118,6 +130,8 @@ class BlazeDividendsByExDateLoader(BlazeEventsLoader):
|
||||
SID_FIELD_NAME=SID_FIELD_NAME,
|
||||
EX_DATE_FIELD_NAME=EX_DATE_FIELD_NAME,
|
||||
CASH_AMOUNT_FIELD_NAME=CASH_AMOUNT_FIELD_NAME,
|
||||
CURRENCY_FIELD_NAME=CURRENCY_FIELD_NAME,
|
||||
DIVIDEND_TYPE_FIELD_NAME=DIVIDEND_TYPE_FIELD_NAME,
|
||||
)
|
||||
|
||||
_expected_fields = frozenset({
|
||||
@@ -125,6 +139,8 @@ class BlazeDividendsByExDateLoader(BlazeEventsLoader):
|
||||
SID_FIELD_NAME,
|
||||
EX_DATE_FIELD_NAME,
|
||||
CASH_AMOUNT_FIELD_NAME,
|
||||
CURRENCY_FIELD_NAME,
|
||||
DIVIDEND_TYPE_FIELD_NAME,
|
||||
})
|
||||
|
||||
concrete_loader = DividendsByExDateLoader
|
||||
@@ -159,6 +175,8 @@ class BlazeDividendsByPayDateLoader(BlazeEventsLoader):
|
||||
{TS_FIELD_NAME}: datetime,
|
||||
{PAY_DATE_FIELD_NAME}: ?datetime,
|
||||
{CASH_AMOUNT_FIELD_NAME}: ?datetime,
|
||||
{CURRENCY_FIELD_NAME}: ?string,
|
||||
{DIVIDEND_TYPE_FIELD_NAME}: ?string,
|
||||
}}
|
||||
|
||||
Where each row of the table is a record including the sid to identify the
|
||||
@@ -174,6 +192,8 @@ class BlazeDividendsByPayDateLoader(BlazeEventsLoader):
|
||||
SID_FIELD_NAME=SID_FIELD_NAME,
|
||||
PAY_DATE_FIELD_NAME=PAY_DATE_FIELD_NAME,
|
||||
CASH_AMOUNT_FIELD_NAME=CASH_AMOUNT_FIELD_NAME,
|
||||
CURRENCY_FIELD_NAME=CURRENCY_FIELD_NAME,
|
||||
DIVIDEND_TYPE_FIELD_NAME=DIVIDEND_TYPE_FIELD_NAME
|
||||
)
|
||||
|
||||
_expected_fields = frozenset({
|
||||
@@ -181,6 +201,8 @@ class BlazeDividendsByPayDateLoader(BlazeEventsLoader):
|
||||
SID_FIELD_NAME,
|
||||
PAY_DATE_FIELD_NAME,
|
||||
CASH_AMOUNT_FIELD_NAME,
|
||||
CURRENCY_FIELD_NAME,
|
||||
DIVIDEND_TYPE_FIELD_NAME,
|
||||
})
|
||||
|
||||
concrete_loader = DividendsByPayDateLoader
|
||||
|
||||
@@ -4,14 +4,14 @@ Reference implementation for buyback auth loaders.
|
||||
|
||||
from ..data import BuybackAuthorizations
|
||||
from .events import EventsLoader
|
||||
from zipline.pipeline.common import (
|
||||
BUYBACK_AMOUNT_FIELD_NAME,
|
||||
BUYBACK_ANNOUNCEMENT_FIELD_NAME,
|
||||
BUYBACK_TYPE_FIELD_NAME,
|
||||
BUYBACK_UNIT_FIELD_NAME
|
||||
)
|
||||
|
||||
from zipline.utils.memoize import lazyval
|
||||
|
||||
BUYBACK_AMOUNT_FIELD_NAME = 'buyback_amount'
|
||||
BUYBACK_ANNOUNCEMENT_FIELD_NAME = 'buyback_date'
|
||||
BUYBACK_TYPE_FIELD_NAME = 'buyback_type'
|
||||
BUYBACK_UNIT_FIELD_NAME = 'buyback_unit'
|
||||
|
||||
|
||||
class BuybackAuthorizationsLoader(EventsLoader):
|
||||
"""
|
||||
|
||||
@@ -4,18 +4,18 @@ Reference implementation for ConsensusEstimates loaders.
|
||||
|
||||
from ..data import ConsensusEstimates
|
||||
from .events import EventsLoader
|
||||
from zipline.pipeline.common import (
|
||||
COUNT_FIELD_NAME,
|
||||
FISCAL_QUARTER_FIELD_NAME,
|
||||
FISCAL_YEAR_FIELD_NAME,
|
||||
HIGH_FIELD_NAME,
|
||||
LOW_FIELD_NAME,
|
||||
MEAN_FIELD_NAME,
|
||||
RELEASE_DATE_FIELD_NAME,
|
||||
STANDARD_DEVIATION_FIELD_NAME,
|
||||
ACTUAL_VALUE_FIELD_NAME)
|
||||
from zipline.utils.memoize import lazyval
|
||||
|
||||
ACTUAL_VALUE_FIELD_NAME = 'actual_value'
|
||||
COUNT_FIELD_NAME = 'count'
|
||||
FISCAL_QUARTER_FIELD_NAME = 'fiscal_quarter'
|
||||
FISCAL_YEAR_FIELD_NAME = 'fiscal_year'
|
||||
HIGH_FIELD_NAME = 'high'
|
||||
LOW_FIELD_NAME = 'low'
|
||||
MEAN_FIELD_NAME = 'mean'
|
||||
RELEASE_DATE_FIELD_NAME = 'release_date'
|
||||
STANDARD_DEVIATION_FIELD_NAME = 'standard_deviation'
|
||||
|
||||
|
||||
class ConsensusEstimatesLoader(EventsLoader):
|
||||
|
||||
|
||||
@@ -1,21 +1,26 @@
|
||||
from zipline.pipeline.common import (
|
||||
EX_DATE_FIELD_NAME,
|
||||
PAY_DATE_FIELD_NAME,
|
||||
CASH_AMOUNT_FIELD_NAME,
|
||||
ANNOUNCEMENT_FIELD_NAME
|
||||
)
|
||||
from zipline.pipeline.common import ANNOUNCEMENT_FIELD_NAME
|
||||
from zipline.pipeline.loaders.events import EventsLoader
|
||||
from ..data import (
|
||||
DividendsByExDate,
|
||||
DividendsByAnnouncementDate,
|
||||
DividendsByPayDate
|
||||
DividendsByExDate,
|
||||
DividendsByPayDate,
|
||||
)
|
||||
from zipline.utils.memoize import lazyval
|
||||
|
||||
|
||||
CASH_AMOUNT_FIELD_NAME = 'cash_amount'
|
||||
CASH_AMOUNT_FIELD_NAME = 'cash_amount'
|
||||
CURRENCY_FIELD_NAME = 'currency_type'
|
||||
DIVIDEND_TYPE_FIELD_NAME = 'dividend_type'
|
||||
EX_DATE_FIELD_NAME = 'ex_date'
|
||||
PAY_DATE_FIELD_NAME = 'pay_date'
|
||||
|
||||
|
||||
class DividendsByAnnouncementDateLoader(EventsLoader):
|
||||
expected_cols = frozenset([ANNOUNCEMENT_FIELD_NAME,
|
||||
CASH_AMOUNT_FIELD_NAME])
|
||||
CASH_AMOUNT_FIELD_NAME,
|
||||
CURRENCY_FIELD_NAME,
|
||||
DIVIDEND_TYPE_FIELD_NAME])
|
||||
|
||||
event_date_col = ANNOUNCEMENT_FIELD_NAME
|
||||
|
||||
@@ -39,10 +44,26 @@ class DividendsByAnnouncementDateLoader(EventsLoader):
|
||||
CASH_AMOUNT_FIELD_NAME
|
||||
)
|
||||
|
||||
@lazyval
|
||||
def previous_currency_loader(self):
|
||||
return self._previous_event_value_loader(
|
||||
self.dataset.previous_currency,
|
||||
CURRENCY_FIELD_NAME
|
||||
)
|
||||
|
||||
@lazyval
|
||||
def previous_type_loader(self):
|
||||
return self._previous_event_value_loader(
|
||||
self.dataset.previous_type,
|
||||
DIVIDEND_TYPE_FIELD_NAME
|
||||
)
|
||||
|
||||
|
||||
class DividendsByPayDateLoader(EventsLoader):
|
||||
expected_cols = frozenset([PAY_DATE_FIELD_NAME,
|
||||
CASH_AMOUNT_FIELD_NAME])
|
||||
CASH_AMOUNT_FIELD_NAME,
|
||||
CURRENCY_FIELD_NAME,
|
||||
DIVIDEND_TYPE_FIELD_NAME])
|
||||
|
||||
event_date_col = PAY_DATE_FIELD_NAME
|
||||
|
||||
@@ -75,10 +96,40 @@ class DividendsByPayDateLoader(EventsLoader):
|
||||
CASH_AMOUNT_FIELD_NAME
|
||||
)
|
||||
|
||||
@lazyval
|
||||
def previous_currency_loader(self):
|
||||
return self._previous_event_value_loader(
|
||||
self.dataset.previous_currency,
|
||||
CURRENCY_FIELD_NAME
|
||||
)
|
||||
|
||||
@lazyval
|
||||
def next_currency_loader(self):
|
||||
return self._next_event_value_loader(
|
||||
self.dataset.next_currency,
|
||||
CURRENCY_FIELD_NAME
|
||||
)
|
||||
|
||||
@lazyval
|
||||
def previous_type_loader(self):
|
||||
return self._previous_event_value_loader(
|
||||
self.dataset.previous_type,
|
||||
DIVIDEND_TYPE_FIELD_NAME
|
||||
)
|
||||
|
||||
@lazyval
|
||||
def next_type_loader(self):
|
||||
return self._next_event_value_loader(
|
||||
self.dataset.next_type,
|
||||
DIVIDEND_TYPE_FIELD_NAME
|
||||
)
|
||||
|
||||
|
||||
class DividendsByExDateLoader(EventsLoader):
|
||||
expected_cols = frozenset([EX_DATE_FIELD_NAME,
|
||||
CASH_AMOUNT_FIELD_NAME])
|
||||
CASH_AMOUNT_FIELD_NAME,
|
||||
CURRENCY_FIELD_NAME,
|
||||
DIVIDEND_TYPE_FIELD_NAME])
|
||||
|
||||
event_date_col = EX_DATE_FIELD_NAME
|
||||
|
||||
@@ -110,3 +161,31 @@ class DividendsByExDateLoader(EventsLoader):
|
||||
self.dataset.previous_amount,
|
||||
CASH_AMOUNT_FIELD_NAME
|
||||
)
|
||||
|
||||
@lazyval
|
||||
def previous_currency_loader(self):
|
||||
return self._previous_event_value_loader(
|
||||
self.dataset.previous_currency,
|
||||
CURRENCY_FIELD_NAME
|
||||
)
|
||||
|
||||
@lazyval
|
||||
def next_currency_loader(self):
|
||||
return self._next_event_value_loader(
|
||||
self.dataset.next_currency,
|
||||
CURRENCY_FIELD_NAME
|
||||
)
|
||||
|
||||
@lazyval
|
||||
def previous_type_loader(self):
|
||||
return self._previous_event_value_loader(
|
||||
self.dataset.previous_type,
|
||||
DIVIDEND_TYPE_FIELD_NAME
|
||||
)
|
||||
|
||||
@lazyval
|
||||
def next_type_loader(self):
|
||||
return self._next_event_value_loader(
|
||||
self.dataset.next_type,
|
||||
DIVIDEND_TYPE_FIELD_NAME
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user