UNMAINTAINED: This project is no longer actively developed. If you are interested in taking over please send me a message.
Poloniex data bundle for zipline, the pythonic algorithmic trading library.
Just install the data bundle with pip:
pip install zipline-poloniex
and create a file $HOME/.zipline/extension.py
calling zipline's register function.
The create_bundle
function returns the necessary ingest function for register
.
Use the Pairs
record for common US-Dollar to crypto-currency pairs.
Alternatively, you can clone this repository and install with pip:
git clone https://github.com/FlorianWilhelm/zipline-poloniex.git cd zipline-poloniex pip install -e .
- Add following content to
$HOME/.zipline/extension.py
:
import pandas as pd
from zipline_poloniex import create_bundle, Pairs, register
# adjust the following lines to your needs
start_session = pd.Timestamp('2016-01-01', tz='utc')
end_session = pd.Timestamp('2016-12-31', tz='utc')
assets = [Pairs.usdt_eth]
register(
'poloniex',
create_bundle(
assets,
start_session,
end_session,
),
calendar_name='POLONIEX',
minutes_per_day=24*60,
start_session=start_session,
end_session=end_session
)
Ingest the data with:
zipline ingest -b poloniex
Create your trading algorithm, e.g.
my_algorithm.py
with:
import logging
from zipline.api import order, record, symbol
from zipline_poloniex.utils import setup_logging
__author__ = "Florian Wilhelm"
__copyright__ = "Florian Wilhelm"
__license__ = "new-bsd"
# setup logging and all
setup_logging(logging.INFO)
_logger = logging.getLogger(__name__)
_logger.info("Dummy agent loaded")
def initialize(context):
_logger.info("Initializing agent...")
# There seems no "nice" way to set the emission rate to minute
context.sim_params._emission_rate = 'minute'
def handle_data(context, data):
_logger.debug("Handling data...")
order(symbol('ETH'), 10)
record(ETH=data.current(symbol('ETH'), 'price'))
Run your algorithm in
my_algorithm.py
with:zipline run -f ./my_algorithm.py -s 2016-01-01 -e 2016-12-31 -o results.pickle --data-frequency minute -b poloniex
Analyze the performance by reading
results.pickle
with the help of Pandas.
This project has been set up using PyScaffold 2.5.7. For details and usage information on PyScaffold see http://pyscaffold.readthedocs.org/.