Development ----------- :Release: 0.8.4 :Date: TBD .. warning:: This release is still under active development. All changes listed are subject to change at any time. Highlights ~~~~~~~~~~ * Added a new :class:`~zipline.pipeline.data.EarningsCalendar` dataset for use in the Pipeline API. (:issue:`905`). * :class:`~zipline.assets.assets.AssetFinder` speedups (:issue:`830` and :issue:`817`). Enhancements ~~~~~~~~~~~~ * Adds a way for users to provide a context manager to use when executing the scheduled functions (including ``handle_data``). This context manager will be passed the :class:`~zipline.protocol.BarData` object for the bar and will be used for the duration of all of the functions scheduled to run. This can be passed to :class:`~zipline.algorithm.TradingAlgorithm` by the keyword argument ``create_event_context`` (:issue:`828`). * Added support for :class:`zipline.pipeline.factors.Factor` instances with ``datetime64[ns]`` dtypes. (:issue:`905`) * Added a new :class:`~zipline.pipeline.data.earnings.EarningsCalendar` dataset for use in the Pipeline API. This dataset provides an abstract interface for adding earnings announcement data to a new algorithm. A pandas-based reference implementation for this dataset can be found in :mod:`zipline.pipeline.loaders.earnings`, and an experimental blaze-based implementation can be found in :mod:`zipline.pipeline.loaders.blaze.earnings`. (:issue:`905`). * Added new built-in factors, :class:`zipline.pipeline.factors.BusinessDaysUntilNextEarnings` and :class:`zipline.pipeline.factors.BusinessDaysSincePreviousEarnings`. These factors use the new ``EarningsCalendar`` dataset. (:issue:`905`). * Added :meth:`~zipline.pipeline.factors.Factor.isnan`, :meth:`~zipline.pipeline.factors.Factor.notnan` and :meth:`~zipline.pipeline.factors.Factor.isfinite` methods to :class:`zipline.pipeline.factors.Factor` (:issue:`861`). * Added :class:`zipline.pipeline.factors.Returns`, a built-in factor which calculates the percent change in close price over the given window_length. (:issue:`884`). * Added a new built-in factor: :class:`~zipline.pipeline.factors.DollarVolume`. (:issue:`910`). * Added :class:`~zipline.pipeline.factors.ExponentialWeightedMovingAverage` and :class:`~zipline.pipeline.factors.ExponentialWeightedMovingStdDev` factors. (:issue:`910`). Experimental Features ~~~~~~~~~~~~~~~~~~~~~ .. warning:: Experimental features are subject to change. * Added support for parameterized ``Factor`` subclasses. Factors may specify ``params`` as a class-level attribute containing a tuple of parameter names. These values are then accepted by the constructor and forwarded by name to the factor's ``compute`` function. This API is experimental, and may change in future releases. Bug Fixes ~~~~~~~~~ * Fixes an issue that would cause the daily/minutely method caching to change the ``len`` of a :class:`~zipline.protocol.SIDData` object. This would cause us to think that the object was not empty even when it was (:issue:`826`). * Fixes an error raised in calculating beta when benchmark data were sparse. Instead `numpy.nan` is returned (:issue:`859`). * Fixed an issue pickling :func:`~zipline.utils.sentinel.sentinel` objects (:issue:`872`). * Fixed spurious warnings on first download of treasury data (:issue `922`). Performance ~~~~~~~~~~~ * Speeds up :meth:`~zipline.assets.assets.AssetFinder.lookup_symbol` by adding an extension, :class:`~zipline.assets.assets.AssetFinderCachedEquities`, that loads equities into dictionaries and then directs :meth:`~zipline.assets.assets.AssetFinder.lookup_symbol` to these dictionaries to find matching equities (:issue:`830`). * Improved performance of :meth:`~zipline.assets.assets.AssetFinder.lookup_symbol` by performing batched queries. (:issue:`817`). Maintenance and Refactorings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Asset databases now contain version information to ensure compatibility with current Zipline version (:issue:`815`). Build ~~~~~ * Makes zipline install requirements more flexible (:issue:`825`). * Use ``versioneer`` to manage the project ``__version__`` and setup.py version (:issue:`829`). * Fixed coveralls integration on travis build (:issue:`840`). Documentation ~~~~~~~~~~~~~ * Document the release process for developers (:issue:`835`). * Added reference docs for the Pipeline API. (:issue:`864`). * Added reference docs for Asset Metadata APIs. (:issue:`864`). * Generated documentation now includes links to source code for many classes and functions. (:issue:`864`). * Added platform-specific documentation describing how to find binary dependencies. (:issue:`883`). Miscellaneous ~~~~~~~~~~~~~ * Added a :meth:`~zipline.pipeline.pipeline.Pipeline.show_graph` method to render a Pipeline as an image (:issue:`836`). * Adds :func:`~zipline.utils.test_utils.subtest` decorator for creating subtests without ``nose_parameterized.expand`` which bloats the test output (:issue:`833`). * Limits timer report in test output to 15 longest tests (:issue:`838`). * Treasury and benchmark downloads will now wait up to an hour to download again if data returned from a remote source does not extend to the date expected. (:issue:`841`).