Commit Graph
139 Commits
Author SHA1 Message Date
Scott Sanderson ddef107fa1 BLD: Downgrade to scipy 0.17.
Anaconda doesn't have windows builds for scipy 0.18 (nor does
conda-forge.)
2016-09-20 17:12:08 -04:00
Scott Sanderson 9e517691bb BLD: Remove old numpy/pandas versions from travis. 2016-09-20 17:12:07 -04:00
Scott Sanderson 29d5854aa1 MAINT: Bump numpy and pandas. 2016-09-20 16:24:54 -04:00
Richard Frank ef04fe3a9b PERF: Use empyrical with ndarrays instead of Series 2016-09-19 15:51:06 -04:00
Jean Bredeche a7f345e651 ENH: Switching from cachetools.LRUCache to lru-dict's LRU cache.
lru-dict is written in C and seems much more performant.
2016-09-16 11:03:13 -04:00
Ana Ruelas 3698362030 BLD: Update to empyrical 0.1.11 2016-08-30 16:41:57 -04:00
John Ricklefs 201e72aee1 PERF: Pass known calculations into empyrical methods
For example, to prevent `alpha` from internally calling
`beta` a second time, pass the previously-calculated
`beta` value in.

Requires empyrical 0.1.10 from pypi
2016-08-29 12:13:19 -04:00
Richard Frank abdfe0265d BLD: alembic is now a production requirement 2016-08-24 15:32:31 -04:00
Ana Ruelas 1f829f8c92 MAINT: Update whatsnew for empyrical changes 2016-08-23 17:02:12 -04:00
Ana Ruelas f0af856c13 TST: Update to empyrical, increase test coverage
ENH: Resolve rebase conflict by using updated example_data.tar

TST: Increase test coverage for risk portion of zipline
2016-08-23 13:49:43 -04:00
Ana Ruelas 902865cf71 ENH: Use qrisk to calculate risk metrics in cumulative and period
TST: Remove metric correctness testing from period and cumulative tests

ENH: Removed answer key and related files

ENH: Update qrisk version
2016-08-23 13:49:27 -04:00
Joe Jevnik 59c8e371a2 ENH: Updates the cli, data bundles and extensions.
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.
2016-05-03 18:38:24 -04:00
Joe Jevnik bc0b117dc9 MAINT: make the data loading apis more consistent.
Changes BcolzDailyBarWriter to not be an abc, data is passed as an
iterator of (sid, dataframe) pairs to the write method.

Changes the AssetsDBWriter to be a single class which accepts an engine
at construction time and has a `write` method for writing dataframes for
the various tables. We no longer support writing the various other data
types, callers should coerce their data into a dataframe themselves. See
zipline.assets.synthetic for some helpers to do this.

Adds many new fixtures and updates some existing fixtures to use the new
ones:

WithDefaultDateBounds
  A fixture that provides the suite a START_DATE and END_DATE. This is
  meant to make it easy for other fixtures to synchronize their date
  ranges without depending on eachother in strange ways. For example,
  WithBcolzMinuteBarReader and WithBcolzDailyBarReader by default should
  both have data for the same dates, so they may use depend on
  WithDefaultDates without forcing a dependency between them.

WithTmpDir, WithInstanceTmpDir
  Provides the suite or individual test case a temporary directory.

WithBcolzDailyBarReader
  Provides the suite a BcolzDailyBarReader which reads from bcolz data
  written to a temporary directory. The data will be read from
  dataframes and then converted to bcolz files with
  BcolzDailyBarWriter.write

WithBcolzDailyBarReaderFromCSVs
  Provides the suite a BcolzDailyBarReader which reads from bcolz data
  written to a temporary directory. The data will be read from a
  collection of CSV files and then converted into the bcolz data through
  BcolzDailyBarWriter.write_csvs

WithBcolzMinuteBarReader
  Provides the suite a BcolzMinuteBarReader which reads from bcolz data
  written to a temporary directory. The data will be read from
  dataframes and then converted to bcolz files with
  BcolzMinuteBarWriter.write

WithAdjustmentReader
  Provides the suite a SQLiteAdjustmentReader which reads from an in
  memory sqlite database. The data will be read from dataframes and then
  converted into sqlite with SQLiteAdjustmentWriter.write

WithDataPortal
  Provides each test case a DataPortal object with data from temporary
  resources.
2016-04-15 23:46:10 -04:00
Eddie Hebert e1b376a49b BUG: Add limit to memory growth on sliding windows
Add a cap of 5 sliding windows (one per OHCLV column) to the history
loader's cache of sliding windos.

This prevents unbounded growth on algorithms that call history with a
highly varied list of equities.

To follow is splitting the cache up by column and by sid, so that the
loader does not re-prefetch sids which have already been read with
sufficient data; however this patch is enough to fix the issue where an
algo with high rotation can add up a megabyte per day of memory on
algorithms which rotate on a 5% dollar volume pipeline. With this cap
those algorithms have more plateaus with regard to memory consumption.

This patch requires new dependency of `cachetools` library.
2016-04-14 22:20:02 -04:00
Richard Frank 5254b273b2 PERF: Reimplemented remember_last with a weak_lru_cache
which won't leak instances whose methods have been decorated

(specifically DataPortal instances)

MAINT: Not using functools32 anymore
2016-04-12 19:33:21 -04:00
Richard Frank 6e7c66b158 BLD: ordered_pip is unforgiving 2016-04-06 09:33:33 -04:00
Richard Frank 39fbdd30e3 MAINT: Use environment markers instead of separate requirements
file for py2
2016-04-05 23:07:00 -04:00
Richard FrankandJean Bredeche be4dcb22dc MAINT: intervaltree requires sortedcontainers 2016-04-04 16:12:58 -04:00
Eddie HebertandJean Bredeche 16fd6681a6 ENH: Rewrite of Zipline to use lazy access pattern
More documentation to follow in release notes.

Based on lazy-mainline branch, see for more details.

Also-By: Jean Bredeche <jean@quantopian.com>
Also-By: Andrew Liang <aliang@quantopian.com>
Also-By: Abhijeet Kalyan <akalyan@quantopian.com>
2016-04-04 16:12:58 -04:00
Richard Frank 2ee66e4c1d BLD: Bumped numexpr version and added conda recipe 2016-03-23 15:26:54 -04:00
Jonathan Kamens f5d6060bb4 MAINT: Upgrade six, futures, requests-futures, piprot versions
Upgrade six 1.9.0 -> 1.10.0 in requirements.txt, and futures 3.0.3 ->
3.0.5, requests-futures 0.9.5 -> 0.9.7, and piprot 0.9.1 -> 0.9.6 in
requirements_dev.txt.
2016-02-27 11:46:51 -05:00
Jonathan Kamens 369a24aaec MAINT: Remove obsolete comment from requirements.txt
There was a comment in requirements.txt warning not to use
python-dateutil 2.4.0, which was necessary when we were using 2.3.x
and 2.4.0 was broken for us, but now we're using 2.4.2 which is fixed,
so the comment is no longer needed.
2016-02-27 11:45:44 -05:00
Richard Frank adb051700a BLD: Downgrade Cython
because of mislabeled osx anaconda package
2016-02-19 15:42:02 -05:00
Joe JevnikandRichard Frank 97f1ac7970 BLD: add setuptools>18 for bcolz 2016-02-18 21:11:47 -05:00
Jonathan Kamens 11465d907d MAINT: Upgrade Logbook version
Upgrade Logbook to 0.12.5. This required changing a usage of
`logbook.NullHandler()` which passed `bubble=True`, since
`NullHandler` no longer supports the `bubble` argument.
2016-02-16 13:32:25 -05:00
Richard Frank d5bd2a9fb8 BLD: Pinning version of indirect dependency 2016-02-12 17:00:45 -05:00
Scott SandersonandRichard Frank 5f49fa22cb MAINT: Upgrade numpy and fix warnings.
Mostly fixes ambiguous calls to numpy.full, and uses explicitly-united
NaT values.
2016-02-11 18:46:39 -05:00
Jonathan Kamens 2ee40db0ec MAINT: Upgrade requests 2.7.0 -> 2.9.1 2016-01-06 22:33:33 -05:00
Richard Frank 99de89c817 PERF: Don't recalc similar atomic terms 2015-10-12 16:13:55 -04:00
Scott Sanderson f82a01841b MAINT: Rename ALL the things.
zipline.modelling.* -> zipline.pipeline.*
zipline.data.ffc.loaders -> zipline.pipeline.loaders
tests/modelling -> tests/pipeline
2015-10-01 18:03:53 -04:00
llllllllllandjfkirk 9cd3707440 BLD: Adds sqlalchemy to reqs 2015-09-10 11:53:23 -04:00
llllllllllandjfkirk dd956116b7 ENH: sqlalchemy 2015-09-10 11:53:23 -04:00
Scott Sanderson 7f374f2ba3 MAINT: Bump bcolz version to latest. 2015-08-04 18:16:09 -04:00
Scott Sanderson ef4f642e62 ENH: Compute engine architecture for FFC API.
This patch lays the groundwork for a compute engine designed to
facilitate construction of factor-based universe screening and portfolio
allocation.  It contains:

A new module, `zipline.modelling`, containing entities that can be used
to express computations as dependency graphs.  Each node in such a graph
is an instance of the base `Term` class, defined in
`zipline.modelling.term`.  Dependency graphs are executed by instances
of `FFCEngine`, defined in `zipline.modelling.engine`.

A new module, `zipline.data.ffc`, containing loaders and dataset
definitions for inputs to the modelling API.

New `TradingAlgorithm` api methods: `add_factor`, and `add_filter`.
These methods can only be called from `initialize`, and are used to
inform the algorithm that each day it should compute the given terms.
Computed factor results are made available through a new attribute of
the `data` object in `before_trading_start` and `handle_data`.  Computed
filter results control which assets are available in the factor matrix
on each day.
2015-07-29 12:30:46 -04:00
Jonathan Kamens 21610053e6 MAINT: Upgrade PyPI versions of tornado, mistune, mock, patsy 2015-07-23 14:51:25 -04:00
Jonathan Kamens b2fc9da1c8 PyPI updates 2015-07-14 17:19:03 -04:00
Jonathan Kamens 7adba53f54 MAINT: pip<7.1.0 is incompatible with mock 1.1 2015-07-10 16:24:28 -04:00
Jonathan Kamens 50d557975d MAINT: Upgrade Cython to 0.22.1 2015-07-09 14:41:57 -04:00
Eddie Hebert 9bf4855b8c MAINT: Move ZiplineAPI context so that it always wraps main loop.
Move the responsibility of wrapping the main simulation loop in the
ZiplineAPI context from the algorithm modules generator setup to the
main trade simulation loop, so that different methods of invoking loop
do not need to duplicate how the context is set.

To make it easier for internal implementation of handle_data to
transition off of calling the ZiplineAPI every bar, to only invoking the
context once per simulation.
2015-07-01 10:58:47 -04:00
Jonathan Kamens 1097c37e3d MAINT: Peg pip version and fix incompatibility with pip 7.0.3
In d01e718373, we made a change for
compatibility with a change introduced in pip 7.0.0. Then the pip
maintainers went and reverted the change in pip 7.0.2, thereby
breaking our requirements file for the second time in ten days. This
change reverts the prior change so that we are once again compatible
with the current version of pip.

Also, to make it easier for people to avoid pip compatibility issues,
we're now specifying pip>=7.0.3 in etc/requirements.txt.
2015-06-03 14:50:56 -04:00
Jonathan Kamens 8188d9c975 MAINT: Upgrade pytz to 2015.4 2015-05-13 22:55:10 -04:00
Jonathan Kamens 9dab742725 MAINT: Upgrade pandas to 0.16.1 and requests to 2.7.0 2015-05-12 21:21:28 -04:00
Jonathan Kamens 63169961b7 MAINT: Upgrade Logbook to 0.9.1 2015-05-12 14:46:55 -04:00
Jonathan Kamens e5a93b6f7e MAINT: Upgrade requests to 2.6.2 2015-04-24 07:12:07 -04:00
Jonathan Kamens 5ea4886dc1 MAINT: Upgrade requests to 2.6.1 2015-04-23 10:56:54 -04:00
Jonathan Kamens 80a704ff80 MAINT: Upgrade python-dateutil to 2.4.2 2015-04-02 20:16:36 -04:00
John Ricklefs b6b5275e67 MAINT: Downgrade Logbook to 0.6.0 2015-03-31 14:17:13 -04:00
Jonathan Kamens 3b56a62660 MAINT: PyPI package updates, incl. pandas 0.16.0 2015-03-24 05:04:40 -04:00
Jonathan Kamens d109e81d3b MAINT: Update a bunch of PyPI package versions 2015-03-19 17:21:25 -04:00
John RicklefsandJonathan Kamens 935579fc28 MAINT: Upgrade Pandas to 0.15.2 2015-03-19 17:21:25 -04:00