Esempio n. 1
0
    def __init__(self, env, trading_calendar, *args, **kwargs):
        # We shouldn't get any positional arguments.
        assert len(args) == 0

        self.env = env
        self.trading_calendar = trading_calendar

        # Default to None for event_list and filter.
        self.event_list = kwargs.get('event_list')
        self.filter = kwargs.get('filter')
        if self.event_list is not None:
            # If event_list is provided, extract parameters from there
            # This isn't really clean and ultimately I think this
            # class should serve a single purpose (either take an
            # event_list or autocreate events).
            self.count = kwargs.get('count', len(self.event_list))
            self.start = kwargs.get('start', self.event_list[0].dt)
            self.end = kwargs.get('end', self.event_list[-1].dt)
            self.delta = delta = kwargs.get('delta')
            if delta is None:
                self.delta = self.event_list[1].dt - self.event_list[0].dt
            self.concurrent = kwargs.get('concurrent', False)

            self.identifiers = kwargs.get(
                'sids',
                set(event.sid for event in self.event_list)
            )
            assets_by_identifier = {}
            for identifier in self.identifiers:
                assets_by_identifier[identifier] = env.asset_finder.\
                    lookup_generic(identifier, datetime.now())[0]
            self.sids = [asset.sid for asset in assets_by_identifier.values()]
            for event in self.event_list:
                event.sid = assets_by_identifier[event.sid].sid

        else:
            # Unpack config dictionary with default values.
            self.count = kwargs.get('count', 500)
            self.start = kwargs.get(
                'start',
                datetime(2008, 6, 6, 15, tzinfo=pytz.utc))
            self.end = kwargs.get(
                'end',
                datetime(2008, 6, 6, 15, tzinfo=pytz.utc))
            self.delta = kwargs.get(
                'delta',
                timedelta(minutes=1))
            self.concurrent = kwargs.get('concurrent', False)

            self.identifiers = kwargs.get('sids', [1, 2])
            assets_by_identifier = {}
            for identifier in self.identifiers:
                assets_by_identifier[identifier] = env.asset_finder.\
                    lookup_generic(identifier, datetime.now())[0]
            self.sids = [asset.sid for asset in assets_by_identifier.values()]

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(*args, **kwargs)

        self.generator = self.create_fresh_generator()
Esempio n. 2
0
    def __init__(self, tnfm_class, *args, **kwargs):
        assert isinstance(tnfm_class, (types.ObjectType, types.ClassType)), \
            "Stateful transform requires a class."
        assert hasattr(tnfm_class, 'update'), \
            "Stateful transform requires the class to have an update method"

        # Create an instance of our transform class.
        if isinstance(tnfm_class, TransformMeta):
            # Classes derived TransformMeta have their __call__
            # attribute overridden.  Since this is what is usually
            # used to create an instance, we have to delegate the
            # responsibility of creating an instance to
            # TransformMeta's parent class, which is 'type'. This is
            # what is implicitly done behind the scenes by the python
            # interpreter for most classes anyway, but here we have to
            # be explicit because we've overridden the method that
            # usually resolves to our super call.
            self.state = super(TransformMeta, tnfm_class).__call__(
                *args, **kwargs)
        # Normal object instantiation.
        else:
            self.state = tnfm_class(*args, **kwargs)
        # save the window_length of the state for external access.
        self.window_length = self.state.window_length
        # Create the string associated with this generator's output.
        self.namestring = tnfm_class.__name__ + hash_args(*args, **kwargs)
Esempio n. 3
0
    def __init__(self, **kwargs):
        # TODO Use alternatives to `index` and `universe` objects
        self.log = dna.logging.logger(__name__)

        if 'index' not in kwargs or 'universe' not in kwargs:
            raise InvalidDatafeed(
                reason='you must provide a universe and an index')
        if not isinstance(kwargs.get('index'),
                          pd.tseries.index.DatetimeIndex):
            raise InvalidDatafeed(reason='you must provide a valid time index')

        # Unpack config dictionary with default values.
        self.sids = kwargs['universe'].sids
        self.index = kwargs['index']
        self.start = self.index[0]
        self.end = self.index[-1]

        self.frequency = float(kwargs.get('frequency', 14))
        self.market_open = kwargs['universe'].open
        self.market_close = kwargs['universe'].close

        if 'backtest' in kwargs:
            self.backtest = kwargs['backtest'](self.sids, kwargs)
        if 'live' in kwargs:
            self.live = kwargs['live'](self.sids, kwargs)

        _check_data_modules(self.backtest, self.live, self.start, self.end)

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(**kwargs)
        self._raw_data = None
Esempio n. 4
0
    def __init__(self, **kwargs):
        # TODO Use alternatives to `index` and `universe` objects
        self.log = dna.logging.logger(__name__)

        if 'index' not in kwargs or 'universe' not in kwargs:
            raise InvalidDatafeed(
                reason='you must provide a universe and an index')
        if not isinstance(kwargs.get('index'), pd.tseries.index.DatetimeIndex):
            raise InvalidDatafeed(reason='you must provide a valid time index')

        # Unpack config dictionary with default values.
        self.sids = kwargs['universe'].sids
        self.index = kwargs['index']
        self.start = self.index[0]
        self.end = self.index[-1]

        self.frequency = float(kwargs.get('frequency', 14))
        self.market_open = kwargs['universe'].open
        self.market_close = kwargs['universe'].close

        if 'backtest' in kwargs:
            self.backtest = kwargs['backtest'](self.sids, kwargs)
        if 'live' in kwargs:
            self.live = kwargs['live'](self.sids, kwargs)

        _check_data_modules(self.backtest, self.live, self.start, self.end)

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(**kwargs)
        self._raw_data = None
Esempio n. 5
0
    def __init__(self, tnfm_class, *args, **kwargs):
        assert isinstance(tnfm_class, (types.ObjectType, types.ClassType)), \
            "Stateful transform requires a class."
        assert hasattr(tnfm_class, 'update'), \
            "Stateful transform requires the class to have an update method"

        # Flag set inside the Passthrough transform class to signify special
        # behavior if we are being fed to merged_transforms.
        self.passthrough = hasattr(tnfm_class, 'PASSTHROUGH')

        # Create an instance of our transform class.
        if isinstance(tnfm_class, TransformMeta):
            # Classes derived TransformMeta have their __call__
            # attribute overridden.  Since this is what is usually
            # used to create an instance, we have to delegate the
            # responsibility of creating an instance to
            # TransformMeta's parent class, which is 'type'. This is
            # what is implicitly done behind the scenes by the python
            # interpreter for most classes anyway, but here we have to
            # be explicit because we've overridden the method that
            # usually resolves to our super call.
            self.state = super(TransformMeta,
                               tnfm_class).__call__(*args, **kwargs)
        # Normal object instantiation.
        else:
            self.state = tnfm_class(*args, **kwargs)

        # Create the string associated with this generator's output.
        self.namestring = tnfm_class.__name__ + hash_args(*args, **kwargs)
Esempio n. 6
0
    def __init__(self, tnfm_class, *args, **kwargs):
        assert isinstance(tnfm_class, (types.ObjectType, types.ClassType)), \
            "Stateful transform requires a class."
        assert hasattr(tnfm_class, 'update'), \
            "Stateful transform requires the class to have an update method"

        # Flag set inside the Passthrough transform class to signify special
        # behavior if we are being fed to merged_transforms.
        self.passthrough = hasattr(tnfm_class, 'PASSTHROUGH')

        # Flags specifying how to append the calculated value.
        # Merged is the default for ease of testing, but we use sequential
        # in production.
        self.sequential = False
        self.merged = True

        # Create an instance of our transform class.
        if isinstance(tnfm_class, TransformMeta):
            # Classes derived TransformMeta have their __call__
            # attribute overridden.  Since this is what is usually
            # used to create an instance, we have to delegate the
            # responsibility of creating an instance to
            # TransformMeta's parent class, which is 'type'. This is
            # what is implicitly done behind the scenes by the python
            # interpreter for most classes anyway, but here we have to
            # be explicit because we've overridden the method that
            # usually resolves to our super call.
            self.state = super(TransformMeta, tnfm_class).__call__(
                *args, **kwargs)
        # Normal object instantiation.
        else:
            self.state = tnfm_class(*args, **kwargs)

        # Create the string associated with this generator's output.
        self.namestring = tnfm_class.__name__ + hash_args(*args, **kwargs)
Esempio n. 7
0
    def __init__(self, fname):
        self.fname = fname
        
        # Hash_value for downstream sorting.
        self.arg_string = hash_args(fname)

        self._raw_data = None
Esempio n. 8
0
    def __init__(self, *args, **kwargs):
        # We shouldn't get any positional arguments.
        assert len(args) == 0

        # Default to None for event_list and filter.
        self.event_list = kwargs.get('event_list')
        self.filter = kwargs.get('filter')
        if self.event_list is not None:
            # If event_list is provided, extract parameters from there
            # This isn't really clean and ultimately I think this
            # class should serve a single purpose (either take an
            # event_list or autocreate events).
            self.sids = kwargs.get(
                'sids',
                np.unique([event.sid for event in self.event_list]).tolist())
            self.start = kwargs.get('start', self.event_list[0].dt)
            self.end = kwargs.get('end', self.event_list[-1].dt)
            self.delta = kwargs.get(
                'delta', self.event_list[1].dt - self.event_list[0].dt)
            self.concurrent = kwargs.get('concurrent', False)

        else:
            # Unpack config dictionary with default values.
            self.sids = kwargs.get('sids', [1, 2])
            self.start = kwargs.get('start',
                                    datetime(2008, 6, 6, 15, tzinfo=pytz.utc))
            self.end = kwargs.get('end',
                                  datetime(2008, 6, 6, 15, tzinfo=pytz.utc))
            self.delta = kwargs.get('delta', timedelta(minutes=1))
            self.concurrent = kwargs.get('concurrent', False)

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(*args, **kwargs)

        self.generator = self.create_fresh_generator()
Esempio n. 9
0
    def __init__(self, env, *args, **kwargs):
        # We shouldn't get any positional arguments.
        assert len(args) == 0

        self.env = env

        # Default to None for event_list and filter.
        self.event_list = kwargs.get('event_list')
        self.filter = kwargs.get('filter')
        if self.event_list is not None:
            # If event_list is provided, extract parameters from there
            # This isn't really clean and ultimately I think this
            # class should serve a single purpose (either take an
            # event_list or autocreate events).
            self.count = kwargs.get('count', len(self.event_list))
            self.start = kwargs.get('start', self.event_list[0].dt)
            self.end = kwargs.get('end', self.event_list[-1].dt)
            self.delta = kwargs.get(
                'delta',
                self.event_list[1].dt - self.event_list[0].dt)
            self.concurrent = kwargs.get('concurrent', False)

            self.identifiers = kwargs.get(
                'sids',
                set(event.sid for event in self.event_list)
            )
            assets_by_identifier = {}
            for identifier in self.identifiers:
                assets_by_identifier[identifier] = env.asset_finder.\
                    lookup_generic(identifier, datetime.now())[0]
            self.sids = [asset.sid for asset in assets_by_identifier.values()]
            for event in self.event_list:
                event.sid = assets_by_identifier[event.sid].sid

        else:
            # Unpack config dictionary with default values.
            self.count = kwargs.get('count', 500)
            self.start = kwargs.get(
                'start',
                datetime(2008, 6, 6, 15, tzinfo=pytz.utc))
            self.end = kwargs.get(
                'end',
                datetime(2008, 6, 6, 15, tzinfo=pytz.utc))
            self.delta = kwargs.get(
                'delta',
                timedelta(minutes=1))
            self.concurrent = kwargs.get('concurrent', False)

            self.identifiers = kwargs.get('sids', [1, 2])
            assets_by_identifier = {}
            for identifier in self.identifiers:
                assets_by_identifier[identifier] = env.asset_finder.\
                    lookup_generic(identifier, datetime.now())[0]
            self.sids = [asset.sid for asset in assets_by_identifier.values()]

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(*args, **kwargs)

        self.generator = self.create_fresh_generator()
Esempio n. 10
0
    def __init__(self, start_prices=None, freq='minute', start=None,
                 end=None, calendar=calendar_nyse):
        """
        :Arguments:
            start_prices : dict
                 sid -> starting price.
                 Default: {0: 100, 1: 500}
            freq : str <default='minute'>
                 Emits events according to freq.
                 Can be 'daily' or 'minute'
            start : datetime <default=start of calendar>
                 Start dt to emit events.
            end : datetime <default=end of calendar>
                 End dt until to which emit events.
            calendar : calendar object <default: NYSE>
                 Calendar to use.
                 See zipline.utils for different choices.

        :Example:
            # Assumes you have instantiated your Algorithm
            # as myalgo.
            myalgo = MyAlgo()
            source = RandomWalkSource()
            myalgo.run(source)

        """
        # Hash_value for downstream sorting.
        self.arg_string = hash_args(start_prices, freq, start, end,
                                    calendar.__name__)

        if freq not in self.VALID_FREQS:
            raise ValueError('%s not in %s' % (freq, self.VALID_FREQS))

        self.freq = freq
        if start_prices is None:
            self.start_prices = {0: 100,
                                 1: 500}
        else:
            self.start_prices = start_prices

        self.calendar = calendar
        if start is None:
            self.start = calendar.start
        else:
            self.start = start
        if end is None:
            self.end = calendar.end_base
        else:
            self.end = end

        self.drift = .1
        self.sd = .1

        self.sids = self.start_prices.keys()

        self.open_and_closes = \
            calendar.open_and_closes[self.start:self.end]

        self._raw_data = None
Esempio n. 11
0
    def __init__(self,
                 start_prices=None,
                 freq='minute',
                 start=None,
                 end=None,
                 calendar=calendar_nyse):
        """
        :Arguments:
            start_prices : dict
                 sid -> starting price.
                 Default: {0: 100, 1: 500}
            freq : str <default='minute'>
                 Emits events according to freq.
                 Can be 'day' or 'minute'
            start : datetime <default=start of calendar>
                 Start dt to emit events.
            end : datetime <default=end of calendar>
                 End dt until to which emit events.
            calendar : calendar object <default: NYSE>
                 Calendar to use.
                 See zipline.utils for different choices.

        :Example:
            # Assumes you have instantiated your Algorithm
            # as myalgo.
            myalgo = MyAlgo()
            source = RandomWalkSource()
            myalgo.run(source)

        """
        # Hash_value for downstream sorting.
        self.arg_string = hash_args(start_prices, freq, start, end,
                                    calendar.__name__)

        self.freq = freq
        if start_prices is None:
            self.start_prices = {0: 100, 1: 500}
        else:
            self.start_prices = start_prices

        self.calendar = calendar
        if start is None:
            self.start = calendar.start
        else:
            self.start = start
        if end is None:
            self.end = calendar.end_base
        else:
            self.end = end

        self.drift = .1
        self.sd = .1

        self.sids = self.start_prices.keys()

        self.open_and_closes = \
            calendar.open_and_closes[self.start:self.end]

        self._raw_data = None
Esempio n. 12
0
    def __init__(self, env=None, *args, **kwargs):
        # We shouldn't get any positional arguments.
        assert len(args) == 0

        # Default to None for event_list and filter.
        self.event_list = kwargs.get('event_list')
        self.filter = kwargs.get('filter')
        if self.event_list is not None:
            # If event_list is provided, extract parameters from there
            # This isn't really clean and ultimately I think this
            # class should serve a single purpose (either take an
            # event_list or autocreate events).
            self.count = kwargs.get('count', len(self.event_list))
            self.start = kwargs.get('start', self.event_list[0].dt)
            self.end = kwargs.get('end', self.event_list[-1].dt)
            self.delta = kwargs.get(
                'delta',
                self.event_list[1].dt - self.event_list[0].dt)
            self.concurrent = kwargs.get('concurrent', False)

            self.identifiers = kwargs.get(
                'sids',
                set(event.sid for event in self.event_list)
            )
            env.update_asset_finder(identifiers=self.identifiers)
            self.sids = [
                env.asset_finder.retrieve_asset_by_identifier(identifier).sid
                for identifier in self.identifiers
            ]
            for event in self.event_list:
                event.sid = env.asset_finder.\
                    retrieve_asset_by_identifier(event.sid).sid

        else:
            # Unpack config dictionary with default values.
            self.count = kwargs.get('count', 500)
            self.start = kwargs.get(
                'start',
                datetime(2008, 6, 6, 15, tzinfo=pytz.utc))
            self.end = kwargs.get(
                'end',
                datetime(2008, 6, 6, 15, tzinfo=pytz.utc))
            self.delta = kwargs.get(
                'delta',
                timedelta(minutes=1))
            self.concurrent = kwargs.get('concurrent', False)

            self.identifiers = kwargs.get('sids', [1, 2])
            env.update_asset_finder(identifiers=self.identifiers)
            self.sids = [
                env.asset_finder.retrieve_asset_by_identifier(identifier).sid
                for identifier in self.identifiers
            ]

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(*args, **kwargs)

        self.generator = self.create_fresh_generator()
Esempio n. 13
0
 def __init__(self, rows, cols, datasource_type, time_zone='US/Eastern'):
     self.rows = rows
     self.cols = cols
     self.datasource_type = datasource_type
     
     # These are mandatory for the Zipline DataSource class.
     self.arg_string = hash_args(cols)
     self._raw_data = None
     self.time_zone = timezone(time_zone)
Esempio n. 14
0
    def __init__(self, rows, cols, datasource_type, time_zone='US/Eastern'):
        self.rows = rows
        self.cols = cols
        self.datasource_type = datasource_type

        # These are mandatory for the Zipline DataSource class.
        self.arg_string = hash_args(cols)
        self._raw_data = None
        self.time_zone = timezone(time_zone)
Esempio n. 15
0
    def __init__(self, **kwargs):

        self.arg_string = hash_args('TempCSVDataSource', **kwargs)

        self.sids = kwargs.get('stocks')
        self.start = kwargs.get('start')
        self.end = kwargs.get('end')

        self.started_sids = set()
        self._raw_data = None
Esempio n. 16
0
 def __init__(self, data, **kwargs):
     assert isinstance(data, tables.file.File)
     self.h5file = data
     self.sids = kwargs.get('sids', None)
     self.start = kwargs.get('start')
     self.end = kwargs.get('end')
     self.source_id = kwargs.get("source_id", None)
     self.arg_string = hash_args(data, **kwargs)
     self._raw_data = None
     self.root_node = + "/" + kwargs.get('root', "signal") + "/"
Esempio n. 17
0
 def __init__(self, data, **kwargs):
     assert isinstance(data, tables.file.File)
     self.h5file = data
     self.sids = kwargs.get('sids', None)
     self.start = kwargs.get('start')
     self.end = kwargs.get('end')
     self.source_id = kwargs.get("source_id", None)
     self.arg_string = hash_args(data, **kwargs)
     self._raw_data = None
     self.root_node = +"/" + kwargs.get('root', "signal") + "/"
Esempio n. 18
0
    def __init__(self, data, **kwargs):
        self.data = data
        # Unpack config dictionary with default values.
        self.sids = kwargs.get('sids', data.columns)
        self.start = kwargs.get('start', data.index[0])
        self.end = kwargs.get('end', data.index[-1])

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None
Esempio n. 19
0
 def __init__(self, data, **kwargs):
     assert isinstance(data, csv.DictReader)
     self.data = data
     self.source_id = kwargs.get("source_id", None)
     # Unpack config dictionary with default values.
     self.start = kwargs.get('start')
     self.end = kwargs.get('end')
     self.sids = kwargs.get('sids', None)
     self.sid_filter = kwargs.get('sid_filter', None)
     self.arg_string = hash_args(data, **kwargs)
     self._raw_data = None
Esempio n. 20
0
 def __init__(self, data, **kwargs):
     assert isinstance(data, csv.DictReader)
     self.data = data
     self.source_id = kwargs.get("source_id", None)
     # Unpack config dictionary with default values.
     self.start = kwargs.get('start')
     self.end = kwargs.get('end')
     self.sids = kwargs.get('sids', None)
     self.sid_filter = kwargs.get('sid_filter', None)
     self.arg_string = hash_args(data, **kwargs)
     self._raw_data = None
Esempio n. 21
0
    def __init__(self, data, **kwargs):
        assert isinstance(data.index, pd.tseries.index.DatetimeIndex)

        self.data = data
        # Unpack config dictionary with default values.
        self.sids = kwargs.get("sids", data.columns)
        self.start = kwargs.get("start", data.index[0])
        self.end = kwargs.get("end", data.index[-1])

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None
Esempio n. 22
0
    def __init__(self, data, **kwargs):
        assert isinstance(data.major_axis, pd.tseries.index.DatetimeIndex)

        self.data = data
        # Unpack config dictionary with default values.
        self.sids = kwargs.get('sids', data.items)
        self.start = kwargs.get('start', data.major_axis[0])
        self.end = kwargs.get('end', data.major_axis[-1])

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None
Esempio n. 23
0
    def __init__(self, data, **kwargs):
        assert isinstance(data.major_axis, pd.tseries.index.DatetimeIndex)

        self.data = data
        # Unpack config dictionary with default values.
        self.sids = kwargs.get('sids', data.items)
        self.start = kwargs.get('start', data.major_axis[0])
        self.end = kwargs.get('end', data.major_axis[-1])

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None
Esempio n. 24
0
 def __init__(self, data, **kwargs):
     assert isinstance(data, csv.DictReader)
     self.data = data
     # Unpack config dictionary with default values.
     if 'symbols' in kwargs:
         self.sids = kwargs.get('symbols')
     else:
         self.sids = None
     self.start = kwargs.get('start')
     self.end = kwargs.get('end')
     self.signal
     # signals expects a list
     self.arg_string = hash_args(data, **kwargs)
     self._raw_data = None
Esempio n. 25
0
    def __init__(self, data, **kwargs):
        assert isinstance(data.index, pd.tseries.index.DatetimeIndex)

        self.data = data
        # Unpack config dictionary with default values.
        self.count = kwargs.get('count', len(data))
        self.sids = kwargs.get('sids', data.columns)
        self.start = kwargs.get('start', data.index[0])
        self.end = kwargs.get('end', data.index[-1])
        self.delta = kwargs.get('delta', data.index[1] - data.index[0])

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self.generator = self.create_fresh_generator()
Esempio n. 26
0
    def __init__(self, data_descriptor, **kwargs):
        #assert isinstance(data.major_axis, pd.tseries.index.DatetimeIndex)

        self.data_descriptor = data_descriptor
        # Unpack config dictionary with default values.
        self.sids = kwargs.get('sids', data_descriptor['tickers'])
        self.start = kwargs.get('start', data_descriptor['index'][0])
        self.end = kwargs.get('end', data_descriptor['index'][-1])

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data_descriptor, **kwargs)

        self._raw_data = None

        self.remote = Remote()
Esempio n. 27
0
    def __init__(self, data_descriptor, **kwargs):
        assert isinstance(data_descriptor['index'], pd.tseries.index.DatetimeIndex)

        self.data_descriptor = data_descriptor
        # Unpack config dictionary with default values.
        self.sids = kwargs.get('sids', data_descriptor['tickers'])
        self.start = kwargs.get('start', data_descriptor['index'][0])
        self.end = kwargs.get('end', data_descriptor['index'][-1])

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data_descriptor, **kwargs)

        self._raw_data = None

        self.feed = DataFeed()
Esempio n. 28
0
    def __init__(self, data, **kwargs):
        assert isinstance(data.index, pd.tseries.index.DatetimeIndex)
        # Only accept integer SIDs as the items of the DataFrame
        assert isinstance(data.columns, pd.Int64Index)
        # TODO is ffilling correct/necessary?
        # Forward fill prices
        self.data = data.fillna(method='ffill')
        # Unpack config dictionary with default values.
        self.start = kwargs.get('start', self.data.index[0])
        self.end = kwargs.get('end', self.data.index[-1])
        self.sids = self.data.columns

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None

        self.started_sids = set()
Esempio n. 29
0
 def __init__(self, data, **kwargs):
     isinstance(data, csv.DictReader)
     self.data = data
     # Unpack config dictionary with default values.
     self.tz_in = kwargs.get('tz_in', "US/Eastern")
     self.start = pd.Timestamp(np.datetime64(kwargs.get('start')))
     self.start = self.start.tz_localize('utc')
     self.end = pd.Timestamp(np.datetime64(kwargs.get('end')))
     self.end = self.end.tz_localize('utc')
     start_time_str = kwargs.get("start_time", "9:30")
     end_time_str = kwargs.get("end_time", "16:00")
     self.sid_filter = kwargs.get('sid_filter', None)
     self.source_id = kwargs.get("source_id", None)
     self.sids = kwargs.get('sidsF', None)
     self.start_time = dateutil.parser.parse(start_time_str).time()
     self.end_time = dateutil.parser.parse(end_time_str).time()
     self._raw_data = None
     self.arg_string = hash_args(data, **kwargs)
Esempio n. 30
0
    def __init__(self, data, **kwargs):
        assert isinstance(data['index'], pd.tseries.index.DatetimeIndex)

        self.data = data
        # Unpack config dictionary with default values.
        self.sids  = kwargs.get('sids', data['tickers'])
        self.start = kwargs.get('start', data['index'][0])
        self.end   = kwargs.get('end', data['index'][-1])

        self.fake_index = pd.date_range(self.start, self.end, freq=pd.datetools.BDay())

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None

        self.remote = Fetcher()
        self.feed = DataFeed()
Esempio n. 31
0
    def __init__(self, data, **kwargs):
        assert isinstance(data.index, pd.tseries.index.DatetimeIndex)
        # Only accept integer SIDs as the items of the DataFrame
        assert isinstance(data.columns, pd.Int64Index)
        # TODO is ffilling correct/necessary?
        # Forward fill prices
        self.data = data.fillna(method='ffill')
        # Unpack config dictionary with default values.
        self.start = kwargs.get('start', self.data.index[0])
        self.end = kwargs.get('end', self.data.index[-1])
        self.sids = self.data.columns

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None

        self.started_sids = set()
Esempio n. 32
0
    def __init__(self, data, **kwargs):
        assert isinstance(data.major_axis, pd.tseries.index.DatetimeIndex)
        # Only accept integer SIDs as the items of the Panel
        assert isinstance(data.items, pd.Int64Index)
        # TODO is ffilling correct/necessary?
        # forward fill with volumes of 0
        self.data = data.fillna(value={'volume': 0})
        # Unpack config dictionary with default values.
        self.start = kwargs.get('start', self.data.major_axis[0])
        self.end = kwargs.get('end', self.data.major_axis[-1])
        self.sids = self.data.items

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None

        self.started_sids = set()
Esempio n. 33
0
 def __init__(self, data, **kwargs):
     isinstance(data, csv.DictReader)
     self.data = data
     # Unpack config dictionary with default values.
     self.tz_in = kwargs.get('tz_in', "US/Eastern")
     self.start = pd.Timestamp(np.datetime64(kwargs.get('start')))
     self.start = self.start.tz_localize('utc')
     self.end = pd.Timestamp(np.datetime64(kwargs.get('end')))
     self.end = self.end.tz_localize('utc')
     start_time_str = kwargs.get("start_time", "9:30")
     end_time_str = kwargs.get("end_time", "16:00")
     self.sid_filter = kwargs.get('sid_filter', None)
     self.source_id = kwargs.get("source_id", None)
     self.sids = kwargs.get('sidsF', None)
     self.start_time = dateutil.parser.parse(start_time_str).time()
     self.end_time = dateutil.parser.parse(end_time_str).time()
     self._raw_data = None
     self.arg_string = hash_args(data, **kwargs)
Esempio n. 34
0
    def __init__(self, data, **kwargs):
        assert isinstance(data['index'], pd.tseries.index.DatetimeIndex)

        self.data = data
        # Unpack config dictionary with default values.
        #NOTE Can apply a filter with sids, used while iterating on it later
        self.sids  = kwargs.get('sids', data['tickers'])
        self.start = kwargs.get('start', data['index'][0])
        self.end   = kwargs.get('end', data['index'][-1])

        self.fake_index = pd.date_range(self.start, self.end, freq=pd.datetools.Minute())

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None

        assert isinstance(self.sids, list)
        self.forex = ConnectTrueFX(pairs=self.sids)
Esempio n. 35
0
 def __init__(self, data, **kwargs):
     isinstance(data, csv.DictReader)
     self.data = data
     # Unpack config dictionary with default values.
     if 'symbols' in kwargs:
         self.sids = kwargs.get('symbols')
     else:
         self.sids = None
     self.tz_in = kwargs.get('tz_in', "US/Eastern")
     self.start = pd.Timestamp(np.datetime64(kwargs.get('start')))
     self.start = self.start.tz_localize('utc')
     self.end = pd.Timestamp(np.datetime64(kwargs.get('end')))
     self.end = self.end.tz_localize('utc')
     start_time_str = kwargs.get("start_time", "9:30")
     end_time_str = kwargs.get("end_time", "16:00")
     self.start_time = get_time(start_time_str)
     self.end_time = get_time(end_time_str)
     self._raw_data = None
     self.arg_string = hash_args(data, **kwargs)
Esempio n. 36
0
    def __init__(self, data, **kwargs):
        assert isinstance(data['index'], pd.tseries.index.DatetimeIndex)

        self.data = data
        # Unpack config dictionary with default values.
        self.sids = kwargs.get('sids', data['tickers'])
        self.start = kwargs.get('start', data['index'][0])
        self.end = kwargs.get('end', data['index'][-1])

        self.fake_index = pd.date_range(self.start,
                                        self.end,
                                        freq=pd.datetools.BDay())

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None

        self.remote = Fetcher()
        self.feed = DataFeed()
Esempio n. 37
0
    def __init__(self, data_descriptor, **kwargs):
        assert isinstance(data_descriptor['index'],
                          pd.tseries.index.DatetimeIndex)

        #self.data_descriptor = data_descriptor
        # Unpack config dictionary with default values.
        self.sids = smart_selector(kwargs.get('sids',
                                              data_descriptor['universe']))
        self.start = kwargs.get('start', data_descriptor['index'][0])
        self.end = kwargs.get('end', data_descriptor['index'][-1])
        self.index = data_descriptor['index']

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data_descriptor, **kwargs)

        # Check provided informations
        assert isinstance(self.sids, list)

        self._raw_data = None
        self.initialize(data_descriptor, **kwargs)
    def __init__(self, data, **kwargs):
        
        assert isinstance(data.major_axis, pd.tseries.index.DatetimeIndex)
        # Only accept integer SIDs as the items of the Panel
        assert isinstance(data.items, pd.Int64Index)
        # TODO is ffilling correct/necessary?
        # forward fill with volumes of 0
        
        self.data = data.fillna(value={'volume': 0})
        # Unpack config dictionary with default values.
        self.start = kwargs.get('start', self.data.major_axis[0])
        self.end = kwargs.get('end', self.data.major_axis[-1])
        self.sids = self.data.items

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None

        self.started_sids = set()
Esempio n. 39
0
    def __init__(self, data, **kwargs):
        assert isinstance(data['index'], pd.tseries.index.DatetimeIndex)

        self.data = data
        # Unpack config dictionary with default values.
        #NOTE Can apply a filter with sids, used while iterating on it later
        self.sids = kwargs.get('sids', data['tickers'])
        self.start = kwargs.get('start', data['index'][0])
        self.end = kwargs.get('end', data['index'][-1])

        self.fake_index = pd.date_range(self.start,
                                        self.end,
                                        freq=pd.datetools.Minute())

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None

        assert isinstance(self.sids, list)
        self.forex = ConnectTrueFX(pairs=self.sids)
Esempio n. 40
0
 def __init__(self, data, **kwargs):
     assert isinstance(data, tables.file.File)
     self.data = data
     # Unpack config dictionary with default values.
     if 'symbols' in kwargs:
         self.sids = kwargs.get('symbols')
     else:
         self.sids = None
     self.tz_in = kwargs.get('tz_in', "US/Eastern")
     self.source_id = kwargs.get("source_id", None)
     self.sid_filter = kwargs.get("filter", None)
     self.start = pd.Timestamp(np.datetime64(kwargs.get('start')))
     self.start = self.start.tz_localize('utc')
     self.end = pd.Timestamp(np.datetime64(kwargs.get('end')))
     self.end = self.end.tz_localize('utc')
     start_time_str = kwargs.get("start_time", "9:30")
     end_time_str = kwargs.get("end_time", "16:00")
     self.start_time = dateutil.parser.parse(start_time_str).time()
     self.end_time = dateutil.parser.parse(end_time_str).time()
     self._raw_data = None
     self.arg_string = hash_args(data, **kwargs)
     self.root_node = "/" + kwargs.get('root', "TD") + "/"
Esempio n. 41
0
 def __init__(self, data, **kwargs):
     assert isinstance(data, tables.file.File)
     self.data = data
     # Unpack config dictionary with default values.
     if 'symbols' in kwargs:
         self.sids = kwargs.get('symbols')
     else:
         self.sids = None
     self.tz_in = kwargs.get('tz_in', "US/Eastern")
     self.source_id = kwargs.get("source_id", None)
     self.sid_filter = kwargs.get("filter", None)
     self.start = pd.Timestamp(np.datetime64(kwargs.get('start')))
     self.start = self.start.tz_localize('utc')
     self.end = pd.Timestamp(np.datetime64(kwargs.get('end')))
     self.end = self.end.tz_localize('utc')
     start_time_str = kwargs.get("start_time", "9:30")
     end_time_str = kwargs.get("end_time", "16:00")
     self.start_time = dateutil.parser.parse(start_time_str).time()
     self.end_time = dateutil.parser.parse(end_time_str).time()
     self._raw_data = None
     self.arg_string = hash_args(data, **kwargs)
     self.root_node = "/" + kwargs.get('root', "TD") + "/"
Esempio n. 42
0
    def __init__(self, data, env=None, **kwargs):
        assert isinstance(data.index, pd.tseries.index.DatetimeIndex)

        self.data = data.fillna(method='ffill')
        # Unpack config dictionary with default values.
        self.start = kwargs.get('start', self.data.index[0])
        self.end = kwargs.get('end', self.data.index[-1])

        # Remap sids based on the trading environment
        self.identifiers = kwargs.get('sids', self.data.columns)
        env.update_asset_finder(identifiers=self.identifiers)
        self.data.columns = [
            env.asset_finder.retrieve_asset_by_identifier(identifier).sid
            for identifier in self.data.columns
        ]
        self.sids = self.data.columns

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None

        self.started_sids = set()
Esempio n. 43
0
    def __init__(self, data, env=None, **kwargs):
        assert isinstance(data.index, pd.tseries.index.DatetimeIndex)

        self.data = data.fillna(method='ffill')
        # Unpack config dictionary with default values.
        self.start = kwargs.get('start', self.data.index[0])
        self.end = kwargs.get('end', self.data.index[-1])

        # Remap sids based on the trading environment
        self.identifiers = kwargs.get('sids', self.data.columns)
        env.update_asset_finder(identifiers=self.identifiers)
        self.data.columns = [
            env.asset_finder.retrieve_asset_by_identifier(identifier).sid
            for identifier in self.data.columns
        ]
        self.sids = self.data.columns

        # Hash_value for downstream sorting.
        self.arg_string = hash_args(data, **kwargs)

        self._raw_data = None

        self.started_sids = set()
Esempio n. 44
0
    def __init__(self, tnfm_class, *args, **kwargs):
        assert hasattr(tnfm_class, 'update'), \
            "Stateful transform requires the class to have an update method"

        # Create an instance of our transform class.
        if isinstance(tnfm_class, TransformMeta):
            # Classes derived TransformMeta have their __call__
            # attribute overridden.  Since this is what is usually
            # used to create an instance, we have to delegate the
            # responsibility of creating an instance to
            # TransformMeta's parent class, which is 'type'. This is
            # what is implicitly done behind the scenes by the python
            # interpreter for most classes anyway, but here we have to
            # be explicit because we've overridden the method that
            # usually resolves to our super call.
            self.state = super(TransformMeta,
                               tnfm_class).__call__(*args, **kwargs)
        # Normal object instantiation.
        else:
            self.state = tnfm_class(*args, **kwargs)
        # save the window_length of the state for external access.
        self.window_length = self.state.window_length
        # Create the string associated with this generator's output.
        self.namestring = tnfm_class.__name__ + hash_args(*args, **kwargs)
Esempio n. 45
0
 def get_hash(self):
     """
     There should only ever be one TSC in the system, so
     we don't bother passing args into the hash.
     """
     return self.__class__.__name__ + hash_args()
Esempio n. 46
0
 def get_hash(self):
     """
     There should only ever be one TSC in the system, so
     we don't bother passing args into the hash.
     """
     return self.__class__.__name__ + hash_args()
Esempio n. 47
0
 def __init__(self, fname):
     self.fname = fname
     self.arg_string = hash_args(fname)
     self._raw_data = None
Esempio n. 48
0
    def __init__(self,
                 start_prices=None,
                 freq='minute',
                 start=None,
                 end=None,
                 drift=0.1,
                 sd=0.1,
                 trading_schedule=default_nyse_schedule):
        """
        :Arguments:
            start_prices : dict
                 sid -> starting price.
                 Default: {0: 100, 1: 500}
            freq : str <default='minute'>
                 Emits events according to freq.
                 Can be 'daily' or 'minute'
            start : datetime <default=start of calendar>
                 Start dt to emit events.
            end : datetime <default=end of calendar>
                 End dt until to which emit events.
            drift: float <default=0.1>
                 Constant drift of the price series.
            sd: float <default=0.1>
                 Standard deviation of the price series.
            trading_schedule : TradingSchedule object <default: NYSESchedule>
                 TradingSchedule to use.
                 See zipline.utils for different choices.

        :Example:
            # Assumes you have instantiated your Algorithm
            # as myalgo.
            myalgo = MyAlgo()
            source = RandomWalkSource()
            myalgo.run(source)

        """
        # Hash_value for downstream sorting.
        self.arg_string = hash_args(start_prices, freq, start, end,
                                    trading_schedule.__name__)

        if freq not in self.VALID_FREQS:
            raise ValueError('%s not in %s' % (freq, self.VALID_FREQS))

        self.freq = freq
        if start_prices is None:
            self.start_prices = {0: 100, 1: 500}
        else:
            self.start_prices = start_prices

        self.trading_schedule = trading_schedule
        if start is None:
            self.start = trading_schedule.first_execution_day
        else:
            self.start = start
        if end is None:
            self.end = trading_schedule.last_execution_day
        else:
            self.end = end

        self.drift = drift
        self.sd = sd

        self.sids = self.start_prices.keys()

        self.open_and_closes = \
            trading_schedule.schedule[self.start:self.end]

        self._raw_data = None
Esempio n. 49
0
    def __init__(self, start_prices=None, freq='minute', start=None,
                 end=None, drift=0.1, sd=0.1,
                 trading_schedule=default_nyse_schedule):
        """
        :Arguments:
            start_prices : dict
                 sid -> starting price.
                 Default: {0: 100, 1: 500}
            freq : str <default='minute'>
                 Emits events according to freq.
                 Can be 'daily' or 'minute'
            start : datetime <default=start of calendar>
                 Start dt to emit events.
            end : datetime <default=end of calendar>
                 End dt until to which emit events.
            drift: float <default=0.1>
                 Constant drift of the price series.
            sd: float <default=0.1>
                 Standard deviation of the price series.
            trading_schedule : TradingSchedule object <default: NYSESchedule>
                 TradingSchedule to use.
                 See zipline.utils for different choices.

        :Example:
            # Assumes you have instantiated your Algorithm
            # as myalgo.
            myalgo = MyAlgo()
            source = RandomWalkSource()
            myalgo.run(source)

        """
        # Hash_value for downstream sorting.
        self.arg_string = hash_args(start_prices, freq, start, end,
                                    trading_schedule.__name__)

        if freq not in self.VALID_FREQS:
            raise ValueError('%s not in %s' % (freq, self.VALID_FREQS))

        self.freq = freq
        if start_prices is None:
            self.start_prices = {0: 100,
                                 1: 500}
        else:
            self.start_prices = start_prices

        self.trading_schedule = trading_schedule
        if start is None:
            self.start = trading_schedule.first_execution_day
        else:
            self.start = start
        if end is None:
            self.end = trading_schedule.last_execution_day
        else:
            self.end = end

        self.drift = drift
        self.sd = sd

        self.sids = self.start_prices.keys()

        self.open_and_closes = \
            trading_schedule.schedule[self.start:self.end]

        self._raw_data = None
Esempio n. 50
0
    def __init__(self,
                 start_prices=None,
                 freq='minute',
                 start=None,
                 end=None,
                 drift=0.1,
                 sd=0.1,
                 calendar=calendar_nyse):
        """
        :Arguments:
            start_prices : dict
                 sid -> starting price.
                 Default: {0: 100, 1: 500}
            freq : str <default='minute'>
                 Emits events according to freq.
                 Can be 'daily' or 'minute'
            start : datetime <default=start of calendar>
                 Start dt to emit events.
            end : datetime <default=end of calendar>
                 End dt until to which emit events.
            drift: float <default=0.1>
                 Constant drift of the price series.
            sd: float <default=0.1>
                 Standard deviation of the price series.
            calendar : calendar object <default: NYSE>
                 Calendar to use.
                 See zipline.utils for different choices.

        :Example:
            # Assumes you have instantiated your Algorithm
            # as myalgo.
            myalgo = MyAlgo()
            source = RandomWalkSource()
            myalgo.run(source)

        """
        # Hash_value for downstream sorting.
        self.arg_string = hash_args(start_prices, freq, start, end,
                                    calendar.__name__)

        if freq not in self.VALID_FREQS:
            raise ValueError('%s not in %s' % (freq, self.VALID_FREQS))

        self.freq = freq
        if start_prices is None:
            self.start_prices = {0: 100, 1: 500}
        else:
            self.start_prices = start_prices

        self.calendar = calendar
        if start is None:
            self.start = calendar.start
        else:
            self.start = start
        if end is None:
            self.end = calendar.end_base
        else:
            self.end = end

        self.drift = drift
        self.sd = sd

        self.sids = self.start_prices.keys()
        TradingEnvironment.instance().update_asset_finder(
            identifiers=self.sids)

        self.open_and_closes = \
            calendar.open_and_closes[self.start:self.end]

        self._raw_data = None