metrik/metrik/flows/equities_flow.py

47 lines
1.6 KiB
Python
Raw Normal View History

2016-08-23 19:13:06 -04:00
from metrik.flows.base import Flow, MarketClose
from metrik.tasks.nasdaq import NasdaqETFList, NasdaqCompanyList
2016-08-25 09:02:38 -04:00
from metrik.tasks.tradeking import Tradeking1mTimesales
from metrik.tasks.state_street import StateStreetHoldings
from metrik.conf import get_config
2016-08-23 19:13:06 -04:00
class EquitiesFlow(Flow):
2016-08-25 09:02:38 -04:00
def __init__(self, *args, **kwargs):
super(EquitiesFlow, self).__init__(*args, **kwargs)
2016-08-23 19:13:06 -04:00
@staticmethod
def get_schedule():
return MarketClose()
2016-08-23 19:13:06 -04:00
2016-08-25 09:02:38 -04:00
def _run(self):
config = get_config()
2016-08-25 09:02:38 -04:00
# When we yield dependencies in `run` instead of `_requires`,
# they get executed dynamically and we can use their results inline
etfs = NasdaqETFList(current_datetime=self.present, live=self.live)
companies = NasdaqCompanyList(current_datetime=self.present,
live=self.live)
yield etfs
yield companies
tradeking_etfs = [Tradeking1mTimesales(
present=self.present.date(),
symbol=e['Symbol']
) for e in etfs.output().retrieve()['etfs']]
yield tradeking_etfs
tradeking_companies = [Tradeking1mTimesales(
present=self.present.date(),
symbol=c['Symbol']
) for c in companies.output().retrieve()['companies']]
yield tradeking_companies
state_street_etfs = config.get('statestreet', 'etf_holdings')
state_street_holdings = [
StateStreetHoldings(current_datetime=self.present, live=self.live,
ticker=t.strip())
for t in state_street_etfs.split(',')
]
yield state_street_holdings