- Refactored EventsLoader and BlazeEventsLoader to not require a
subclass per dataset. Instead, you now pass a map from columns to
event fields directly to the EventsLoader constructor.
- Removed a large number of Quantopian-specific datasets and associated
tests.
- Rewrote the core logic of EventsLoader and BlazeEventsLoader to share
index calculations across multiple requested columns.
- Fixed a bug where event fields were incorrectly forward-filled when
null values were present in an event.
ENH: fast stochastic oscillator added.
A fast stochastic oscillator has been added to the technical
factors. This is the simplest of the stochastic oscillators,
and can be used to build the others.
Tests have been added that compare against the values expected
from that of ta-lib STOCHF.
FastStochasticOscillator is marked as window_safe=True to allow taking
moving averages for smoothing.
STY: remove unused imports
MAINT: change dtype to object for compatibility with python3
MAINT: rename pipeline columns and constants for clarity
MAINT: rename column
MAINT: add back cash amount constant
BUG: fix field names
BUG: pass remaining args
WIP: make buyback units parameterized so that user can choose
BUG: fix filtering based on units parameter
WIP: test for undesired units
Revert "WIP: make buyback units parameterized so that user can choose"
This reverts commit df3b838d525bff5026eba1d81865c6645d534c88.
The previous algorithm assumed that the group labels were integers. It
produced nonsense with LabelArrays (though sadly didn't crash because
numpy promotes None and void to object).
- Adds a new class, ``LabelArray``, which is a subclass of np.ndarray.
LabelArray is conceptually similar to pandas.Categorical, in that it
stores data with many duplicate values as indices into an array of
unique values. For string data with many duplicates (e.g. time-series
of tickers or or industry classifications), this provides multiple
orders of magnitude of improvement when doing string operations,
especially string comparison/matching operations.
- Adds a new generic object "specialization" for `AdjustedArrayWindow`,
and a corresponding ObjectOverwrite adjustment.
- Adds a new ``postprocess`` method to ``zipline.pipeline.term.Term``.
This method is called on the final result of any pipeline expression
after screen filtering has occurred. The default implementation of
``postprocess`` is identity, but Classifier overrides it to coerce
string columns into pandas.Categoricals before presenting them to the
user.
Adds the data bundle concept which makes it easy for users to register
loading functions to build out minute and daily data along with an
assets db and adjustments db. By default we have provided a `quandl`
bundle which pulls from the public domain WIKI dataset. Users may
register new bundles by decorating an ingest function with
`zipline.data.bundles.register(<name>)`. This also provides a
`yahoo_equities` function for creating an ingestion function that will
load a static set of assets from yahoo.
The cli is now structured as a couple of subcommands and has been
changed to `python -m zipline`. The old behavior of `run_algo.py` has
been moved to the `run` subcommand. This is almost entirely the same
except that it now takes the name of the data bundle to use, defaulting
to `quandl`.
The next subcommand is `ingest` which takes the name of
a data bundle to ingest. This will run the loading machinery and write
the data to a specified location that `run` can find.
There is also a `clean` subcommand which deletes the data that was
written with `ingest`.
Extensions have also been added to zipline. This is an experimental
feature where users can provide an extra set of python files to run at
the start of the process. These can be used to configure aspects of
zipline. Right now the only thing that is supported in an extension file
is the registration of a new data bundle.