-
Notifications
You must be signed in to change notification settings - Fork 55
Contribution Requests
We are welcoming contributions from the community. Here is a list of topics, ideas, and projects where we could use your help!
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.
- TrueFX data feed, as done by this R package: http://cran.r-project.org/web/packages/TFX/index.html
- A Monte Carlo data source, to allow development of models that are immune to historical bias.
- HTTP and JSON, for the consumption of APIs
- stocktwits, http://stocktwits.com/
- estimize, http://www.estimize.com/
- recordedfuture, https://www.recordedfuture.com/
- Useful data sources like FRED that the R package quantmod provides that would be useful to have. Either use quantmod to pull down all non-equity data that you're missing and load into a db, or possibly port the code? http://www.quantmod.com/documentation/00Index.html#G
- Bitcoin data source: mtgox has a very sane js-library to retrieve prices. Several python wrappers exist:
- Winsorisation of data, to filter out extreme and assumed spurious data values. (#127)
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")
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!
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:
- Adding new slippage models or refining our existing slippage models. See: https://github.com/quantopian/zipline/blob/master/zipline/finance/slippage.py
- Adding new commission models. See: https://github.com/quantopian/zipline/blob/master/zipline/finance/commission.py
- Adding margin account costs for borrowing cash and securities (in shorting).
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.
- Example Algorithms
- A CLI harness for the library.
- Visualizations. (matplotlib, or other tools)