Skip to content

Contribution Requests

twiecki edited this page Apr 30, 2013 · 20 revisions

We are welcoming contributions from the community. Here is a list of topics, ideas, and projects where we could use your help!

Data Sources

Since there are many possible inputs into what affects the market, the library needs a better 'plugin' ecosystem for data sources. Check out our page on how to write a datasource.

Data Source Cleaning/Filtering

  • Winsorisation of data, to filter out extreme and assumed spurious data values. (#127)

Transforms

Zipline already has some transforms builtin, e.g. the MovingStandardDev transform. However, more transforms from the community are welcome!

  • Transforms that leverage ta-lib, http://www.ta-lib.org/ -- done by @jlowin!
  • standard deviation of the log returns
  • modify rolling transforms (mavg, stddev, etc) to allow window to be specified in the number of bars, in addition to the number of trading days. Maybe something like mavg(3, units="bars|trading_days")

Risk Analysis

All of our risk analysis happens in this module: https://github.com/quantopian/zipline/blob/master/zipline/finance/risk.py

We would love to see more measures added to the risk output. For example:

  • Add Sortino Ratio -- done by @rday!
  • Add Information Ratio -- done by @rday!

Modeling

During simulation we need to model certain market behaviors. Currently, we model:

  • slippage, by which we mean the difference between the price when you ordered and the actual price used to fill of your order.
  • commissions, by which we mean the cost per share or per trade for execution. This is broker specific, and so models are parameterized.

We would love to have contributions for:

Order Management

Algorithms need to choose when to buy/sell and in what quantity. In addition, the algorithm needs to manage working into and out of positions. These problems are fairly distinct from generating signals to buy or sell, and are typically called "Order Management". Currently, zipline provides no specific utilities for order management, so we would love to have contributions that establish common methods. Here are a few examples:

  • place orders in cash amounts, rather than share counts. a utility method would convert using the current price.
  • place orders as a percent of available capital. For example: 1.0 (fully invested), 0.25 (quarter of available capital), etc.
  • place orders with the stipulation that they be filled at the Volume Weighted Moving Average Price (VWAP).
  • place orders with a target position size, and a time horizon to be filled.

Misc

  • Example Algorithms
  • A CLI harness for the library.
  • Visualizations. (matplotlib, or other tools)