Files
2015-11-10 15:36:35 -05:00

216 lines
6.3 KiB
Plaintext

Release 0.7.0
-------------
:Release: 0.7.0
:Date: July 25, 2014
Highlights
~~~~~~~~~~
* Command line interface to run algorithms directly.
* IPython Magic ``%%zipline`` that runs algorithm defined in an IPython
notebook cell.
* API methods for building safeguards against runaway ordering and
undesired short positions.
* New history() function to get a moving DataFrame of past market data
(replaces BatchTransform).
* A new `beginner
tutorial <http://nbviewer.ipython.org/github/quantopian/zipline/blob/master/docs/tutorial.ipynb>`__.
Enhancements
~~~~~~~~~~~~
* CLI: Adds a CLI and IPython magic for zipline.
Example:
::
python run_algo.py -f dual_moving_avg.py --symbols AAPL --start 2011-1-1 --end 2012-1-1 -o dma.pickle
Grabs the data from yahoo finance, runs the file
dual\_moving\_avg.py (and looks for ``dual_moving_avg_analyze.py``
which, if found, will be executed after the algorithm has been run),
and outputs the perf ``DataFrame`` to ``dma.pickle`` (:issue:`325`).
- IPython magic command (at the top of an IPython notebook cell).
Example:
::
%%zipline --symbols AAPL --start 2011-1-1 --end 2012-1-1 -o perf
Does the same as above except instead of executing the file looks
for the algorithm in the cell and instead of outputting the perf df
to a file, creates a variable in the namespace called perf (:issue:`325`).
* Adds Trading Controls to the algorithm API.
The following functions are now available on ``TradingAlgorithm``
and for algo scripts:
``set_max_order_size(self, sid=None, max_shares=None, max_notional=None)``
Set a limit on the absolute magnitude, in shares and/or total
dollar value, of any single order placed by this algorithm for a
given sid. If ``sid`` is None, then the rule is applied to any order
placed by the algorithm.
Example:
.. code-block:: python
def initialize(context):
# Algorithm will raise an exception if we attempt to place an
# order which would cause us to hold more than 10 shares
# or 1000 dollars worth of sid(24).
set_max_order_size(sid(24), max_shares=10, max_notional=1000.0)
``set_max_position_size(self, sid=None, max_shares=None, max_notional=None)``
-Set a limit on the absolute magnitude, in either shares or
dollar value, of any position held by the algorithm for a given
sid. If ``sid`` is None, then the rule is applied to any position
held by the algorithm.
Example:
.. code-block:: python
def initialize(context):
# Algorithm will raise an exception if we attempt to order more than
# 10 shares or 1000 dollars worth of sid(24) in a single order.
set_max_order_size(sid(24), max_shares=10, max_notional=1000.0)
``set_max_order_count(self, max_count)``
Set a limit on the number of orders that can be placed by the algorithm in
a single trading day.
Example:
.. code-block:: python
def initialize(context):
# Algorithm will raise an exception if more than 50 orders are placed in a day.
set_max_order_count(50)
``set_long_only(self)``
Set a rule specifying that the
algorithm may not hold short positions.
Example:
.. code-block:: python
def initialize(context):
# Algorithm will raise an exception if it attempts to place
# an order that would cause it to hold a short position.
set_long_only()
(:issue:`329`).
* Adds an ``all_api_methods`` classmethod on ``TradingAlgorithm`` that
returns a list of all ``TradingAlgorithm`` API methods (:issue:`333`).
* Expanded record() functionality for dynamic naming.
The record() function can now take positional args before the
kwargs. All original usage and functionality is the same, but now
these extra usages will work:
.. code-block:: python
name = 'Dynamically_Generated_String'
record( name, value, ... )
record( name, value1, 'name2', value2, name3=value3, name4=value4 )
The requirements are simply that the poritional args occur only
before the kwargs (:issue:`355`).
* history() has been ported from Quantopian to Zipline and provides
moving window of market data.
history() replaces BatchTransform. It is faster, works for minute level data
and has a superior interface. To use it, call ``add_history()`` inside of
``initialize()`` and then receive a pandas ``DataFrame`` by calling history()
from inside ``handle_data()``. Check out the `tutorial
<http://nbviewer.ipython.org/github/quantopian/zipline/blob/master/docs/tutorial.ipynb>`__
and an `example
<https://github.com/quantopian/zipline/blob/master/zipline/examples/dual_moving_average.py>`__.
(:issue:`345` and :issue:`357`).
* history() now supports ``1m`` window lengths (:issue:`345`).
Bug Fixes
~~~~~~~~~
* Fix alignment of trading days and open and closes in trading
environment (:issue:`331`).
* RollingPanel fix when adding/dropping new fields (:issue:`349`).
Performance
~~~~~~~~~~~
None
Maintenance and Refactorings
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Removed undocumented and untested HDF5 and CSV data sources (:issue:`267`).
* Refactor sim\_params (:issue:`352`).
* Refactoring of history (:issue:`340`).
Build
~~~~~
* The following dependencies have been updated (zipline might work with
other versions too):
.. code-block:: diff
-pytz==2013.9
+pytz==2014.4
+numpy==1.8.1
-numpy==1.8.0
+scipy==0.12.0
+patsy==0.2.1
+statsmodels==0.5.0
-six==1.5.2
+six==1.6.1
-Cython==0.20
+Cython==0.20.1
-TA-Lib==0.4.8
+--allow-external TA-Lib --allow-unverified TA-Lib TA-Lib==0.4.8
-requests==2.2.0
+requests==2.3.0
-nose==1.3.0
+nose==1.3.3
-xlrd==0.9.2
+xlrd==0.9.3
-pep8==1.4.6
+pep8==1.5.7
-pyflakes==0.7.3
-pip-tools==0.3.4
+pyflakes==0.8.1`
-scipy==0.13.2
-tornado==3.2
-pyparsing==2.0.1
-patsy==0.2.1
-statsmodels==0.4.3
+tornado==3.2.1
+pyparsing==2.0.2
-Markdown==2.3.1
+Markdown==2.4.1
Contributors
~~~~~~~~~~~~
The following people have contributed to this release, ordered by
numbers of commit:
::
38 Scott Sanderson
29 Thomas Wiecki
26 Eddie Hebert
6 Delaney Granizo-Mackenzie
3 David Edwards
3 Richard Frank
2 Jonathan Kamens
1 Pankaj Garg
1 Tony Lambiris
1 fawce