Files
2016-02-25 14:49:08 -05:00

225 lines
9.5 KiB
Plaintext

Release 0.8.4
-------------
:Release: 0.8.4
:Date: February 24, 2016
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`).
* Improved support for non-float dtypes in Pipeline. Most notably, we now
support ``datetime64`` and ``int64`` dtypes for ``Factor``, and
``BoundColumn.latest`` now returns a proper ``Filter`` object when the column
is of dtype ``bool``.
* Zipline now supports ``numpy`` 1.10, ``pandas`` 0.17, and ``scipy`` 0.16
(:issue:`969`).
* Batch transforms have been deprecated and will be removed in a future release.
Using ``history`` is recommended as an alternative.
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.AverageDollarVolume`. (:issue:`927`).
* Added :class:`~zipline.pipeline.factors.ExponentialWeightedMovingAverage` and
:class:`~zipline.pipeline.factors.ExponentialWeightedMovingStdDev`
factors. (:issue:`910`).
* Allow :class:`~zipline.pipeline.data.DataSet` classes to be subclassed where
subclasses inherit all of the columns from the parent. These columns will be
new sentinels so you can register them a custom loader (:issue:`924`).
* Added :func:`~zipline.utils.input_validation.coerce` to coerce inputs from one
type into another before passing them to the function (:issue:`948`).
* Added :func:`~zipline.utils.input_validation.optionally` to wrap other
preprocessor functions to explicitly allow ``None`` (:issue:`947`).
* Added :func:`~zipline.utils.input_validation.ensure_timezone` to allow string
arguments to get converted into :class:`datetime.tzinfo` objects. This also
allows ``tzinfo`` objects to be passed directly (:issue:`947`).
* Added two optional arguments, ``data_query_time`` and ``data_query_tz`` to
:class:`~zipline.pipeline.loaders.blaze.core.BlazeLoader` and
:class:`~zipline.pipeline.loaders.blaze.earnings.BlazeEarningsCalendarLoader`.
These arguments allow the user to specify some cutoff time for data when
loading from the resource. For example, if I want to simulate executing my
``before_trading_start`` function at ``8:45 US/Eastern`` then I could pass
``datetime.time(8, 45)`` and ``'US/Eastern'`` to the loader. This means that
data that is timestamped on or after ``8:45`` will not seen on that day in the
simulation. The data will be made available on the next day (:issue:`947`).
* ``BoundColumn.latest`` now returns a
:class:`~zipline.pipeline.filters.Filter` for columns of dtype
``bool`` (:issue:`962`).
* Added support for :class:`~zipline.pipeline.factors.Factor` instances with
``int64`` dtype. :class:`~zipline.pipeline.data.dataset.Column` now requires
a ``missing_value`` when dtype is integral. (:issue:`962`)
* It is also now possible to specify custom ``missing_value`` values for
``float``, ``datetime``, and ``bool`` Pipeline terms. (:issue:`962`)
* Added auto-close support for equities. Any positions held in an equity that
reaches its ``auto_close_date`` will be liquidated for cash according to the
equity's last sale price. Furthermore, any open orders for that equity will
be canceled. Both futures and equities are now auto-closed on the morning of
their ``auto_close_date``, immediately prior to ``before_trading_start``.
(:issue:`982`)
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 :data:`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`).
* Corrected the error messages for :func:`~zipline.api.set_commission` and
:func:`~zipline.api.set_slippage` when used outside of the ``initialize``
function. These errors called the functions ``override_*`` instead of
``set_*``. This also renamed the exception types raised from
``OverrideSlippagePostInit`` and ``OverrideCommissionPostInit`` to
:class:`~zipline.errors.SetSlippagePostInit` and
:class:`~zipline.errors.SetCommissionPostInit` (:issue:`923`).
* Fixed an issue in the CLI that would cause assets to be added twice.
This would map the same symbol to two different sids (:issue:`942`).
* Fixed an issue where the
:class:`~zipline.finance.performance.period.PerformancePeriod` incorrectly
reported the total_positions_value when creating a
:class:`~zipline.protocol.Account` (:issue:`950`).
* Fixed issues around KeyErrors coming from history and BarData on 32-bit
python, where Assets did not compare properly with int64s (:issue:`959`).
* Fixed a bug where boolean operators were not properly implemented on
:class:`~zipline.pipeline.Filter` (:issue:`991`).
* Installation of zipline no longer downgrades numpy to 1.9.2 silently and
unconditionally (:issue:`969`).
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`).
* Upgrade ``requests`` version to 2.9.1 (:commit:`2ee40db`)
* Upgrade ``logbook`` version to 0.12.5 (:commit:`11465d9`).
* Upgrade ``Cython`` version to 0.23.4 (:commit:`5f49fa2`).
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`).
* Fixed conda build, which now uses git source as its source and reads
requirements using setup.py, instead of copying them and letting them get out
of sync (:issue:`937`).
* Require ``setuptools`` > 18.0 (:issue:`951`).
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 :func:`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`).
* Added a tool to downgrade the assets db to previous versions (:issue:`941`).